Task executor - balance between Makefile and Gradle.
Project description
Task executor - balance between Makefile and Gradle.
THIS PROJECT IS A WORK IN PROGRESS.
Goals: - Define tasks as simple as in Makefile - Reuse code as simple as in Gradle (using extensions that provides tasks. Extensions are installable from PIP) - Simple configuration in Python
Rules
No hooks eg. task.executeAfter(otherTask), no complex dependencies
No dynamic tasks names eg. by turning on Publish component it should not create tasks eg. :publishIWAToDockerRegistry (where IWA is the project name)
Usage in shell
Tasks are prefixed always with “:”. Each task can handle it’s own arguments.
Tasks arguments usage
makefile.py
from rkd.syntax import TaskDeclaration, TaskAliasDeclaration
from rkd.standardlib.python import PublishTask
IMPORTS = [
TaskDeclaration(PublishTask())
]
TASKS = [
TaskAliasDeclaration(':my:test', [':py:publish', '--username=...', '--password=...'])
]
Example of calling same task twice, but with different input
Notes for this example: The “username” parameter is a default defined in makefile.py in this case.
$ rkd :my:test --password=first :my:test --password=second
>> Executing :py:publish
Publishing
{'username': '...', 'password': 'first'}
>> Executing :py:publish
Publishing
{'username': '...', 'password': 'second'}
Example of calling same task twice, with no extra arguments
In this example the argument values “…” are taken from makefile.py
$ rkd :my:test :my:test
>> Executing :py:publish
Publishing
{'username': '...', 'password': '...'}
>> Executing :py:publish
Publishing
{'username': '...', 'password': '...'}
Example of –help per command:
$ rkd :my:test :my:test --help
usage: :py:publish [-h] [--username USERNAME] [--password PASSWORD]
optional arguments:
-h, --help show this help message and exit
--username USERNAME Username
--password PASSWORD Password
Paths and inheritance
RKD by default search for .rkd directory in current execution directory - ./.rkd.
The search order is following (from lower to higher load priority):
RKD’s internals (we provide a standard tasks like :tasks, :init, :sh, :exec and more)
/usr/lib/rkd
User’s home ~/.rkd
Current directory ./.rkd
RKD_PATH
Custom path defined via environment variable
RKD_PATH allows to define multiple paths that would be considered in priority.
RKD_PATH=”/some/path:/some/other/path:/home/user/riotkit/.rkd-second”
How the makefile.py are loaded?
Each makefile.py is loaded in order, next makefile.py can override tasks of previous. That’s why we at first load internals, then your tasks.
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
Built Distribution
Hashes for rkd-0.1.1.dev16-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1899a9721df7e89bfc938e05c7b4ad8fe4341c185b4777ca217ab5f52398aaff |
|
MD5 | 412f2023bf8e61c903107207b5f3acdf |
|
BLAKE2b-256 | 487cc593175de63d147f463bb9de9c7a069058e6f3ea84d68ce2b6a1596a7bff |