Skip to content

Simple package manager to easily install, update and manage any command-line(CLI) single binary tool directly from github releases

License

Notifications You must be signed in to change notification settings

Rishang/install-release

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Install Release

Python Version Downloads

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 ⚑

# 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

demo

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

  • 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

Install install-release package πŸ“¦

pip install -U install-release

Updating install-release πŸ”„

For seeing version:

ir me --version

For updating:

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 <sub-command> --help

Example: ir get --help

Install completion for cli 🎠

# ir --install-completion [SHELL: bash|zsh|fish|powershell]
# Example for zsh:
ir --install-completion zsh

Install tool from GitHub releases 🌈

❯ 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 πŸ“‹

❯ 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 ❌

# Remove installed release

❯ ir rm gron

INFO     Removed: gron

Update all previously installed tools to the latest version πŸ•ΆοΈ

❯ 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

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

❯ 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 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

Config tool installation path πŸ—‚οΈ

❯ ir config --path ~/.local/bin

INFO   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.

❯ ir config --pre-release

Configure GitHub token for higher rate limit πŸ”‘

❯ ir config --token [your github token]

INFO: Update token
INFO: Done.