# Development Tools

Development and distribution tooling for provisioning.

## Tool Categories

### Build Tools (`build/`)

Build automation and compilation tools:

- Nushell script validation
- KCL schema compilation
- Dependency management
- Asset bundling

**Future Features**:

- Automated testing pipelines
- Code quality checks
- Performance benchmarking

### Package Tools (`package/`)

Packaging utilities for distribution:

- Standalone executables
- Container images
- System packages (deb, rpm, etc.)
- Archive creation

**Future Features**:

- Multi-platform builds
- Dependency bundling
- Signature verification

### Release Tools (`release/`)

Release management automation:

- Version bumping
- Changelog generation
- Git tag management
- Release notes creation

**Future Features**:

- Automated GitHub releases
- Asset uploads
- Release validation

### Distribution Tools (`distribution/`)

Distribution generators and deployment:

- Installation scripts
- Configuration templates
- Update mechanisms
- Registry management

**Future Features**:

- Package repositories
- Update servers
- Telemetry collection

## Tool Architecture

### Script-Based Tools

Most tools are implemented as Nushell scripts for consistency with the main system:

- Easy integration with existing codebase
- Consistent configuration handling
- Native data structure support

### Build Pipeline Integration

Tools integrate with common CI/CD systems:

- GitHub Actions
- GitLab CI
- Jenkins
- Custom automation

### Configuration Management

Tools use the same configuration system as the main application:

- Unified settings
- Environment-specific overrides
- Secret management integration

## Usage Examples

```bash
# Build the complete system
./tools/build/build-all.nu

# Package for distribution
./tools/package/create-standalone.nu --target linux

# Create a release
./tools/release/prepare-release.nu --version 4.0.0

# Generate distribution assets
./tools/distribution/generate-installer.nu --platform macos
```

## Directory Structure

```bash
provisioning/tools/
├── README.md                          # This file
├── build/                             # Core build tools (Rust + Nushell)
│   ├── README.md
│   ├── compile-platform.nu            # Compile Rust binaries
│   ├── bundle-core.nu                 # Bundle Nushell libraries
│   └── check-system.nu                # Validate build environment
├── dist/                              # Build output directory (generated)
│   ├── README.md
│   ├── core/                          # Nushell bundles
│   ├── platform/                      # Compiled binaries
│   └── config/                        # Configuration files
├── distribution/                      # Distribution generation
│   ├── README.md
│   └── generate-distribution.nu       # Create installable packages
├── package/                           # Package outputs (generated)
│   └── README.md
├── release/                           # Release management (generated)
│   └── README.md
├── scripts/                           # Utility and setup scripts
│   ├── *.nu files                     # Nushell utilities
│   └── *.sh files                     # Shell scripts
└── [Other utility scripts]            # Standalone tools
```

See individual README.md files in each subdirectory for detailed information.

## Development Setup

1. Ensure all dependencies are installed
2. Configure build environment
3. Run initial setup scripts
4. Validate tool functionality

## Integration

These tools integrate with:

- Main provisioning system
- Extension system
- Configuration management
- Documentation generation
- CI/CD pipelines (GitHub Actions, GitLab CI, Jenkins)
