Github release installer
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
latestversion. - 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)
| File | Size | Uploaded | |
|---|---|---|---|
| gh_release_install-0.15.0.tar.gz | 21.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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