#build-system #template #continuous-integration #generate #configuration #projects #docker

build ci-generate

Generate a new project for some build systems with the use of templates

1 unstable release

0.5.3 Nov 9, 2023

#248 in Build Utils

26 downloads per month

MIT license

922 lines


Actions Status LICENSE dependency status

This tool generates either new projects for some build systems or configuration files for some Continuous Integration with the use of templates.

Templates define the layout for a project and allow developers to insert data at runtime.

Each template contains all files necessary to build a project with a build system, in addition to Continuous Integration and Docker files used to run tests and implement further checks.

Supported build systems

Build system Languages Project template CI style checks CI build CI test CI coverage upload CI static analysis CI dynamic analisys CI license checks
meson C / C++ provided ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
poetry Python provided ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
maven Java provided ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
cargo Rust offloaded ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
yarn Javascript / Typescript offloaded ✔️ ✔️

✅: Not necessary for the considered language


To see the list of supported commands, run: ci-generate --help

Each command has an optional argument to define a license and an optional argument to override the project name instead of using the last component of the project-path. The default value for the license argument is MIT.


$ ci-generate cargo [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-path


$ ci-generate maven [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-group project-path


$ ci-generate meson [--kind meson-project-kind] [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-path

Admitted values for the kind argument:

  • c
  • c++


$ ci-generate poetry [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-path


$ ci-generate yarn [--license LICENSE --name NAME --branch GITHUB_BRANCH] project-path


It is possible to save a config.toml in ${XDG_CONFIG_HOME}/ci-generate (Usually ~/.config/ci-generate) with overrides for all the default and optional values, e.g:

license = "BSD-3-Clause"

kind = "c++"

Will override the default license and meson.kind configuration items and it would be equivalent to call:

$ ci-generate meson -k c++ -l BSD-3-Clause

The cli arguments take priority over the built-in defaults and the config.toml overrides so

$ ci-generate meson -l LGPL-2.1

Would take the kind = c++ from the config.toml and LGPL-2.1 from the command line.


Released under the MIT License.


~218K SLoC