back to home

devops-works / binenv

One binary to rule them all. Manage all those pesky binaries (kubectl, helm, terraform, ...) easily.

View on GitHub
405 stars
47 forks
21 issues
GoMakefileShell

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing devops-works/binenv in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/devops-works/binenv)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

binenv The last binary you'll ever install. • binenv • What • Quick start • Linux (bash/zsh) • MacOS (with bash) • Windows • FreeBSD (bash/zsh) • OpenBSD (bash/zsh) • Install • User install • Updating binenv • Supported "distributions" • Usage • Updating available distributions versions • Updating versions using a token • Update available distributions • Examples • Searching distributions • Installing new versions • Examples • Listing versions • Examples • Freezing versions • Uninstalling versions • Examples • Completion • Expanding binary absolute path • Example • Upgrading all installed distributions • Selecting versions • Version selection process • Install versions form .binenv.lock • Example • Adding versions to • Environment variables • Removing binenv stuff • Status • FAQ • I installed a binary but is still see the system (or wrong) version • After installing a distribution, I get a "shim: no such file or directory" • It does not work with sudo ! • I don't like binenv, are there alternatives ? • Distributions file format • Distributions file reference • Distributions file example • Caveats • Contributions • Licence What will help you download, install and manage the binaries programs (we call them "distributions") you need in you everyday DevOps life (e.g. kubectl, helm, ...). Think of it as a + + + ... Now you can install your favorite utility just by typing . Quick start See System-wide installation for system-wide installations (a.k.a. global mode). Linux (bash/zsh) MacOS (with bash) Windows binenv does not support windows. FreeBSD (bash/zsh) If you are using a different shell, skip adding completion to your file. To be able to verify checksums, you have to install the package. OpenBSD (bash/zsh) If you are using a different shell, skip adding completion to your file. Install User install • download a suitable (yes, but wait !) for your architecture/OS at http://github.com/devops-works/binenv/releases. • rename it • make it executable • execute an update • now install with (so meta) • you can now remove the downloaded file • prepend to your path in your or or ... • while you're at it, install the completion (replace with your shell) • "restart" your shell See a walkthough on asciinema.org: Updating binenv Just run This is the whole point. Supported "distributions" For the whole list of supported binaries (a.k.a. distributions), see DISTRIBUTIONS.md. The always up-to-date list is here. The list can be generated as markdown using . Open an issue (or send a PR) if you need one that is not in the list. Usage Updating available distributions versions In order to update the list of installable version for distributions, you need to update the version list (usually located in or ). This is done automatically when invoking . Without arguments, it will fetch the cache from this repo. This cache is generated automatically daily. Using the argument, will retrieve available versions for _all_ distributions (watch out for Github API rate limits, but see below). With a distribution passed as an argument (e.g. ), it will only update installable versions for . When updating the cache, you can control fetch concurrency using the flag. It defaults to 8 which is already pretty high. Do go crazy. This setting is mainly used to set a lower concurrency and be nice to GitHub. Note that Github enforces rate limits (e.g. 60 unauthenticated API requests per hours). So you should update all distributions (e.g. ) with caution. will stop updating distributions when you only have 4 unauthenticated API requests left. GitHub tokens are also supported to avoid being rate-limited and fetch releases from their respective sources. Updating versions using a token To avoid being rate limited, you can also use a personal access token. • go to Settings/Personal Access Tokens/New personal access token • click "Generate token" To use the token, just export it in the GITHUB_TOKEN environment variable: Update available distributions Distributions are maintained in this file. To benefit from new additions, you need to update the distribution list from time to time. This list is usually located in your home directory under (often ). To update only distributions: To update distributions **and** their versions: Using custom distributions file (and private GitLab repos) If you want to use a custom distributions file, you can add a file in the directory (often ). This file will be merged with the default distributions file. Note that files are evaluated in lexicographical order, so if you want to override a default, you should name your file accordingly. You can use this mechanism to install binaries from private GitLab repositories (GitHub not supported right now). If you need to pass a in the headers, you need to set the key in the and sections. This key should contain the name of the environment variable that is set with the token. Here is an example file: You will have to before running to make the token available. Examples • : update available versions for all distributions from github cache • : update available versions for all distributions from all releases • : update available distributions • : update available versions for and Searching distributions The command lets you search a distribution by name or description: Installing new versions After updating the list, you might want to install a shiny new version. No problem, has you covered. If you want the latest non-prerelease version for something, just run: If you want a specific version: Note that completion works, so don't be afraid to use it. You can also install several distribution versions at the same time: Using the flag (a.k.a ) will show what would be installed. Examples • : install latest non-prerelease • : install version 1.18.8 • : install version 1.18.8 and 3.3.0 Listing versions You can list available, installed and activated distribution versions using . When invoked without ar…