Files
isocreator/readme.hints.md

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