> On Mar 10, 2017, at 10:06 AM, Stephen Hemminger <step...@networkplumber.org> 
> wrote:
> 
> On Fri, 10 Mar 2017 15:25:31 +0000
> "Wiles, Keith" <keith.wi...@intel.com> wrote:
> 
>> I would like to request for comments on a new CLI design and get any 
>> feedback. I have attached the cli.rst text, which is still a work in 
>> progress for you review.
>> 
>> I have also ported the CLI to a version of Pktgen on the ‘dev’ branch of the 
>> repo in DPDK.org.
>> 
>> http://dpdk.org/browse/apps/pktgen-dpdk/refs/?h=dev
>> 
>> I would like to submit the CLI library to be used in DPDK, if that seems 
>> reasonable to everyone. I need more testing of the API and Pktgen, but I 
>> feel it has a simpler design, easier to understand and hopefully make it 
>> easier for developers to add commands.
>> 
>> As an example I quickly converted over testpmd from CMDLINE to CLI (I just 
>> add a -I option to select CLI instead) and reduced the test-pmd/cmdline.c 
>> file from 12.6K lines to about 4.5K lines. I did not fully test the code, 
>> but the ones I did test seem to work.
>> 
>> I do not expect DPDK to convert to the new CLI only if it makes sense and I 
>> am not suggesting to replace CMDLINE library.
>> 
>> If you play with the new CLI in pktgen and see any problems or want to 
>> suggest new features or changes please let me know.
>> 
>> Comments on the cli.rst text is also welcome, but the cli.rst is not 
>> complete. I think this file needs to be broken into two one to explain the 
>> example and another to explain CLI internals.
>> 
> 
> It would be great if all DPDK examples used a similar architecture. And 
> having a common
> infrastructure would help.
> 
> But not sure it needs to be special. Why should this be DPDK specific?
> What you are building really ends up being an application
> framework at some point. Surely, there are lots of others already in open 
> source.
> 
> Heck even VPP has its own CLI inside.

I have been looking for one for years and never found one that met my needs of 
easy to use and easy to understand. If you can find a better one then please 
let me know.

This code does use some DPDK APIs but they can be removed to make it standalone 
and the first version I did was standalone. Some of the ones I found were 
similar to cmdline and some took it a step farther by trying to do everything 
one would ever need in a CLI. Those are way too big and difficult to use, then 
you have the ones that are barely a step above readline or just writing you 
own. The cmdline interface falls closer to the trying to do everything for you, 
by converting strings into values with structures/macros difficult to 
understand at a glance. IMHO this one is simple and easy to understand.

But in truth the cmdline interface in DPDK is difficult to use and to write 
code for, takes way to many lines of code to make a simple command. The current 
Cmdline is  also not dynamic, which makes it difficult to add features on the 
fly.

All of the commands are at the same level and using a directory structure 
allows the developer to use what directory path he takes to denote a context 
for the command. As the example of converting test-pmd to use CLI the number of 
lines dropped from 12.6K to 4.5K lines. The cmdline code is also not consider 
to be production quality (from the docs) and I would like to fix that problem 
for DPDK.

Regards,
Keith

Reply via email to