unfrustrating python CLI
Project description
Sometimes I just want to execute a python callback and pass args/kwargs on the CLI, and not have to define any custom CLI entry point of any sort, nor change any code, typically when automating stuff, cli2 unfrustrates me:
cli2 yourmodule.yourcallback somearg somekwarg=foo
Sometimes I just want to define a new command and expose all callables in a module and I can’t just do it with a one-liner. cli2 unfrustrates me again:
console_script = cli2.ConsoleScript(__doc__).add_module('mymodule')
# then i add console_script entrypoint as such: mycmd = mycmd.console_script
I also like when readonly commands are in green, writing commands in yellow and destructive commands in red, I find the commands list in the help output more readable, and directive for new users of the CLI:
@cli2.config(color=cli2.RED)
def challenge(dir):
'''The challenge command dares you to run it.'''
os.exec('rm -rf ' + dir)
Of course then there’s all this code I need to have coverage for and I’m still so lazy that I still don’t write most of my test code myself, so I throwed an autotest function in cli2 (“ala” dbunit with a personal touch) that I can use as such:
@pytest.mark.parametrize('name,command', [
('cli2', ''),
('help', 'help'),
('help_debug', 'help debug'),
# ... bunch of other commands
('debug', 'debug cli2.run to see=how -it --parses=me'),
])
def test_cli2(name, command):
cli2.autotest(
f'tests/{name}.txt',
'cli2 ' + command,
)
You should be able tho pip install cli2 and start using the cli2 command, or cli2.ConsoleScript to make your own commands.
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
File details
Details for the file cli2-1.0.11.dev3.tar.gz
.
File metadata
- Download URL: cli2-1.0.11.dev3.tar.gz
- Upload date:
- Size: 10.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85d8d7c6ff120eb5410b5ff90c231171866faf167841e9fa404b1cbada968d4d |
|
MD5 | 5fb8a2abf15c4372a98c29d8faa6f65e |
|
BLAKE2b-256 | 4ae87f67af8fe0837c3e65d2e2dae33bf049a7f092d158aaae913711cef06606 |