bou is a YAML-driven build or task runner
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Raoul Snyman e3b2d5d82c
Release version 0.0.3
2 years ago
.gitignore Initial commit 2 years ago
LICENSE Initial commit 2 years ago
README.rst Modify how the stages and steps work 2 years ago Fix a missing dependency, and fix an issue when a Popen object has no return code 2 years ago
pyproject.toml Initial commit 2 years ago
setup.cfg Release version 0.0.3 2 years ago Initial commit 2 years ago



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


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:

  - build
  - test
    stage: build
      - make
    stage: test
      - 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.

  - build
  - PYTHON=python3
    stage: build
      - SOURCE=$BASE_DIR/src
      - $PYTHON $SOURCE/ build

Stages and Steps

If no steps or stages are specified, by default bou will attempt to run the following, in order:

  1. All of the stages in the stages section of the task configuration
  2. If no stages are specified in the task config, all of the stages discovered in the steps
  3. If no stages are found, all of the steps

Source Code

The source code to bou is available on my personal Git server:

Copyright (c) 2021 Raoul Snyman