foga

Documentation

foga is a Python package and CLI for developers maintaining Python packages with C or C++ bindings. These projects often accumulate a separate tool or script for each workflow: one for Python packaging, one for native builds, one for tests, another for documentation, and more scattered across Make targets, CI snippets, shell scripts, and README notes.

foga centralizes those workflows in a single foga.yml file and exposes them through one command-line interface. Built-in backends cover common tools for builds, tests, documentation, installs, deploys, and cleanup, while hooks and scripts remain available for project-specific behavior.

What foga does

Use foga to define and run the repository workflows that usually spread across local scripts, CI jobs, and project notes:

  • build Python packages and C++ artifacts from one config file

  • run Python and C++ test workflows through one CLI

  • generate documentation with configured docs backends

  • install local packages and external dependencies through one CLI

  • run format, lint, deploy, and cleanup workflows from the same config

  • switch environment-specific settings with named profiles

  • inspect the resolved config before running anything

  • keep escape hatches explicit through structured hooks

Start here

Platforms and limitations

foga itself is a Python CLI, but repository workflows depend on the tools and package managers available on the machine where they run.

  • Linux and macOS are the primary documented platforms

  • system package backends such as apt-get, brew, and yum are platform-specific and depend on the tools available on the host machine

  • Windows is not currently documented or covered by CI in this repository

Another intentional limitation is scope: foga is meant to describe stable repository workflows, not to replace every ad-hoc bootstrap or infrastructure script you may have.