{"id":20608501,"url":"https://github.com/rishang/install-release","last_synced_at":"2025-04-05T05:03:18.571Z","repository":{"id":40358249,"uuid":"505074839","full_name":"Rishang/install-release","owner":"Rishang","description":"Simple package manager to easily install, update and manage any command-line(CLI) single binary tool directly from github releases for Linux and MacOS","archived":false,"fork":false,"pushed_at":"2025-03-24T09:05:42.000Z","size":485,"stargazers_count":85,"open_issues_count":5,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T04:04:05.639Z","etag":null,"topics":["cli","darwin","github","go","golang","install-release","installer","linux","package-manager","python","release","releases","shell","ubuntu"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/install-release/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rishang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-19T10:16:43.000Z","updated_at":"2025-03-26T16:52:22.000Z","dependencies_parsed_at":"2024-08-27T10:41:21.416Z","dependency_job_id":"77ead9a2-320d-4188-9798-79e73f77c34c","html_url":"https://github.com/Rishang/install-release","commit_stats":{"total_commits":184,"total_committers":2,"mean_commits":92.0,"dds":0.02717391304347827,"last_synced_commit":"05ab371eff3f35e959a6fc1cde9cd4ddfaab3227"},"previous_names":["rishang/install-releases"],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishang%2Finstall-release","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishang%2Finstall-release/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishang%2Finstall-release/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishang%2Finstall-release/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rishang","download_url":"https://codeload.github.com/Rishang/install-release/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247289409,"owners_count":20914464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","darwin","github","go","golang","install-release","installer","linux","package-manager","python","release","releases","shell","ubuntu"],"created_at":"2024-11-16T10:10:50.517Z","updated_at":"2025-04-05T05:03:18.565Z","avatar_url":"https://github.com/Rishang.png","language":"Python","readme":"\u003ch1 align=\"center\"\u003e\n  🚀 Install Release \n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://shields.io/\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Python-3.8_to_3.13-xx.svg\" alt=\"Python Version\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://pepy.tech/project/install-release\"\u003e\n    \u003cimg src=\"https://static.pepy.tech/personalized-badge/install-release?period=total\u0026units=international_system\u0026left_color=black\u0026right_color=orange\u0026left_text=Downloads\" alt=\"Downloads\" /\u003e\n  \u003c/a\u003e\n\u003cp\u003e\n\n**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.\n\nThis can be any tool you want to install, which is pre-compiled for your device and present on GitHub or GitLab releases.\n\n\u003e INFO: It's mainly for installing tools that are not directly available officially by package managers like `apt, yum, pacman, brew` etc.\n\n\u003c!-- Table of content --\u003e\n\n## Table of Contents 📚\n\n- [Table of Contents 📚](#table-of-contents-)\n- [Getting started ⚡](#getting-started-)\n- [Prerequisites 📋](#prerequisites-)\n- [Install `install-release` package 📦](#install-install-release-package-)\n- [Updating `install-release` 🔄](#updating-install-release-)\n- [Example usage `ir --help` 💡](#example-usage-ir---help-)\n    - [Install completion for cli 🎠](#install-completion-for-cli-)\n    - [Install tool from GitHub/GitLab releases 🌈](#install-tool-from-githubgitlab-releases-)\n    - [List installed tools 📋](#list-installed-tools-)\n    - [Remove installed release ❌](#remove-installed-release-)\n    - [Update all previously installed tools to the latest version 🕶️](#update-all-previously-installed-tools-to-the-latest-version-️)\n    - [Pull state templates for installing tools 📄](#pull-state-templates-for-installing-tools-)\n    - [Hold Update to specific installed tool ✋](#hold-update-to-specific-installed-tool-)\n    - [Config tool installation path 🗂️](#config-tool-installation-path-️)\n    - [Config updates for pre-release versions 🔌](#config-updates-for-pre-release-versions-)\n    - [Configure GitHub/GitLab tokens for higher rate limit 🔑](#configure-githubgitlab-tokens-for-higher-rate-limit-)\n\n## Getting started ⚡\n\n```bash\n# Install ir\npip install -U install-release\n```\n\nExample Installation a tool named [deno](https://github.com/denoland/deno)(A modern runtime for JavaScript and TypeScript) directly from its GitHub releases.\n\n```bash\n# ir get [GITHUB-URL or GITLAB-URL]\n\n# Example install deno tool from github\n❯ ir get https://github.com/denoland/deno\n\n# Or for GitLab repositories\n\n# Example install glab tool from gitlab\n❯ ir get https://gitlab.com/gitlab-org/cli -n glab\n```\n\n![demo](https://raw.githubusercontent.com/Rishang/install-release/main/.github/images/demo.png)\n\nChecking for deno is installed by `install-release`:\n\n```\n❯ which deno\n~/bin/deno\n\n❯ deno --version\ndeno 1.46.3 (stable, release, x86_64-unknown-linux-gnu)\nv8 12.9.202.5-rusty\ntypescript 5.5.2\n```\n\n## Prerequisites 📋\n\n- python3.8 or higher\n\n- [libmagic](https://github.com/ahupp/python-magic#installation)\n- Default releases Installation Path is: `~/bin/`,\n  This is the path where installed tools will get stored.\n\n- In order to run installed tools, you need to add the following line to your `~/.bashrc` or `~/.zshrc` file:\n\n```bash\nexport PATH=$HOME/bin:$PATH\n```\n\n## Install `install-release` package 📦\n\n```bash\npip install -U install-release\n```\n\n## Updating `install-release` 🔄\n\nFor seeing version:\n\n```bash\nir me --version\n```\n\nFor updating:\n\n```bash\nir me --upgrade\n```\n\n## Example usage `ir --help` 💡\n\n```\n# Help page\n\n❯ ir --help\nUsage: ir [OPTIONS] COMMAND [ARGS]...\n\n  GitHub Release Installer, based on your system\n\n  Commands:\n    get      | Install GitHub/GitLab release, cli tool\n    ls       | list all installed releases, cli tools\n    rm       | remove any installed release, cli tools\n    upgrade  | Upgrade all installed releases, cli tools\n    state    | show currently stored state\n    config   | Set configs for tool\n    pull     | Install tools from a remote state\n    hold     | Keep updates a tool on hold.\n    me       | Update ir tool.\n```\n\nFor sub-command help use: `ir \u003csub-command\u003e --help`\n\nExample: `ir get --help`\n\n#### Install completion for cli 🎠\n\n```bash\n# ir --install-completion [SHELL: bash|zsh|fish|powershell]\n# Example for zsh:\nir --install-completion zsh\n```\n\n#### Install tool from GitHub/GitLab releases 🌈\n\n```bash\n❯ ir get \"https://github.com/ahmetb/kubectx\"\n\n📑 Repo     : ahmetb/kubectx\n🌟 Stars    : 13295\n✨ Language : Go\n🔥 Title    : Faster way to switch between clusters and namespaces in kubectl\n\n                              🚀 Install: kubectx\n┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━┓\n┃ Name    ┃ Selected Item                      ┃ Version ┃ Size Mb ┃ Downloads ┃\n┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━┩\n│ kubectx │ kubectx_v0.9.4_linux_x86_64.tar.gz │ v0.9.4  │ 1.0     │ 43811     │\n└─────────┴────────────────────────────────────┴─────────┴─────────┴───────────┘\nInstall this tool (Y/n): y\n INFO     Downloaded: 'kubectx_v0.9.4_linux_x86_64.tar.gz' at /tmp/dn_kubectx_ph6i7dmk                                                               utils.py:159\n INFO     install /tmp/dn_kubectx_ph6i7dmk/kubectx /home/noobi/bin/kubectx                                                                  core.py:132\n INFO     Installed: kubectx\n```\n\n```\n# checking if kubectx is installed\n❯ which kubectx\n/home/noobi/bin/kubectx\n\n❯ kubectx --version\n0.9.4\n```\n\n#### List installed tools 📋\n\n```bash\n❯ ir ls\n\n                       Installed tools\n┏━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n┃ Name      ┃ Version ┃ Url                                  ┃\n┡━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n│ terrascan │ v1.15.2 │ https://github.com/tenable/terrascan │\n│ gron      │ v0.7.1  │ https://github.com/tomnomnom/gron    │\n│ kubectx   │ v0.9.4  │ https://github.com/ahmetb/kubectx    │\n└───────────┴─────────┴──────────────────────────────────────┘\n```\n\n#### Remove installed release ❌\n\n```bash\n# Remove installed release\n\n❯ ir rm gron\n\nINFO     Removed: gron\n```\n\n#### Update all previously installed tools to the latest version 🕶️\n\n```bash\n❯ ir upgrade\n\nFetching: https://github.com/tenable/terrascan#terrascan\nFetching: https://github.com/ahmetb/kubectx#kubectx\n\nFollowing tools will be upgraded:\n\nterrascan\n\nUpgrade these tools, (Y/n): y\n\nUpdating: terrascan, v1.15.0 =\u003e v1.15.2\n INFO     Downloaded: 'terrascan_1.15.2_Linux_x86_64.tar.gz' at /tmp/dn_terrascan_0as71a6v\n INFO     install /tmp/dn_terrascan_0as71a6v/terrascan ~/bin/terrascan\n INFO     Installed: terrascan\n\nProgress... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00\n```\n\n#### Pull state templates for installing tools 📄\n\nYou can push your state to somewhere like GitHub and use it for any other device, to make a sync for tools installed via ir\n\n```bash\n❯ ir pull --url https://raw.githubusercontent.com/Rishang/dotFiles/main/templates/install-release/state.json\n```\n\n#### Hold Update to specific installed tool ✋\n\nIn 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.\n\nExample: keep tool named [k9s](https://github.com/derailed/k9s) update on hold\n\n```bash\n❯ ir hold k9s\n INFO     Update on hold for, k9s to True\n```\n\nYou can list tools on hold updates by `ls --hold` command\n\n```bash\n❯ ir ls --hold\n             Installed tools kept on hold\n┏━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n┃ Name ┃ Version ┃ Url                               ┃\n┡━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n│ k9s  │ v0.26.7 │ https://github.com/derailed/k9s   │\n└──────┴─────────┴───────────────────────────────────┘\n```\n\nIn 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.\n\n```\n❯ ir hold --unset k9s\n INFO     Update on hold for, k9s to False\n```\n\n#### Config tool installation path 🗂️\n\n```bash\n❯ ir config --path ~/.local/bin\n\nINFO   updated path to:  ~/.local/bin\nINFO   Done\n```\n\n#### Config updates for pre-release versions 🔌\n\nThis 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.\n\n```bash\n❯ ir config --pre-release\n```\n\n#### Configure GitHub/GitLab tokens for higher rate limit 🔑\n\nFor GitHub:\n```bash\n❯ ir config --token [your github token]\n\nINFO: Updated GitHub token\nINFO: Done.\n```\n\nFor GitLab:\n```bash\n❯ ir config --gitlab-token [your gitlab token]\n\nINFO: Updated GitLab token\nINFO: Done.\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishang%2Finstall-release","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frishang%2Finstall-release","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishang%2Finstall-release/lists"}