Collection of tools mostly found on GitHub.
This project uses uv for dependency management and task execution.
Install uv (if not already installed):
curl -Ls https://astral.sh/uv/install.sh | shCreate the virtual environment and install dependencies:
uv syncRun tasks via uv:
uv run inv --listInstall all tools to dist (default):
uv run inv installInstall a single tool to dist:
uv run inv install --name <tool>Install all tools to ~/.local/bin (or ~/bin):
uv run inv install --localInstall a single tool to ~/.local/bin:
uv run inv install --name <tool> --localForce reinstall all tools:
uv run inv install --forceForce reinstall a single tool:
uv run inv install --name <tool> --forceThese tasks:
- Resolve the correct version from
metadata.yaml - Render the
download_urltemplate for your platform - Download and place the binary in the configured install location
uv run inv update.add \
--repo-url https://github.com/owner/repo \
--download-url "{{repo_url}}/releases/download/v{{version}}/{{name}}-{{os}}-{{arch}}" \
--license MIT \
--description "Short tool description"Optional:
--nameOverride the inferred tool name--dry-runPreview the generated entry without writing changes
The command will fail if the tool name already exists.
You can automatically add a new entry to tasks/metadata.yaml using the update.add task.
This task:
- Fetches the latest GitHub release from the provided
repo_url - Infers the tool name from the repository if
--nameis not provided - Extracts and normalizes the semantic version (strips leading
v) - Inserts the tool into
metadata.yaml - Keeps entries in strict alphanumeric order
- Validates against
metadata.schema.json
The download_url field is rendered using Jinja. Common variables:
{{name}}The tool name{{version}}Resolved semantic version{{repo_url}}Repository URL from metadata{{os}}Target operating system{{arch}}Target architecture{{rust_arch}}Rust-style architecture (when required by upstream releases)
Refer to existing entries in tasks/metadata.yaml for patterns.
To update all tools to their latest GitHub release:
uv run inv update.update-allTo update a single tool:
uv run inv update.package --name <tool>To preview updates without writing changes:
uv run inv update.update-all --dry-runThese commands:
- Query the latest GitHub release
- Compare against the current version
- Update
metadata.yamlif a newer semantic version is found - Preserve strict alphanumeric ordering
This ensures the correct Python environment and pinned dependencies are used.