Command-Line Usage
The Raisin script is controlled via command-line arguments. This page provides a quick reference of all available commands.
For detailed information, see:
Package Management - Package installation and index commands
Git Integration - Git repository management commands
python raisin.py <command> [options]
Global Options
- --yes
Answers ‘yes’ to all prompts, like overwriting release assets.
Build & Release Commands
- setup [target ...]
Configures the project for a local development build.
Running
python raisin.pywith no arguments performs the same setup for all packages.This command performs the core setup tasks: 1. Finds all
.msg,.srv, and.actionfiles. 2. Generates the corresponding C++ header files in thegenerated/directory. 3. Scans all projects insrc/to build a dependency graph. 4. Generates a top-levelCMakeLists.txtwith all projects included in the correct build order.If one or more
targetnames are provided, it only configures the build for those specific targets and their dependencies. Target names map to entries inRAISIN_BUILD_TARGETS.yaml(see Repositories & Raisin Packages); each entry can expand to multiple glob patterns that control which packages are included. If no targets are provided, all projects discovered insrc/are configured.
- build [target ...] [debug|release ...] [install]
Compiles the project locally.
This command runs the
setupstep with the same target filtering rules, then compiles the project using Ninja. * Omit build types to build indebugby default. * Provide one or both build types (debugand/orrelease) to run them sequentially. * Addinstallto runninja installafter each build. * When targets are provided, they must match entries inRAISIN_BUILD_TARGETS.yaml; otherwise all detected projects are built.
- release <target ...> [debug|release]
Creates and distributes a formal release package.
This command automates the entire release process for one or more targets. For each target, it: 1. Reads the
release.yamlfile to get version and dependency information. 2. Performs a clean build and installs the artifacts to a dedicated directory underrelease/install/. 3. Compresses the installed artifacts into a.ziparchive named with the convention:{target}-{os}-{arch}-{build_type}-v{version}.zip. 4. Uploads the archive to the corresponding GitHub Release, creating the release if it doesn’t exist.Build type defaults to
releaseif not specified.
Package Management Commands
See Package Management for detailed documentation.
- install [pkg>=1.0] [debug|release]
Downloads and installs pre-compiled packages and their dependencies.
This command functions as a package manager. It recursively resolves and installs all required packages. * A package specifier can be a simple name (e.g.,
my_pkg) or include a version constraint (e.g.,my_pkg>=1.2.3). * If no packages are specified, it automatically scans for projects in thesrc/directory and treats them as targets to be fulfilled. * Build type defaults toreleaseif not specified.
- index local
Scans local packages and validates their dependency graph.
This command scans local
src/andrelease/install/packages and validates their dependency graph, printing a colored report of the status.
- index release [<package_name>]
Lists available remote packages from GitHub Releases.
Without a package name, it lists all available packages.
With a package name, it lists all available versions for that package.
Git Integration Commands
See Git Integration for detailed documentation.
- git status
Fetches and shows the detailed sync status for all local repositories.
- git pull [remote]
Pulls changes for all local repositories from the specified remote.
Defaults to ‘origin’ if no remote is specified.
- git setup <remote:user ...>
Clears all existing remotes and sets up new ones for all repos in
src/.Example:
python raisin.py git setup origin:raisim raion:raionrobotics
Help
- help, -h, --help
Displays a detailed help message.