ClickYaml reads a `.yaml` file and creates click Commands out of it.
Project description
clickYaml
ClickYaml reads a .yaml file and creates click Commands out of it.
Free software: MIT license
Documentation: https://clickyaml.readthedocs.io.
Installation
Stable release
To install clickYaml, run this command in your terminal:
$ pip install clickyaml
This is the preferred method to install clickYaml, as it will always install the most recent stable release.
If you don’t have pip installed, this Python installation guide can guide you through the process.
From sources
The sources for clickYaml can be downloaded from the Github repo.
You can either clone the public repository:
$ git clone git://github.com/vandyG/clickyaml
Or download the tarball:
$ curl -OJL https://github.com/vandyG/clickyaml/tarball/master
Once you have a copy of the source, you can install it with:
$ python setup.py install
Usage
Input yaml file example:
simplecommand:
script: "/home/user/scripts/simplecommand.bash"
params:
- !arg
param_decls: [argument]
- !opt
param_decls: ["--option"]
complexcommand:
script: "/home/user/scripts/complexcommand.bash"
help: "Complex Command"
params:
- !arg
param_decls: [id]
- !arg
param_decls: [type]
- !arg
param_decls: [category]
type: !obj
class: click.Choice
choices: ["1","2","3","ALL"]
case_sensitive: False
- !opt
param_decls: ["--email","-E"]
multiple: True
envvar: MY_EMAIL
help: "Specify the mailing list with this option"
Note: There are certain rules on the structure of the yaml file:
Each command block needs to have blocks for each parameter of the command that you define. To know the available parameters refer to the click documentation
Apart from parameters to click.Command a script block can also be used. Script represents a script that you want to link with your command.
There are three types of tags that can be used in the yaml file: !obj, !arg and !opt
!obj can be used to create custom objects
!arg can be used to create click.Argument objects
!opt can be used to create click.Option objects
The clickyaml module takes in the yaml file and creates Commander() objects for each command. A Commander() object houses the command, scripts associated with the command and the callback.
There are two ways to get the commands from yaml data as click.Command objects:
Using get_command()
Using get_commanders()
Get specific commands from the yaml file
from clickyaml import get_command, parse_yaml
parsed_yaml = parse_yaml(path=path_to_yaml)
# this command has a default callback that runs the script associated with the command
command_default = get_command(name="simplecommand",parsed_yaml=parsed_yaml,)
#this command has custom callback that prints the passed arguments
cstm_clbk = lambda **kwargs: print(kwargs)
command_custom = get_command(name="simplecommand",parsed_yaml=parsed_yaml,callback=cstm_clbk)
Get all the Commander objects yaml file in a dictionary
all the commands will be assigned the default callback
from clickyaml import get_commanders
commanders = get_commanders(yaml=yaml_data) # returns all the commands in a dictionary
simplecommand = commanders["simplecommand"].command
complexcommand = commanders["complexcommand"].command
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.0 (2023-02-03)
First release on PyPI.
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
File details
Details for the file clickyaml-2.1.0.tar.gz
.
File metadata
- Download URL: clickyaml-2.1.0.tar.gz
- Upload date:
- Size: 14.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e5fa825a09d81ccb129c89c7a4847fa0b74336a6c61c50db1c770f7f0458ce14 |
|
MD5 | a92b38febecfa9afd27309d268a4e474 |
|
BLAKE2b-256 | 6f84155b36759466e5a2351dfee245034b8b93c74eebe769402e652b31bed5e2 |
File details
Details for the file clickyaml-2.1.0-py2.py3-none-any.whl
.
File metadata
- Download URL: clickyaml-2.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c588a327bcc4e46023b91f90b46d81b9d3c67a9c3d1442a681ebfc57edb815cb |
|
MD5 | 2cc93df85c5f7a07ded84284ecc963c6 |
|
BLAKE2b-256 | 1236d0e415821a760f02c463a942eaa7fd7a4ec853c3b6fefa63d78e1712912f |