Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jooola/gh-release-install
CLI helper to install Github releases on your system.
https://github.com/jooola/gh-release-install
automation cli devops github installer pip release scripting system
Last synced: 1 day ago
JSON representation
CLI helper to install Github releases on your system.
- Host: GitHub
- URL: https://github.com/jooola/gh-release-install
- Owner: jooola
- License: gpl-3.0
- Created: 2021-08-07T13:05:51.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-12-02T08:54:23.000Z (23 days ago)
- Last Synced: 2024-12-16T17:25:45.928Z (9 days ago)
- Topics: automation, cli, devops, github, installer, pip, release, scripting, system
- Language: Python
- Homepage:
- Size: 455 KB
- Stars: 42
- Watchers: 4
- Forks: 3
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Github release installer
[![CI](https://github.com/jooola/gh-release-install/actions/workflows/ci.yml/badge.svg)](https://github.com/jooola/gh-release-install/actions/workflows/ci.yml)
[![PyPI Python Versions](https://img.shields.io/pypi/pyversions/gh-release-install.svg)](https://pypi.org/project/gh-release-install/)
[![PyPI Package Version](https://img.shields.io/pypi/v/gh-release-install.svg)](https://pypi.org/project/gh-release-install/)`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...
```sh
# ...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/shellcheckwget --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-installgh-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:
```sh
pip install gh-release-install
gh-release-install --help
```Or with with pipx:
```sh
pipx install gh-release-install
gh-release-install --help
```## Usage
```sh
usage: gh-release-install [-h] [--extract ] [--version ]
[--version-file ]
[--checksum :] [-v] [-q]
REPOSITORY ASSET DESTINATIONInstall 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 Extract the from the release asset archive
and install the extracted file instead. May contain
variables such as '{version}' or '{tag}'. (default:
None)
--version Desired release version to install. When using 'latest'
the installer will guess the latest version from the
Github API. (default: latest)
--version-file
Track the version installed on the system using a file.
May contain variables such as '{destination}'. (default:
None)
--checksum :
Asset checksum used to verify the downloaded ASSET.
can be one of md5, sha1, sha224, sha256, sha384,
sha512. 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'```