# Wild CLI A unified Go CLI tool for managing Wild Cloud personal infrastructure, replacing the collection of wild-* bash scripts with a single, modern CLI application. ## Overview Wild CLI provides comprehensive management of your personal cloud infrastructure built on Talos Linux and Kubernetes. It offers better error handling, progress tracking, cross-platform support, and improved user experience compared to the original bash scripts. ## Features - **Unified interface** - Single `wild` command instead of many `wild-*` scripts - **Better error handling** - Detailed error messages with suggestions - **Cross-platform support** - Works on Linux, macOS, and Windows - **Progress tracking** - Visual progress indicators for long-running operations - **Improved validation** - Input validation and environment checks - **Native Go performance** - Fast startup and execution - **Comprehensive testing** - Unit and integration tests ## Installation ### From Source ```bash git clone cd wild-cli make build make install ``` ### Pre-built Binaries Download the latest release from the releases page and place the binary in your PATH. ## Usage ### Basic Commands ```bash # Show help wild --help # Configuration management wild config get cluster.name wild config set cluster.domain example.com # Secret management wild secret get database.password wild secret set database.password mySecretPassword # Application management wild app list wild app fetch nextcloud wild app add nextcloud wild app deploy nextcloud # Cluster management wild cluster nodes list wild cluster config generate # System setup wild setup scaffold wild setup cluster wild setup services ``` ### Global Flags - `--verbose, -v` - Enable verbose logging - `--dry-run` - Show what would be done without making changes - `--no-color` - Disable colored output - `--config-dir` - Specify configuration directory - `--wc-root` - Wild Cloud installation directory - `--wc-home` - Wild Cloud project directory ## Development ### Prerequisites - Go 1.22 or later - Make ### Building ```bash # Build for current platform make build # Build for all platforms make build-all # Development build with formatting make quick ``` ### Testing ```bash # Run tests make test # Run tests with coverage make test-coverage # Run linter make lint # Run all checks make check ``` ### Project Structure ``` wild-cli/ ├── cmd/wild/ # CLI commands │ ├── app/ # App management commands │ ├── cluster/ # Cluster management commands │ ├── config/ # Configuration commands │ ├── secret/ # Secret management commands │ ├── setup/ # Setup commands │ └── util/ # Utility commands ├── internal/ # Internal packages │ ├── config/ # Configuration management │ ├── environment/ # Environment detection │ ├── output/ # Output formatting │ └── ... ├── test/ # Test files ├── docs/ # Documentation └── scripts/ # Build scripts ``` ## Migration from Bash Scripts Wild CLI maintains compatibility with the existing Wild Cloud workflow: | Bash Script | Wild CLI Command | |-------------|------------------| | `wild-config ` | `wild config get ` | | `wild-config-set ` | `wild config set ` | | `wild-secret ` | `wild secret get ` | | `wild-app-list` | `wild app list` | | `wild-app-deploy ` | `wild app deploy ` | | `wild-setup-cluster` | `wild setup cluster` | ## Environment Variables - `WC_ROOT` - Wild Cloud installation directory - `WC_HOME` - Wild Cloud project directory (auto-detected if not set) ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests 5. Run `make check` to ensure quality 6. Submit a pull request ## License This project follows the same license as the Wild Cloud project.