Thank you very much for your interest in contributing with devcli. I'll try to outline some guidance if you want to extend and improve this tool.
devcli.core- dedicated only to the basic cli setup and executiondevcli.config- dedicated to the config subsystem, parsing and accessdevcli.framework- dedicated to things that enable the creation of subcommandsdevcli.utils- utility functions that can be used internally or imported to subcommandsdevcli.commands- out of the box commands, these should only depend ondevcli.utilsanddevcli.framework
- Simplicity at core: As simple as possible at its core. Its power comes for the ability to extend it. As more complex the core gets, the harder it will be to extend it.
- Extensibility: Easy to extend. Given the simplicity of its core, it should be easy to add new commands.
- Discoverability: Commands should be easy to discover and understand. The paradigm of commands, subcommands, and options should be leveraged to explain the target system of the command.
- Proximity: Information on how to work with a system should be close to the system itself. That why '.devcli' is he mechanics of extending, each system automation can define their own commands.
- Interfacing: devcli serves as an interface to other systems. As such, it should provide the features necessary to help create and diagnose these interfaces, rather than functioning as the system itself.
- Disposability: Removing it should not be detrimental to the system itself. Under any circumstance, the system which devcli interfaces with should not rely on it to work. This tool is meant to help developers, not to be the part of the system it automates.