v0.1.0-alpha
caml.toml Manifest
- Define the schema for the
caml.tomlmanifest. - 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 searchcaml addcaml install
- Integration tests for:
caml addcaml install
Build pipeline
- Clean up the repo
- Build script for a single executable
- Get everything working in CI/CD
No due date
16% Completed