A version manager for all binaries.

I couldn't find a solution like this that also worked on Windows. Do you know something? If so, please stop me so I don't waste my time.
It's not recommended to try this out yet as there are no public binary manifest files, but if you want to:
bvm via cargo—cargo install bvm.C:\Users\<user-name>\AppData\Local\bvm\bvm\bin~/.local/share/bvm/binjsonc
{
"binaries": [
// these don't exist anywhere at the moment except on my machine (again, proof of concept)
"http://localhost:8000/deno-1.3.1.json",
"http://localhost:8000/dprint-0.9.0.json"
]
}
bvm installbvm installAdds the binaries in the current configuration file to the path then downloads & installs them.
bvm install <url>Installs a binary at the specified manifest file.
bvm use [binary name] [version]Uses the specified binary name and version globally.
The binary and version must have been previously installed.
bvm resolve [binary name]Resolves the executable path of the specified binary using the provided arguments based on the current working directory.
This command is used by the created shell/batch files to tell how to resolve the file.
bvm uninstall [binary name] [version]Uninstalls the specified binary name and version.
At the moment, it looks like this:
json
{
"schemaVersion": 1,
"name": "deno",
"group": "denoland",
"version": "1.3.1",
"windows": {
"archive": "https://github.com/denoland/deno/releases/download/v1.3.1/deno-x86_64-pc-windows-msvc.zip",
"binaryPath": "deno.exe",
"postExtract": "# this is the post extract script where you can run some commands if necessary to cause additional setup"
},
"linux": {
"archive": "https://github.com/denoland/deno/releases/download/v1.3.1/deno-x86_64-unknown-linux-gnu.zip",
"binaryPath": "deno"
},
"mac": {
"archive": "https://github.com/denoland/deno/releases/download/v1.3.1/deno-x86_64-apple-darwin.zip",
"binaryPath": "deno"
}
}
High priority:
bvm use denoland/deno 1.3.1 or bvm use name-stealer/deno 1.2.0)bvm use deno path?).
whereis -b deno/where deno)Others:
jsonc
{
"binaries": [
// I don't know... maybe something like this
{
"manifest": "http://localhost:8000/deno-1.3.1.json",
"version": "^1.3.0"
}
]
}
npm run <script-name>? Or is that out of scope?bvm list - Lists the installed binaries.bvm upgrade <binary name> - Upgrade to the latest version (requires binary manifest file to specify a global manifest file)bvm resolve (ex. bvm resolve deno 1.3.1)deno2)
--force on bvm install <url> if already installed.bvm clear-url-cache - Clear the url caches, but not the binary caches.bvm exec deno 1.2.0 -V or perhaps at the shim level deno -V --bvm-use-version 1.2.0... or maybe this should use bvm resolve somehow.Probably unnecessary complexity:
bvm use <url> - To use a specific version of a binary globally via a url.