Skip to content

feat: add reusable GitHub Release binary installer framework #293

@endavis

Description

@endavis

Problem

Projects frequently need to install CLI tools distributed as GitHub Release binaries (e.g., age, sops, just, delta). Each project writes its own download/extract logic.

Proposed Solution

Add an optional tools/doit/install_tools.py module with reusable helpers:

  • get_latest_github_release(repo) — fetch latest release tag from GitHub API (supports GITHUB_TOKEN auth)
  • get_install_dir() — cross-platform install directory (~/.local/bin on Linux/macOS, %USERPROFILE%\.local\bin on Windows)
  • Platform-specific download/extract logic (Linux tarball, macOS brew, Windows zip)
  • A task_install_* pattern for defining installable tools

This pattern was developed in pynetappfoundry (tools/doit/install_tools.py) for installing age and sops, but the framework is fully generic. Needs utilities extracted as public functions and tool-specific config parameterized.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestneeds-triageNeeds review and prioritization

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions