A powerful command-line tool for managing project licenses and configuration with smart license detection and interactive setup.
- π Smart License Management: Automatically fetch and download licenses from the SPDX License List
- π― Fuzzy Search: Intelligent license name matching with suggestions for typos
- βοΈ Project Configuration: Interactive project setup with persistent configuration
- π License Reloading: Easily update or reload existing licenses
- π Template Processing: Automatic placeholder replacement in license templates
- ποΈ Git Integration: Optional .gitignore management for configuration files
git clone https://github.com/Saturnyx/curator.git
cd curator
cargo build --releaseThe binary will be available at target/release/curator (or curator.exe on Windows).
Method 1: Install directly from crates.io
cargo install curator_cliMethod 2: Install from the repository
git clone https://github.com/Saturnyx/curator.git
cd curator
cargo install --path .Curator is available as a Snap package for easy installation on Linux:
sudo snap install curator-cli
sudo snap alias curator-cli.curator cuCurator uses the command alias cu for convenience.
Before using license management features, initialize your project configuration:
cu config setThis will prompt you for:
- Your legal name (for copyright notices)
- Preferred license type
- Whether to add
curator.jsonto.gitignore
Download and configure a license for your project:
cu license set MIT
cu license set apache-2.0
cu license set GPL-3.0If you make a typo, Curator will suggest similar license names:
cu license set ap
# License 'ap' not found in SPDX list. Please try again.
# Did you mean:
# 1. Apache-2.0
# 2. APSL-2.0
# 3. APL-1.0Remove the current LICENSE file:
cu license removeReload the license from your configuration (useful after updating project details):
cu license reloadThe project configuration is stored in curator.json:
{
"data": {
"year": "2025",
"license": "MIT",
"copyright holders": "Your Name"
},
"settings": {
"path": "/path/to/your/project",
"author": "Your Name",
"project": "project-name"
}
}To update your project configuration:
cu config set- Fetches Available Licenses: Curator connects to the SPDX License List GitHub repository to get the latest available licenses
- Smart Matching: Uses fuzzy matching to find licenses even with typos
- Template Processing: Automatically replaces placeholders like
<year>,<copyright holders>with your configuration data - Interactive Prompts: Asks for any missing information needed to complete the license
- Project Validation: Ensures configuration matches the current project directory
- Persistent Storage: Saves project metadata for consistent license generation
- Git Integration: Optionally manages
.gitignoreentries for configuration files
Curator is built with a modular architecture:
main.rs: CLI interface usingclapfor argument parsingconfig.rs: Configuration management and project initializationlicense.rs: License fetching, processing, and managementtools.rs: Utility functions including fuzzy searchlib.rs: Library interface for external use
clap: Command-line argument parsingreqwest: HTTP client for fetching licensesserde_json: JSON serialization for configurationdialoguer: Interactive promptsfuzzy-matcher: Fuzzy string matching for license suggestionscrossterm: Cross-platform terminal stylingchrono: Date handling for copyright years
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change. For more information, please check the CONTRIBUTING.md file.
- Clone the repository
- Install Rust (1.70+ recommended)
- Run tests:
cargo test - Build:
cargo build - Run:
cargo run -- --help
This project is licensed under the MIT License - see the LICENSE file for details.
- SPDX License List for providing the comprehensive license database
- The Rust community for excellent crates and documentation