Documentation
¶
Overview ¶
Package tools resolves the pinned versions and download URLs of the host tools lerd installs (composer, fnm, mkcert). tools.yaml is the source of truth: embedded at build time as the offline fallback, and fetched from GitHub before use so a bad pin can be fixed without a binary release.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InstalledVersion ¶
InstalledVersion reports the version of an installed tool: the stamp sidecar while it is trustworthy (not older than the binary, which would mean something else replaced it, e.g. composer self-update), else a version probe. Empty when the binary is missing or undeterminable.
A probed answer is stamped on the way out. The stamp is otherwise only written when lerd downloads a tool, and composer is only downloaded when it is absent, so an install that already had composer.phar before stamping existed never got one. With composer unprobeable by execution, it read as unknown forever and, because the update check needs a known version, was never offered an update either.
func WriteStamp ¶
WriteStamp records the installed version of a tool in its sidecar, so status can report it without executing anything.
Types ¶
type Manifest ¶
Manifest is the parsed tools.yaml.
func Load ¶
Load returns the pinned tool manifest: the embedded copy, overlaid with every valid entry of the published tools.yaml when it is reachable.
type Tool ¶
type Tool struct {
Version string `yaml:"version"`
URL string `yaml:"url"`
Assets map[string]string `yaml:"assets"`
Digests map[string]string `yaml:"digests,omitempty"`
}
Tool is one pinned download: a version and an HTTPS URL template in which {version} and {asset} expand. Assets maps GOOS/GOARCH to the release asset name, which may itself contain {version}. Digests maps the same GOOS/GOARCH key to the asset's sha256, and is optional so a manifest published without one still installs on binaries that predate the field.
type ToolStatus ¶
type ToolStatus struct {
Name string `json:"name"`
Installed string `json:"installed,omitempty"`
Pinned string `json:"pinned"`
Present bool `json:"present"`
UpdateAvailable bool `json:"update_available"`
}
ToolStatus is one row of the tools report shared by the CLI, UI and MCP.
func StatusAll ¶
func StatusAll(ctx context.Context) []ToolStatus
StatusAll compares each installed tool with its pin.