Skip to main content

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):

  1. RKD’s internals (we provide a standard tasks like :tasks, :init, :sh, :exec and more)

  2. /usr/lib/rkd

  3. User’s home ~/.rkd

  4. Current directory ./.rkd

  5. 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

rkd-0.1.1.dev18.tar.gz (204.2 kB view hashes)

Uploaded Source

Built Distribution

rkd-0.1.1.dev18-py3-none-any.whl (22.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page