Raisin master files and folders
A Raisin-managed project relies on a specific directory structure and a few key configuration files.
Directory Layout
A typical project root will look like this:
my_raisin_project/
├── commands/ # Modular command implementations
│ ├── __init__.py
│ ├── build.py # Build command
│ ├── constants.py # Constants
│ ├── git_commands.py # Git integration commands
│ ├── globals.py # Global state management
│ ├── help.py # Help command
│ ├── index.py # Index commands
│ ├── install.py # Install command
│ ├── publish.py # Publish/release command
│ ├── setup.py # Setup command
│ ├── test.py # Unit test runner
│ └── utils.py # Shared utilities
├── generated/ # Auto-generated C++ headers from .msg/.srv/.action
├── install/ # Output directory for local development builds
├── messages/ # (Optional) Global .msg/.srv/.action files
├── precompiled/ # (Optional) Pre-compiled third-party libraries
├── release/ # Contains release builds, archives, and installed packages
│ ├── build/ # Build artifacts for each target
│ └── install/ # Directory for installed packages
├── src/ # Source code for all your C++ subprojects
│ ├── repo_a/ # This repo is a collection of raisin packages
│ │ ├── raisin_package_a/ # this folder is a raisin package
│ │ ├── raisin_package_b/
│ │ ├── raisin_package_c/
│ │ └── ...
│ └── raisin_package_d/ # this repo is a single raisin package
├── templates/ # C++ header templates for code generation and some code templates for raisin packages
├── CMakeLists.txt # Top-level CMake file, auto-generated by Raisin
├── raisin.py # Main entry point - registers commands
├── raisin.sh # Bash wrapper script for easier usage
├── configuration_setting.yaml # Main configuration (tokens, user_type, packages to ignore)
├── repositories.yaml # Maps package names to Git repository URLs
├── requirements.txt # Python dependencies
├── secrets.yaml # (Deprecated) Use configuration_setting.yaml instead
└── RAISIN_IGNORE # (Optional) Package ignore list (one per line)
The details of the raisin package structure can be found in the raisin package chapter.
Configuration Files
See Configuration for detailed information on configuration files, including configuration_setting.yaml and repositories.yaml.