An analysis of several Python CLI libraries to detect their usability in various cases.
Usecase
We want to design a command with following usage based on compilation of several existing commands:
Usage: testcli [options] [--choices=VALUE]... [--params=...] create <label> testcli [options] [--choices=VALUE]... [--params=...] drop <label> testcli -h | --help testcli --version Options: -h, --help Show this help message and exit. --version Show program's version number and exit. --config=FILE Set config file. --string=STRING Set custom string. --number=NUMBER Set custom number. --params=KEY=VALUE Set custom parameters. --today=DATE Set custom today [default: today]. --choices=VALUE Set custom choices [default: all]. Available options: 'all', 'foo', 'bar', 'baz'. -n, --dry-run Don't actually do anything. -v,--verbosity=LEVEL Set verbosity level in range 0 to 3 [default: 1].
Changes in the FRED system architecture
Since its first release, FRED has come a long way and has changed significantly. From a relatively small original project, over time it has grown to include modules related to the registry and the time has come for it to get a more significant reconstruction. There have also been shifts in the way the interface is designed, in the project management, as well as technological changes. The original method with a distinctive interface for each client gave way to more general and smaller interfaces, which each client can combine according to their needs. Similarly, we are moving towards modular source code architecture and last but not least, we are replacing Corba technology with gRPC. Another significant disadvantage for the large system is the narrow and poorly defined interdependence of individual parts, which slows down its response to new queries.