161 lines
3.9 KiB
Markdown
161 lines
3.9 KiB
Markdown
# 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 <repository-url>
|
|
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 <path>` | `wild config get <path>` |
|
|
| `wild-config-set <path> <value>` | `wild config set <path> <value>` |
|
|
| `wild-secret <path>` | `wild secret get <path>` |
|
|
| `wild-app-list` | `wild app list` |
|
|
| `wild-app-deploy <name>` | `wild app deploy <name>` |
|
|
| `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. |