73 lines
1.7 KiB
Markdown
73 lines
1.7 KiB
Markdown
# Development Hints
|
|
|
|
## Project Structure
|
|
|
|
This project follows the nupst/spark pattern for Deno-based CLI tools with binary distribution.
|
|
|
|
## Key Components
|
|
|
|
1. **ISO Management** (`ts/classes/`)
|
|
- `iso-downloader.ts` - Downloads Ubuntu ISOs from official mirrors
|
|
- `iso-cache.ts` - Manages cached ISOs with multi-version support
|
|
- `iso-extractor.ts` - Extracts ISOs using xorriso
|
|
- `iso-packer.ts` - Repacks modified ISOs into bootable images
|
|
- `iso-builder.ts` - Orchestrates the entire build process
|
|
|
|
2. **Cloud-Init** (`ts/classes/`)
|
|
- `cloud-init-generator.ts` - Generates cloud-init configuration files
|
|
- `config-manager.ts` - Loads and validates YAML configs
|
|
|
|
3. **CLI** (`ts/cli.ts`)
|
|
- Command-line interface with commands: build, cache, template, validate
|
|
|
|
## System Dependencies
|
|
|
|
The tool requires these system tools at runtime:
|
|
- `xorriso` - ISO manipulation
|
|
- `syslinux-utils` - For USB-bootable ISOs (isohybrid command)
|
|
|
|
## Development Commands
|
|
|
|
```bash
|
|
# Install dependencies
|
|
deno install
|
|
|
|
# Run in development mode
|
|
deno task dev --help
|
|
|
|
# Type checking
|
|
deno task check
|
|
|
|
# Format code
|
|
deno task fmt
|
|
|
|
# Lint
|
|
deno task lint
|
|
|
|
# Run tests
|
|
deno task test
|
|
|
|
# Compile binaries
|
|
deno task compile
|
|
```
|
|
|
|
## Distribution
|
|
|
|
Binaries are compiled for 5 platforms:
|
|
- Linux x64
|
|
- Linux ARM64
|
|
- macOS x64
|
|
- macOS ARM64
|
|
- Windows x64
|
|
|
|
## Next Steps
|
|
|
|
1. Implement CLI flag-based building (currently only config files work)
|
|
2. Add interactive mode with prompts
|
|
3. Implement boot scripts injection with systemd service creation
|
|
4. Add pre-install packages feature (requires squashfs manipulation)
|
|
5. Write comprehensive tests
|
|
6. Compile and test binaries
|
|
7. Set up CI/CD pipeline
|
|
8. Publish to npm
|