Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rishang/install-release
Simple package manager to easily install, update and manage any command-line(CLI) single binary tool directly from github releases
https://github.com/rishang/install-release
cli darwin github go golang install-release installer linux package-manager python release releases shell ubuntu
Last synced: about 6 hours ago
JSON representation
Simple package manager to easily install, update and manage any command-line(CLI) single binary tool directly from github releases
- Host: GitHub
- URL: https://github.com/rishang/install-release
- Owner: Rishang
- License: gpl-3.0
- Created: 2022-06-19T10:16:43.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-12T13:10:32.000Z (4 days ago)
- Last Synced: 2024-11-14T11:42:32.133Z (2 days ago)
- Topics: cli, darwin, github, go, golang, install-release, installer, linux, package-manager, python, release, releases, shell, ubuntu
- Language: Python
- Homepage: https://pypi.org/project/install-release/
- Size: 454 KB
- Stars: 76
- Watchers: 2
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
๐ Install Release**Install Release** is a CLI tool by name `ir` to install any tool for your device(Linux/MacOS/WSL) directly from their GitHub releases and keep them updated. Consider it as a small package manager to install single binary tools from GitHub releases.
This can be any tool you want to install, which is pre-compiled for your device and present on GitHub releases.
> INFO: It's mainly for installing tools that are not directly available officially by package managers like `apt, yum, pacman, brew` etc.
## Table of Contents ๐
- [Table of Contents ๐](#table-of-contents-)
- [Getting started โก](#getting-started-)
- [Prerequisites ๐](#prerequisites-)
- [Install `install-release` package ๐ฆ](#install-install-release-package-)
- [Updating `install-release` ๐](#updating-install-release-)
- [Example usage `ir --help` ๐ก](#example-usage-ir---help-)
- [Install completion for cli ๐ ](#install-completion-for-cli-)
- [Install tool from GitHub releases ๐](#install-tool-from-github-releases-)
- [List installed tools ๐](#list-installed-tools-)
- [Remove installed release โ](#remove-installed-release-)
- [Update all previously installed tools to the latest version ๐ถ๏ธ](#update-all-previously-installed-tools-to-the-latest-version-๏ธ)
- [Pull state templates for installing tools ๐](#pull-state-templates-for-installing-tools-)
- [Hold Update to specific installed tool โ](#hold-update-to-specific-installed-tool-)
- [Config tool installation path ๐๏ธ](#config-tool-installation-path-๏ธ)
- [Config updates for pre-release versions ๐](#config-updates-for-pre-release-versions-)
- [Configure GitHub token for higher rate limit ๐](#configure-github-token-for-higher-rate-limit-)## Getting started โก
```bash
# Install ir
pip install -U install-release
```Example Installation a tool named [deno](https://github.com/denoland/deno)(A modern runtime for JavaScript and TypeScript) directly from its GitHub releases.
```bash
# ir get [GITHUB-URL]โฏ ir get https://github.com/denoland/deno
```![demo](https://raw.githubusercontent.com/Rishang/install-release/main/.github/images/demo.png)
Checking for deno is installed by `install-release`:
```
โฏ which deno
~/bin/denoโฏ deno --version
deno 1.46.3 (stable, release, x86_64-unknown-linux-gnu)
v8 12.9.202.5-rusty
typescript 5.5.2
```## Prerequisites ๐
- python3.8 or higher
- [libmagic](https://github.com/ahupp/python-magic#installation)
- Default releases Installation Path is: `~/bin/`,
This is the path where installed tools will get stored.- In order to run installed tools, you need to add the following line to your `~/.bashrc` or `~/.zshrc` file:
```bash
export PATH=$HOME/bin:$PATH
```## Install `install-release` package ๐ฆ
```bash
pip install -U install-release
```## Updating `install-release` ๐
For seeing version:
```bash
ir me --version
```For updating:
```bash
ir me --upgrade
```## Example usage `ir --help` ๐ก
```
# Help pageโฏ ir --help
Usage: ir [OPTIONS] COMMAND [ARGS]...GitHub Release Installer, based on your system
Commands:
get | Install GitHub release, cli tool
ls | list all installed releases, cli tools
rm | remove any installed release, cli tools
upgrade | Upgrade all installed releases, cli tools
state | show currently stored state
config | Set configs for tool
pull | Install tools from a remote state
hold | Keep updates a tool on hold.
me | Update ir tool.
```For sub-command help use: `ir --help`
Example: `ir get --help`
#### Install completion for cli ๐
```bash
# ir --install-completion [SHELL: bash|zsh|fish|powershell]
# Example for zsh:
ir --install-completion zsh
```#### Install tool from GitHub releases ๐
```bash
โฏ ir get "https://github.com/ahmetb/kubectx"๐ Repo : ahmetb/kubectx
๐ Stars : 13295
โจ Language : Go
๐ฅ Title : Faster way to switch between clusters and namespaces in kubectl๐ Install: kubectx
โโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโโโ
โ Name โ Selected Item โ Version โ Size Mb โ Downloads โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ kubectx โ kubectx_v0.9.4_linux_x86_64.tar.gz โ v0.9.4 โ 1.0 โ 43811 โ
โโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโโโ
Install this tool (Y/n): y
INFO Downloaded: 'kubectx_v0.9.4_linux_x86_64.tar.gz' at /tmp/dn_kubectx_ph6i7dmk utils.py:159
INFO install /tmp/dn_kubectx_ph6i7dmk/kubectx /home/noobi/bin/kubectx core.py:132
INFO Installed: kubectx
``````
# checking if kubectx is installed
โฏ which kubectx
/home/noobi/bin/kubectxโฏ kubectx --version
0.9.4
```#### List installed tools ๐
```bash
โฏ ir lsInstalled tools
โโโโโโโโโโโโโณโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Name โ Version โ Url โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ terrascan โ v1.15.2 โ https://github.com/tenable/terrascan โ
โ gron โ v0.7.1 โ https://github.com/tomnomnom/gron โ
โ kubectx โ v0.9.4 โ https://github.com/ahmetb/kubectx โ
โโโโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```#### Remove installed release โ
```bash
# Remove installed releaseโฏ ir rm gron
INFO Removed: gron
```#### Update all previously installed tools to the latest version ๐ถ๏ธ
```bash
โฏ ir upgradeFetching: https://github.com/tenable/terrascan#terrascan
Fetching: https://github.com/ahmetb/kubectx#kubectxFollowing tools will be upgraded:
terrascan
Upgrade these tools, (Y/n): y
Updating: terrascan, v1.15.0 => v1.15.2
INFO Downloaded: 'terrascan_1.15.2_Linux_x86_64.tar.gz' at /tmp/dn_terrascan_0as71a6v
INFO install /tmp/dn_terrascan_0as71a6v/terrascan ~/bin/terrascan
INFO Installed: terrascanProgress... โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ 100% 0:00:00
```#### Pull state templates for installing tools ๐
You can push your state to somewhere like GitHub and use it for any other device, to make a sync for tools installed via ir
```bash
โฏ ir pull --url https://raw.githubusercontent.com/Rishang/dotFiles/main/templates/install-release/state.json
```#### Hold Update to specific installed tool โ
In case you want to hold an update to the specific tool, you can use `hold {tool-name}` command which will pause update for that tool.
Example: keep tool named [k9s](https://github.com/derailed/k9s) update on hold
```bash
โฏ ir hold k9s
INFO Update on hold for, k9s to True
```You can list tools on hold updates by `ls --hold` command
```bash
โฏ ir ls --hold
Installed tools kept on hold
โโโโโโโโณโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Name โ Version โ Url โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ k9s โ v0.26.7 โ https://github.com/derailed/k9s โ
โโโโโโโโดโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```In case you want to unhold update to the specific tool, you can use `hold --unset {tool-name}` command by which it will pause update for that tool.
```
โฏ ir hold --unset k9s
INFO Update on hold for, k9s to False
```#### Config tool installation path ๐๏ธ
```bash
โฏ ir config --path ~/.local/binINFO updated path to: ~/.local/bin
INFO Done
```#### Config updates for pre-release versions ๐
This is useful when you want to install pre-release versions of tools like beta or alpha releases. By default, it is set to `False` in which case it will only check for latest release.
```bash
โฏ ir config --pre-release
```#### Configure GitHub token for higher rate limit ๐
```bash
โฏ ir config --token [your github token]INFO: Update token
INFO: Done.
```