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 📚
- Getting started ⚡
- Prerequisites 📋
- Install
install-release
package 📦 - Updating
install-release
🔄 - Example usage
ir --help
💡- Install completion for cli 🎠
- Install tool from GitHub releases 🌈
- List installed tools 📋
- Remove installed release ❌
- Update all previously installed tools to the latest version 🕶️
- Pull state templates for installing tools 📄
- Hold Update to specific installed tool ✋
- Config tool installation path 🗂️
- Config updates for pre-release versions 🔌
- Configure GitHub token for higher rate limit 🔑
# Install ir
pip install -U install-release
Example Installation a tool named deno(A modern runtime for JavaScript and TypeScript) directly from its GitHub releases.
# ir get [GITHUB-URL]
❯ ir get https://github.com/denoland/deno
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
-
python3.8 or higher
-
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:
export PATH=$HOME/bin:$PATH
pip install -U install-release
For seeing version:
ir me --version
For updating:
ir me --upgrade
# 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 <sub-command> --help
Example: ir get --help
# ir --install-completion [SHELL: bash|zsh|fish|powershell]
# Example for zsh:
ir --install-completion zsh
❯ 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
❯ ir ls
Installed 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
❯ ir rm gron
INFO Removed: gron
❯ ir upgrade
Fetching: https://github.com/tenable/terrascan#terrascan
Fetching: https://github.com/ahmetb/kubectx#kubectx
Following 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: terrascan
Progress... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
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
❯ ir pull --url https://raw.githubusercontent.com/Rishang/dotFiles/main/templates/install-release/state.json
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 update on hold
❯ ir hold k9s
INFO Update on hold for, k9s to True
You can list tools on hold updates by ls --hold
command
❯ 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
❯ ir config --path ~/.local/bin
INFO updated path to: ~/.local/bin
INFO Done
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.
❯ ir config --pre-release
❯ ir config --token [your github token]
INFO: Update token
INFO: Done.