Documentation
¶
Overview ¶
Command toolcatalog compiles a toolbelt tool catalog from registry data, and verifies a compiled catalog against a consumer's required tool set.
compile (the default) joins the mise registry (name -> preferred install backends, descriptions, aliases; MIT, github.com/jdx/mise /registry) with the aqua registry (per-package binary install definitions; MIT, github.com/aquaproj/aqua-registry /pkgs) and one or more overlay files (curated entries: LSP servers, runtimes, manual definitions), emitting one tool-catalog.json an Engine loads read-only. The base overlay set (overlays.json, embedded in the binary) applies first unless -no-base-overlays; consumers layer app-specific overlays with repeated -overlay flags.
Runs at image build time (the Dockerfile downloads both registry tarballs at Renovate-pinned refs):
go run github.com/cplieger/toolbelt/v2/cmd/toolcatalog@<tag> \
-mise <mise-repo>/registry \
-aqua <aqua-registry-repo>/pkgs \
-overlay overlays.json [-overlay app-overlays.json] \
-refs mise=<ref>,aqua=<ref> \
-out tool-catalog.json
verify asserts every name in a requirements file (one per line, # comments) resolves in the compiled catalog to actionable install knowledge (offline checks: source present; aqua definitions embedded, template-parseable, linux amd64+arm64 support; manual entries carry an install command). A gap exits non-zero so the image build fails instead of a boot job:
go run github.com/cplieger/toolbelt/v2/cmd/toolcatalog@<tag> \
verify -catalog tool-catalog.json -require required-tools.txt
An ordinary command in the root module: it shares the engine's catalog and aqua schema types by construction (one version stream, no compiler/engine skew), and Go's module graph pruning keeps its registry-parsing dependencies (TOML, YAML) out of consumer builds.