v0.1.0-alpha

caml.toml Manifest

  • Define the schema for the caml.toml manifest.
  • Define an interface for interacting with the manifest.
  • Create a Manifest service. It should:
    • Read, parse, and validate the manifest.
    • Make atomic writes to the manifest.

The Source Interface & Modrinth Implementation

  • Make an abstract Source interface for defining package source services.
  • Implement a ModrinthSource service:
    • Create a default implementation
    • Configure the Modrinth HTTP client with a distinct, mandatory User-Agent header to prevent rate-limit blocking.
    • Implement an exponential backoff or retry mechanism to gracefully handle HTTP 429 (Rate Limited) responses from the Labrinth API.

Dependency Resolution

  • Implement a dependency tree generator
  • Build filter system
  • Handle version conflict detection

Package Installation

  • Create necessary File interfaces and primitives
  • Implement file downloading
  • Add integrity checking (sha hashes)
  • Figure out a caching/linking system that works

CLI Interface

  • caml search
    • Should be able to do some basic filtering
  • caml add (adds a package to the manifest)
  • caml install (installs the manfest)

Testing

  • Units tests for:
    • ModrinthSource
    • The modrinth api client
    • SourceRegistry
    • The file download module
    • The dependency resolution module
    • The manifest management module
    • caml search
    • caml add
    • caml install
  • Integration tests for:
    • caml add
    • caml install

Build pipeline

  • Clean up the repo
  • Build script for a single executable
  • Get everything working in CI/CD
No due date
16% Completed