First commit of golang CLI.

This commit is contained in:
2025-08-31 11:51:11 -07:00
parent 4ca06aecb6
commit f0a2098f11
51 changed files with 8840 additions and 0 deletions

161
wild-cli/README.md Normal file
View File

@@ -0,0 +1,161 @@
# 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.