Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/contains-io/rcli
Rapidly create full-featured command line interfaces with help, subcommand dispatch, and validation.
https://github.com/contains-io/rcli
autocomplete bash command-line command-line-tool docopt pep484 python python2 python3 type-hints types zsh
Last synced: 2 days ago
JSON representation
Rapidly create full-featured command line interfaces with help, subcommand dispatch, and validation.
- Host: GitHub
- URL: https://github.com/contains-io/rcli
- Owner: contains-io
- License: mit
- Archived: true
- Created: 2016-12-28T07:17:50.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2020-05-25T02:40:29.000Z (over 4 years ago)
- Last Synced: 2024-04-26T00:25:46.973Z (9 months ago)
- Topics: autocomplete, bash, command-line, command-line-tool, docopt, pep484, python, python2, python3, type-hints, types, zsh
- Language: Python
- Homepage:
- Size: 185 KB
- Stars: 12
- Watchers: 4
- Forks: 5
- Open Issues: 6
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
rcli
====|PyPI| |Python Versions| |Build Status| |Coverage Status| |Code Quality|
*Rapidly create full-featured command line interfaces with help, subcommand
dispatch, and validation.*``rcli`` uses docopt_ to give you the control over your usage messages that you
want, but adds functionality such as automatic subcommand dispatching, usage
string wrapping, internationalization, and parameter validation.Installation
------------Install it using pip:
::
pip install rcli
Features
--------- Automatic creation of console scripts and entry points based on usage
strings.
- Argument parsing based on usage string.
- Usage string wrapping.
- Command line arguments are normalized into python function parameters.
- Validation of command line arguments using `PEP 484`_ type hints.
- Logging with multiple levels and crash log generation.
- Color coded logging based on log level.
- Extensible subcommand generation based on entry point groups.Upcoming Features
------------------ Automatic generation of bash and zsh autocompletion scripts.
- Internationalization of usage strings.Basic Usage
-----------To use ``rcli``, add ``rcli`` to your ``setup_requires`` argument in your
*setup.py* and set the ``autodetect_commands`` parameter to ``True``... code-block:: python
from setuptools import setup
setup(
...,
install_requires=['rcli'],
setup_requires=['rcli'],
autodetect_commands=True,
...,
)In your code, create a function with a usage string as its docstring and type
hint annotations for validation... code-block:: python
def repeat(message: str, num_times: int):
"""Usage: repeat [--num-times ]Arguments:
message A message to print to the console.Options:
-n, --num-times The number of times to print the message [default: 1].
"""
for i in range(num_times):
print(message)Once your package is installed, a new console script *repeat* will be
automatically generated that will validate and normalize your parameters and
call your function.Subcommand Dispatch
-------------------To generate a git-style command line interface with subcommand dispatching, you
only need to create your subcommand functions and your primary command will
be automatically generated for you... code-block:: python
def roar():
"""Usage: cat-sounds roar"""
print('ROAR!')def meow():
"""Usage: cat-sounds meow"""
print('Meow!')This automatically generates the command *cat-sounds* with the following help
message::Usage:
cat-sounds [--help] [--version] [--log-level | --debug | --verbose]
[...]Options:
-h, --help Display this help message and exit.
-V, --version Display the version and exit.
-d, --debug Set the log level to DEBUG.
-v, --verbose Set the log level to INFO.
--log-level Set the log level to one of DEBUG, INFO, WARN, or ERROR.'cat-sounds help -a' lists all available subcommands.
See 'cat-sounds help ' for more information on a specific command... _PEP 484: https://www.python.org/dev/peps/pep-0484/
.. _docopt: http://docopt.org/.. |Build Status| image:: https://travis-ci.org/contains-io/rcli.svg?branch=master
:target: https://travis-ci.org/contains-io/rcli
.. |Coverage Status| image:: https://coveralls.io/repos/github/contains-io/rcli/badge.svg?branch=master
:target: https://coveralls.io/github/contains-io/rcli?branch=master
.. |PyPI| image:: https://img.shields.io/pypi/v/rcli.svg
:target: https://pypi.python.org/pypi/rcli/
.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/rcli.svg
:target: https://pypi.python.org/pypi/rcli/
.. |Code Quality| image:: https://api.codacy.com/project/badge/Grade/61ee45c79340430793ce074748f69686
:target: https://www.codacy.com/app/contains-io/rcli?utm_source=github.com&utm_medium=referral&utm_content=contains-io/rcli&utm_campaign=Badge_Grade