Show a cover letter.

GET /api/covers/250/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 250,
    "url": "http://patches.dpdk.org/api/covers/250/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20231011133357.111058-1-bruce.richardson@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20231011133357.111058-1-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231011133357.111058-1-bruce.richardson@intel.com",
    "date": "2023-10-11T13:33:52",
    "name": "[v3,0/5] document and simplify use of cmdline",
    "submitter": {
        "id": 20,
        "url": "http://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20231011133357.111058-1-bruce.richardson@intel.com/mbox/",
    "series": [
        {
            "id": 29820,
            "url": "http://patches.dpdk.org/api/series/29820/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=29820",
            "date": "2023-10-11T13:33:52",
            "name": "document and simplify use of cmdline",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/29820/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/250/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 44B9742361;\n\tWed, 11 Oct 2023 15:34:08 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 16342402CD;\n\tWed, 11 Oct 2023 15:34:08 +0200 (CEST)",
            "from mgamail.intel.com (mgamail.intel.com [192.55.52.136])\n by mails.dpdk.org (Postfix) with ESMTP id 29767402AE\n for <dev@dpdk.org>; Wed, 11 Oct 2023 15:34:06 +0200 (CEST)",
            "from fmsmga006.fm.intel.com ([10.253.24.20])\n by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 11 Oct 2023 06:34:05 -0700",
            "from unknown (HELO silpixa00401385.ir.intel.com) ([10.237.214.46])\n by fmsmga006.fm.intel.com with ESMTP; 11 Oct 2023 06:34:02 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1697031246; x=1728567246;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=Oq8AHkBk/HladIgy+DmURNXeWX3KSv3Dri525kBuc4s=;\n b=d0J8Ha5MS6w2qzZGUFNzBAgnyNjhSfT83Zr/+hgALAPNXf9LZDdWhDnU\n FY7mbxdh4WNYVKgDOZJtsrCD8Pvm4utfpcGWtUv3PoMkdcLlfLFOivRji\n phBsR9y/qTz0AORoVWU6MIZdRzwEvOL/zsGHGdwap7eHrfh0QffK3rs3R\n 9b3QcoB0r3owYTVwo5Yxm6ckcPhlfQ7L5h7dlgqH+hGWvDVcvVd7HtmAR\n phFUrtWJuLB1dMbH9cW14PwUpjjd2DBZ9gfekfjy6K/RQFHE59NiD8F+8\n +awD8wh+SYVwt5ZxJ5PPbEBd0x5nKVDzsNO3+uf9Z4bDasCakxv8juoeX w==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10860\"; a=\"364025701\"",
            "E=Sophos;i=\"6.03,216,1694761200\"; d=\"scan'208\";a=\"364025701\"",
            "E=McAfee;i=\"6600,9927,10860\"; a=\"1001111859\"",
            "E=Sophos;i=\"6.03,216,1694761200\"; d=\"scan'208\";a=\"1001111859\""
        ],
        "X-ExtLoop1": "1",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "Bruce Richardson <bruce.richardson@intel.com>",
        "Subject": "[PATCH v3 0/5] document and simplify use of cmdline",
        "Date": "Wed, 11 Oct 2023 14:33:52 +0100",
        "Message-Id": "<20231011133357.111058-1-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 2.39.2",
        "In-Reply-To": "<20230802170052.955323-1-bruce.richardson@intel.com>",
        "References": "<20230802170052.955323-1-bruce.richardson@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "The DPDK commandline library is widely used by apps and examples within\nDPDK, but it is not documented in our programmers guide and it requires\na lot of boilerplate code definitions in order to used. We can improve\nthis situation by creating a simple python script to automatically\ngenerate the boilerplate from a list of commands.\n\nThis patchset contains a new documentation chapter on cmdline library,\ngoing through step-by-step how to add commands and create the necessary\ntoken lists and parse contexts.\n\nFollowing that initial doc patch, the set then contains a\nboilerplate-generating script, as well as a set of three patches showing\nits use, by converting three examples to use the script instead of\nhaving the hard-coded boilerplate. Once the script is used, adding a new\ncommand becomes as simple as adding the desired command to the .list\nfile, and then writing the required function which will be called for\nthat command. No other boilerplate coding is necessary.\n\nScript obviously does not cover the full range of capabilities of the\ncommandline lib, but does cover the most used parts. The code-saving to\neach of the examples by auto-generating the boilerplate is significant,\nand probably more examples with commandlines can be converted over in\nfuture.\n\nThe \"cmdline\" example itself, is not converted over, as it should\nprobably remain as a simple example of direct library use without the\nscript.\n\nV3:\n* Added lots of documentation\n* Added support for help text for each command\n* Cleaned up script a little so it passes pycodestyle and most flake8\n  checks, when line-length is set to max 100.\n* Removed RFC tag, as I consider this patchset stable enough for\n  consideration in a release.\n\nV2-RFC:\n* Add support for IP addresses in commands\n* Move to buildtools directory and make installable\n* Convert 3 examples to use script, and eliminate their boilerplate\n\nBruce Richardson (5):\n  doc/prog_guide: new chapter on cmdline library\n  buildtools: script to generate cmdline boilerplate\n  examples/simple_mp: auto-generate cmdline boilerplate\n  examples/hotplug_mp: auto-generate cmdline boilerplate\n  examples/bond: auto-generate cmdline boilerplate\n\n app/test/commands.c                           |   2 +\n buildtools/dpdk-cmdline-gen.py                | 167 +++++++\n buildtools/meson.build                        |   7 +\n doc/guides/prog_guide/cmdline.rst             | 466 ++++++++++++++++++\n doc/guides/prog_guide/index.rst               |   1 +\n examples/bond/Makefile                        |  12 +-\n examples/bond/commands.list                   |   6 +\n examples/bond/main.c                          | 161 +-----\n examples/bond/main.h                          |  10 -\n examples/bond/meson.build                     |   8 +\n examples/multi_process/hotplug_mp/Makefile    |  12 +-\n examples/multi_process/hotplug_mp/commands.c  | 147 +-----\n examples/multi_process/hotplug_mp/commands.h  |  10 -\n .../multi_process/hotplug_mp/commands.list    |   5 +\n examples/multi_process/hotplug_mp/meson.build |   9 +\n examples/multi_process/simple_mp/Makefile     |  12 +-\n examples/multi_process/simple_mp/meson.build  |   9 +\n .../multi_process/simple_mp/mp_commands.c     | 106 +---\n .../multi_process/simple_mp/mp_commands.h     |  14 -\n .../multi_process/simple_mp/mp_commands.list  |   3 +\n 20 files changed, 745 insertions(+), 422 deletions(-)\n create mode 100755 buildtools/dpdk-cmdline-gen.py\n create mode 100644 doc/guides/prog_guide/cmdline.rst\n create mode 100644 examples/bond/commands.list\n delete mode 100644 examples/bond/main.h\n delete mode 100644 examples/multi_process/hotplug_mp/commands.h\n create mode 100644 examples/multi_process/hotplug_mp/commands.list\n delete mode 100644 examples/multi_process/simple_mp/mp_commands.h\n create mode 100644 examples/multi_process/simple_mp/mp_commands.list\n\n--\n2.39.2"
}