Skip to main content

CLI helper to install Github releases on your system.

Project description

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'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gh_release_install-0.14.0.tar.gz (21.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gh_release_install-0.14.0-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

Details for the file gh_release_install-0.14.0.tar.gz.

File metadata

  • Download URL: gh_release_install-0.14.0.tar.gz
  • Upload date:
  • Size: 21.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for gh_release_install-0.14.0.tar.gz
Algorithm Hash digest
SHA256 db2c20cb1d0a5963001ae0089506a6478aeb2d174fc7d4b67e549057ca99a683
MD5 d8f61cd5b1204cb753baaae4a7901230
BLAKE2b-256 1f815ab5a22a34d899aa2e5757f8bf6c9bf0d4d87ea1e8fd929894e86c2dd79b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gh_release_install-0.14.0.tar.gz:

Publisher: release.yml on jooola/gh-release-install

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gh_release_install-0.14.0-py3-none-any.whl.

File metadata

File hashes

Hashes for gh_release_install-0.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c83389a3620d09f8e25377f8d8de6b15c824f52cbbb46aa59e8bca7080a98b31
MD5 ceeeb31cff62e1f9312daf17c06b6e81
BLAKE2b-256 fd7bd35e283a73a8d1b807bf23d1f916c8f397ca8d91409e2cc344675a4dbf82

See more details on using hashes here.

Provenance

The following attestation bundles were made for gh_release_install-0.14.0-py3-none-any.whl:

Publisher: release.yml on jooola/gh-release-install

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page