Files
isocreator/readme.hints.md

1.7 KiB

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

# 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