First commit of golang CLI.
This commit is contained in:
161
wild-cli/README.md
Normal file
161
wild-cli/README.md
Normal 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.
|
Reference in New Issue
Block a user