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
│ └── 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 # (Deprecated) Use packages_to_ignore in configuration_setting.yaml
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.