Skip to main content

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

Project description

๐Ÿš€ Install Release

Python Version Downloads

Install Release is a CLI tool by name ir to install any single-binary executable package for your device(Linux/MacOS/WSL) directly from their GitHub or GitLab releases and keep them updated. Consider it as a small package manager to install single binary tools from GitHub/GitLab releases.

This can be any tool you want to install, which is pre-compiled for your device and present on GitHub or GitLab 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 or GITLAB-URL]

# Example install deno tool from github
โฏ ir get https://github.com/denoland/deno

# Or for GitLab repositories

# Example install glab tool from gitlab
โฏ ir get https://gitlab.com/gitlab-org/cli -n glab

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/GitLab 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/GitLab 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/GitLab tokens for higher rate limit ๐Ÿ”‘

For GitHub:

โฏ ir config --token [your github token]

INFO: Updated GitHub token
INFO: Done.

For GitLab:

โฏ ir config --gitlab-token [your gitlab token]

INFO: Updated GitLab token
INFO: Done.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

install_release-0.5.2.tar.gz (33.1 kB view details)

Uploaded Source

Built Distribution

install_release-0.5.2-py3-none-any.whl (37.0 kB view details)

Uploaded Python 3

File details

Details for the file install_release-0.5.2.tar.gz.

File metadata

  • Download URL: install_release-0.5.2.tar.gz
  • Upload date:
  • Size: 33.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.3 Linux/6.11.0-1015-azure

File hashes

Hashes for install_release-0.5.2.tar.gz
Algorithm Hash digest
SHA256 5f8d843740621f35cd7db5db91555f4230b5381f6ca755a7cae57564a552c94b
MD5 51ce3f355de8dbebb37ac31711ab8288
BLAKE2b-256 bda29f7b91fed079decb630da53209f99b78c06ed1dfccddcb1e50e2a3aaee06

See more details on using hashes here.

File details

Details for the file install_release-0.5.2-py3-none-any.whl.

File metadata

  • Download URL: install_release-0.5.2-py3-none-any.whl
  • Upload date:
  • Size: 37.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.12.3 Linux/6.11.0-1015-azure

File hashes

Hashes for install_release-0.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 537433d80cbb82a18e616d454651924c38285f9fc65c3321dbf9d082dc7f28dd
MD5 d22ad494699c708e6492baec5d78788f
BLAKE2b-256 bfff05c89bbfb624e90ad2853b8789b5464b0a5d965a5e275535154d70e1f978

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page