Create a powerful and efficient CLI application using simple and user-friendly yaml config
Project description
Argyaml
Argyaml is a small module for creating powerful and scalable CLI applications based on a simple and user-friendly yaml configuration file.
Motivation
Argyaml is built over the argparse module, which is a part of python standard library starting python 3.2. While it works well for tiny projects that need to quickly access a few arguments and provide automatically generated help and usage messages for user, it gets very complicated and painful when it comes to large projects or your application grows in complexity.
Features
- Independent specification of CLI commands and arguments.
- No boilerplate code.
- Ability to set default options for commands, groups, and arguments.
- Automatic and optimized invocation of command handlers.
- Handler template files generator.
Install
# pip
pip install argyaml
# poetry
poetry add argyaml
Getting started
# cli-config.yaml
prog: todo
description: My beautiful todo app
next:
- command: new
next:
- command: task
description: Create a new task
next:
- argument: [name]
help: the name of task
- command: list
next:
- argument: [-t, --task]
help: display tasks only
action: 'store_true'
from argyaml import BaseHandler
base = BaseHandler()
base.args # <-- parsed and ready-to-use arguments
Learn more about config file.
Using Handlers
Generate template files using argyaml generate:
# pip
python -m argyaml generate
# poetry
poetry run argyaml generate
This will generate the following files:
handlers/
_new_task.py
_list.py
Now, whenever new task command is called, the corresponding handler init function will be invoked with all additional aruments stored in the self.args object.
# _new_task.py
from argyaml import BaseHandler
class Handler(BaseHandler.meta()):
def __init__(self):
print(f"Successfully created task '{self.args['name']}'!")
Modify the main file to run the base handler:
from argyaml import BaseHandler
base = BaseHandler()
base.run()
Learn more about BaseHandler and argyaml generator.
Contributing
Feel free to open issues. Pull requests are welcome.
License
This project is licensed under the MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file argyaml-0.1.2.tar.gz.
File metadata
- Download URL: argyaml-0.1.2.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.10.6 Linux/5.15.0-58-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b219d47d4f9cfb55dc5c1dac0cff2eaad3b6455f165ef5fec041ac316117a34c
|
|
| MD5 |
d33414199337b7b04be9b5b8fa6e69ad
|
|
| BLAKE2b-256 |
f48c008379853e987d40ea26b65aef941ccd1adbd6e6eef83d6472b271f3b3f2
|
File details
Details for the file argyaml-0.1.2-py3-none-any.whl.
File metadata
- Download URL: argyaml-0.1.2-py3-none-any.whl
- Upload date:
- Size: 6.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.10.6 Linux/5.15.0-58-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
784ca84743436af05affbad1cd207ad944901783c911dc87cb29dc28a7c2906b
|
|
| MD5 |
e494395f013972652c93dee4d5b83db5
|
|
| BLAKE2b-256 |
788c1b274894e20e9d35fc5e5e40da3ef3ac1c06c496ebda5097176cda1e39a4
|