Build robust command line interface fast.
Project description
nutcli - cli in a nutshell
The Python nutcli
package allows you to easily create robust command-based
command line interface that can combine the best of the two worlds of
python
and shell
.
It also provides several useful classes and decorators that can help you improve the user experience by producing nicely formatted output and allowing dry runs for operations with side effects.
Links
- Project source code: https://github.com/pbrezina/python-nutcli
- Project documentation: https://nutcli.readthedocs.io
- Project at PyPi: https://pypi.org/project/nutcli
Installation
pip3 install nutcli
Example instead of thousands words
Bellow is the very basic example to get the idea of what this package does and how its used.
class HelloActor(Actor):
def setup_parser(self, parser):
parser.add_argument('--hello', action='store', type=str)
def __call__(self, hello):
self.info(hello)
return 0
class Program:
def main(self, argv):
# Create argument parser.
parser = argparse.ArgumentParser()
CommandParser('Example Commands')([
Command('hello', 'Print hello message', HelloActor()),
]).setup_parser(parser)
# Create the runner object.
runner = Runner('my-cli', parser).setup_parser()
# Parse arguments - the runner internally process its own arguments
# that were setup by previous call to `setup_parser()`.
args = runner.parse_args(argv)
# You can handle your own global arguments here.
# Now we setup the default logger - it produces output to stdout
# and stderr.
runner.default_logger()
# And finally, we execute the requested command and return its exit
# code.
return runner.execute(args)
if __name__ == "__main__":
program = Program()
sys.exit(program.main(sys.argv[1:]))
$ python3 ./main.py hello --hello world
[my-cli] world
$ python3 ./main.py --help
usage: main.py [-h] [--log-execution] [--dry-run] [--no-colors] COMMANDS ...
optional arguments:
-h, --help show this help message and exit
--log-execution Log execution of operations that supports it.
--dry-run Do not execute operations with side effects. Only log what
would be done.
--no-colors Do not execute operations with side effects. Only log what
would be done.
Example Commands:
COMMANDS
hello Print hello message
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
nutcli-1.2.tar.gz
(33.4 kB
view details)
Built Distribution
nutcli-1.2-py3-none-any.whl
(36.2 kB
view details)
File details
Details for the file nutcli-1.2.tar.gz
.
File metadata
- Download URL: nutcli-1.2.tar.gz
- Upload date:
- Size: 33.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec48e079bd887e8281b10c7de6de12b82101434b3d393cf26dac3a2e38b97d8f |
|
MD5 | 6e7a145b5ae97b263b2b8fe3cdd1db5a |
|
BLAKE2b-256 | dfd8f08c65abc2f34ded756fef563396bc2287d3fc4040098dbfc5f4989d6f6c |
File details
Details for the file nutcli-1.2-py3-none-any.whl
.
File metadata
- Download URL: nutcli-1.2-py3-none-any.whl
- Upload date:
- Size: 36.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6df72677c0d2a30873ee3937202224d8a7fd73df41e7e30c115a87a922aefcb0 |
|
MD5 | 12275eecd373a7755cb32fad035db459 |
|
BLAKE2b-256 | dec0e5f6c30c5b2c7ed8c9331932cdac2ad88c80ec1ea32687aa4c68332a09f1 |