.gitignore | ||
bou.py | ||
LICENSE | ||
pyproject.toml | ||
README.rst | ||
setup.cfg | ||
setup.py |
bou
Bou (pronounced "bow") is a simple builder or task runner which uses a YAML file for task configuration.
Bou uses the concept of stages and steps. A stage is a sets of steps, and a step is a set of commands to run. A stage can contain many steps, but a step can only belong to a single stage.
"Bou" is Afrikaans for "build".
Installation
Install bou with pip:
$ pip install bou
Running bou
To run bou, simply run the command. The build file will be automatically detected.
$ bou
To specify a build configuration file, use the -f
option.
$ bou -f /path/to/build.yaml
To specify a stage or a step to run, just add it to the command. Stages take priority over steps, so if you have a stage and a step with the same name, the stage will be run.
$ bou build
$ bou test
Task Configuration
When run without any parameters, bou will search for a file named
bou.yaml
, bou.yml
, build.yaml
or
build.yml
Here's a basic example:
stages:
- build
- test
steps:
build:
stage: build
script:
- make
test:
stage: test
script:
- make test
Environment Variables
Bou also supports setting environment variables, both at a global
level, as well as at a step level. As a convenience, bou sets up an
initial environment variable named BASE_DIR
which is the
directory the build file is in.
Environment variables defined at a global level are set first when a step is run, and then the step-level environment variables are set.
stages:
- build
environment:
- PYTHON=python3
steps:
build:
stage: build
environment:
- SOURCE=$BASE_DIR/src
script:
- $PYTHON $SOURCE/setup.py build
Stages and Steps
If no steps or stages are specified, by default bou will attempt to run the following, in order:
- All of the stages in the
stages
section of the task configuration- If no stages are specified in the task config, all of the stages discovered in the steps
- If no stages are found, all of the steps
Source Code
The source code to bou is available on my personal Git server: https://git.snyman.info/raoul/bou
Copyright (c) 2021 Raoul Snyman