Metadata-Version: 2.4
Name: spadix-cli
Version: 0.7.7
Summary: A friendly wrapper for colcon
Home-page: https://pronto.ai
Author: Serge Nikulin
Author-email: serge.nikulin@pronto.ai
Maintainer: Serge Nikulin
Maintainer-email: serge.nikulin@pronto.ai
Project-URL: Bug Tracker, https://github.com/Pronto-ai/spadix
Keywords: spadix-cli
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: setuptools
Requires-Dist: lark
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license-file
Dynamic: maintainer
Dynamic: maintainer-email
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Spadix, a friendly wrapper for `colcon`

Copyright (C) 2021-2024 SafeAI

Copyright (C) 2025 Pronto.AI

## Why?

Our company uses
[`colcon` (from collective construction build manager)](https://colcon.readthedocs.io/en/released/)
as our main build management tool for many years.

While we like this package, it has its problem areas, in our opinion, especially when used by
unexperienced engineers.

- Default build is not a merged one, and this disables Doxygen build
- It is allowed to run from any directory in the project tree, making the tree contaminated with
build artifacts
- By default console output is switched off and switching it back on requires an additional parameter
- It requires few additional parameters to run `gtest` alone

We decided to fix these deficiencies and created a wrapper `spadix` around `colcon`.
Catkin, ament, colcon, spadix... Got it?

## How

`spadix` accepts all `colcon` commands and options plus it adds and modifies few commands on its own.

Usage:

```sh
spadix [Global options] [command] [command options] ...

[Global options]
--no-merge  : Do not use --merge-install option for colcon
--no-console  : Do not use the default console mode: `--event-handlers console_cohesion+`
--no-root-check  : Do not check that spadix being started from the root of a git project
--ninja  : Use Ninja for building when available
--non-ninja  : Do not use Ninja for building, even if it is available

Commands:
clean  :Clean all projects (essentially executes `rm -rf log install build`)
clean:<project1>[,<project2>...]  :Clean selected, comma-separated projects. Spaces not supported

build  :Build all projects using --merge-install settings
build:<project1>[,<project2>...]  Build selected, comma-separated projects. Spaces not supported
    Build options:
        --release   : RelWithDebInfo (debug build by default)
        --no-fif    : Disable Failure Injection Framework (FIF enabled by default)

test  :Test all projects using --merge-install settings
test:<project1>[,<project2>...]  :Test selected, comma separated projects

gtest:<project> [gtest parameters]  :Run gtest only ('build/test_<project name>')
```
