Skip to main content

Github release installer

CI PyPI Python Versions PyPI Package Version

gh-release-install is a CLI helper to install Github releases on your system. It can be used for pretty much anything, to install a formatter in your CI, deploy some binary using an orcherstration tool, or on your desktop.

This project was mainly created to...

# ...turn this mess:
wget --quiet --output-document=- "https://github.com/koalaman/shellcheck/releases/download/v0.7.1/shellcheck-v0.7.1.linux.x86_64.tar.xz" \
    | tar --extract --xz --directory=/usr/local/bin --strip-components=1 --wildcards 'shellcheck*/shellcheck' \
    && chmod +x /usr/local/bin/shellcheck

wget --quiet --output-document=/usr/local/bin/shfmt "https://github.com/mvdan/sh/releases/download/v3.2.1/shfmt_v3.2.1_linux_amd64" \
    && chmod +x /usr/local/bin/shfmt

# Into this:
pip3 install gh-release-install

gh-release-install \
      "koalaman/shellcheck" \
      "shellcheck-{tag}.linux.x86_64.tar.xz" --extract "shellcheck-{tag}/shellcheck" \
      "/usr/bin/shellcheck"

gh-release-install \
      "mvdan/sh" \
      "shfmt_{tag}_linux_amd64" \
      "/usr/bin/shfmt"

Features:

  • Download releases from Github.
  • Extract zip or tarball on the fly.
  • Pin to a desired version or get the latest version.
  • Keep track of the local tools version using a version file.

Installation

Install the package from pip:

pip install gh-release-install
gh-release-install --help

Or with with pipx:

pipx install gh-release-install
gh-release-install --help

Usage

usage: gh-release-install [-h] [--extract <filename>] [--version <version>]
                          [--version-file <filename>]
                          [--checksum <hash>:<digest|asset>] [-v] [-q]
                          REPOSITORY ASSET DESTINATION

Install GitHub release file on your system.

positional arguments:
  REPOSITORY            Github REPOSITORY org/repo to get the release from.
  ASSET                 Release ASSET filename. May contain variables such as
                        '{version}' or '{tag}'.
  DESTINATION           Path to save the downloaded file. If DESTINATION is a
                        directory, the asset name will be used as filename in
                        that directory. May contain variables such as
                        '{version}' or '{tag}'.

optional arguments:
  -h, --help            show this help message and exit
  --extract <filename>  Extract the <filename> from the release asset archive
                        and install the extracted file instead. May contain
                        variables such as '{version}' or '{tag}'. (default:
                        None)
  --version <version>   Desired release version to install. When using 'latest'
                        the installer will guess the latest version from the
                        Github API. (default: latest)
  --version-file <filename>
                        Track the version installed on the system using a file.
                        May contain variables such as '{destination}'. (default:
                        None)
  --checksum <hash>:<digest|asset>
                        Asset checksum used to verify the downloaded ASSET.
                        <hash> can be one of md5, sha1, sha224, sha256, sha384,
                        sha512. <digest|asset> can either be the expected
                        checksum, or the filename of an checksum file in the
                        release assets. (default: None)
  -v, --verbose         Increase the verbosity. (default: 0)
  -q, --quiet           Disable logging. (default: None)

template variables:
    {tag}               Release tag name.
    {version}           Release tag name without leading 'v'.
    {destination}       DESTINATION path, including the asset filename if path
                        is a directory.

examples:
    gh-release-install 'mvdan/sh' \
        'shfmt_{tag}_linux_amd64' \
        '/usr/local/bin/shfmt' \
        --version 'v3.3.1'

    gh-release-install 'prometheus/prometheus' \
        'prometheus-{version}.linux-amd64.tar.gz' \
        --extract 'prometheus-{version}.linux-amd64/prometheus' \
        '/usr/local/bin/prometheus' \
        --version-file '{destination}.version' \
        --checksum 'sha256:sha256sums.txt'

Metadata

Release files for gh-release-install 0.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gh-release-install 0.15.0
File Size Uploaded
gh_release_install-0.15.0.tar.gz 21.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gh-release-install 0.15.0
File Interpreter ABI Platform
gh_release_install-0.15.0-py3-none-any.whl Python 3 none any Details

Total release size: 43.3 kB

Release files / gh_release_install-0.15.0.tar.gz

Download URL gh_release_install-0.15.0.tar.gz
Size 21.5 kB
Tags Source
SHA-256 checksum
How to use checksums
0737e120cecfbda6861b19fd6a4f27723e6f872cc25443aa1f90d290380c3513
BLAKE2b-256 checksum
How to use checksums
7b9f5a7e216700c6dd6ff9f70fa4ffc966f9f3ae38e354aed2e2386c5378fa52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release files / gh_release_install-0.15.0-py3-none-any.whl

Download URL gh_release_install-0.15.0-py3-none-any.whl
Size 21.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5f4e6087b6ccc923382cb4f1a27d7f77ea3cfdd77e7ef4fd6c8f2f8aa16543fe
BLAKE2b-256 checksum
How to use checksums
b208955f19418cea8c8def9ca6bb5817c58e3aeb2d354a679736a698b27ace70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.15.0 This release

2 release files

0.14.0

2 release files

0.11.2

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page