CLI Framework
The CLI system provides dynamic command registration and discovery for building extensible command-line applications.- Main entry point:
pyrig.rig.cli.cli.main() - Command registration: Automatic discovery from subcommands modules
- Logging configuration: Flexible verbosity controls
- Multi-package support: Commands inherited across dependency chains
Configuration System
The configuration system provides declarative, idempotent management of project configuration files.- Base classes:
ConfigFile,DictConfigFile,TomlConfigFile, etc. - Automatic discovery: All subclasses automatically validated
- Priority-based ordering: Control validation sequence
- Intelligent merging: Preserves user customizations
Tool Wrappers
Tool wrappers provide type-safe, composable command construction for CLI tools.- Base class:
Toolfor command argument construction - Type safety: Arguments validated at construction time
- Composability: Args objects combined and extended
- Badge generation: Automatic README badge creation
Artifact Builders
Builders create distributable artifacts with platform-specific naming and organized output.- Base class:
BuilderConfigFilefor artifact generation - PyInstaller support:
PyInstallerBuilderfor standalone executables - Resource bundling: Automatic resource collection and packaging
- Platform-specific output: Automatic naming with OS suffixes
Architecture
Dependency Subclass Pattern
All major pyrig components (ConfigFile, Tool, BuilderConfigFile) extend DependencySubclass, which provides:
- Automatic discovery: Subclasses automatically found across dependency chains
- Multi-package support: Projects inherit functionality from dependencies
- Sorting and filtering: Flexible subclass organization
- Singleton access: Convenient
.Iinstance property
Module Discovery
Pyrig uses a sophisticated module discovery system to find equivalent modules across the dependency chain:- Shared commands available in all dependent projects
- Configuration inheritance across packages
- Resource bundling from multiple packages
Usage Patterns
Creating Custom Commands
Add commands to<package>.rig.cli.subcommands:
Creating Configuration Files
Extend base config classes:Creating Tool Wrappers
Extend theTool base class:
Creating Builders
ExtendBuilderConfigFile or PyInstallerBuilder:
Type Annotations
Pyrig uses modern Python type annotations extensively:Next Steps
- CLI API - Command-line interface framework
- Configuration API - Configuration file management
- Tools API - CLI tool wrappers
- Builders API - Artifact builders