Package: install-release
Install Release 🚀install-releaseis a CLI tool to install any tool for your device directly from their GitHub releases and keep them updated. Consider it as a small package manager to install 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 likeapt, yum, pacmanetc.Table of ContentsInstall Release 🚀Table of ContentsGetting startedPrerequisitesInstallinstall-releasepackageUpdatinginstall-releaseExample usageinstall-release --helpInstall completion for cliInstall tool from GitHub releasesList installed toolsRemove installed releaseUpdate all previously installed tools to the latest versionPull state templates for installing tools.Hold Update to specific installed tool.Config tool installation pathConfig updates for pre-release versionsConfigure GitHub token for higher rate limitGetting started# Install install-releasepipinstall-Uinstall-release# Example Installation a tool named `gron` directly from its GitHub releases

# install-release get [GITHUB-URL]

❯ install-release get https://github.com/tomnomnom/gronChecking for gron is installed usinginstalled-release:❯ which gron
/home/noobi/bin/gron

❯ gron --help
Transform JSON (from a file, URL, or stdin) into discrete assignments to make it greppable
... # morePrerequisitespython3.8 or higherlibmagicDefault 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~/.bashrcor~/.zshrcfile:exportPATH=$HOME/bin:$PATHInstallinstall-releasepackagepipinstall-Uinstall-releaseUpdatinginstall-releaseFor seeing version:install-releaseme--versionFor updating:install-releaseme--upgradeExample usageinstall-release --help# Help page

❯ install-release --help
Usage: install-release [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 install-release tool.For sub-command help use:install-release <sub-command> --helpExample:install-release get --helpYou can shorten the command by setting the alias to your.bashrcor.zshrcaliasir="install-release"after this you can you alias directly for easinessExample:ir get --helpInstall completion for cli# install-release --install-completion [SHELL: bash|zsh|fish|powershell]# Example for zsh:install-release--install-completionzshInstall tool from GitHub releases❯install-releaseget"https://github.com/ahmetb/kubectx"📑Repo:ahmetb/kubectx
🌟Stars:13295✨Language:Go
🔥Title:Fasterwaytoswitchbetweenclustersandnamespacesinkubectl🚀Install:kubectx┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━┓
┃Name┃SelectedItem┃Version┃SizeMb┃Downloads┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━┩
│kubectx│kubectx_v0.9.4_linux_x86_64.tar.gz│v0.9.4│1.0│43811│
└─────────┴────────────────────────────────────┴─────────┴─────────┴───────────┘
Installthistool(Y/n):yINFODownloaded:'kubectx_v0.9.4_linux_x86_64.tar.gz'at/tmp/dn_kubectx_ph6i7dmkutils.py:159INFOinstall/tmp/dn_kubectx_ph6i7dmk/kubectx/home/noobi/bin/kubectxcore.py:132INFOInstalled:kubectx# checking if kubectx is installed
❯ which kubectx
/home/noobi/bin/kubectx

❯ kubectx --version
0.9.4List installed tools❯install-releaselsInstalledtools┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃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❯install-releasermgronINFORemoved:gronUpdate all previously installed tools to the latest version❯install-releaseupgrade

Fetching:https://github.com/tenable/terrascan#terrascan
Fetching:https://github.com/ahmetb/kubectx#kubectx

Followingtoolswillbeupgraded:

terrascan

Upgradethesetools,(Y/n):y

Updating:terrascan,v1.15.0=>v1.15.2INFODownloaded:'terrascan_1.15.2_Linux_x86_64.tar.gz'at/tmp/dn_terrascan_0as71a6vINFOinstall/tmp/dn_terrascan_0as71a6v/terrascan~/bin/terrascanINFOInstalled:terrascan

Progress...━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100%0:00:00Pull 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 install-release❯install-releasepull--urlhttps://raw.githubusercontent.com/Rishang/dotFiles/main/templates/install-release/state.jsonHold Update to specific installed tool.In case you want to hold an update to the specific tool, you can usehold {tool-name}command which will pause update for that tool.Example: keep tool namedk9supdate on hold❯install-releaseholdk9sINFOUpdateonholdfor,k9stoTrueYou can list tools on hold updates  byls --holdcommand❯install-releasels--holdInstalledtoolskeptonhold┏━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃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 usehold --unset {tool-name}command by which it will pause update for that tool.❯ install-release hold --unset k9s
 INFO     Update on hold for, k9s to FalseConfig tool installation path❯install-releaseconfig--path~/.local/bin

INFOupdatedpathto:~/.local/bin
INFODoneConfig updates for pre-release versionsThis is useful when you want to install pre-release versions of tools like beta or alpha releases. By default, it is set toFalsein which case it will only check for latest release.❯install-releaseconfig--pre-releaseConfigure GitHub token for higher rate limit❯install-releaseconfig--token[yourgithubtoken]INFO:Updatetoken
INFO:Done.