![huber](images/huber_logo.png)
Huber is a command-line interface tool for managing packages from GitHub repositories. It allows you to install, update, and manage packages from GitHub repository releases in a simple and efficient way.
What features does Huber provide?
- Manage (install, update, uninstall, show, current) multiple version packages from GitHub repository releases
- Search popular GitHub repositories that Huber manages in a curated list
- Lock and unlock installed package versions
- Save and restore package versions
- and more..., please check the documentation for more details
note
This documentation is for the version starting from 1.0.0. If you are using older versions, suggest upgrading to the latest version.
Installation
Huber is supported on Linux, macOS, and Windows platforms.
- Linux (x86_64/amd64, aarch64/arm64, arm)
- MacOS (x86_64/amd64, aarch64/arm64)
- Windows (x86_64/amd64)
You can install Huber via the following methods:
Cargo:
$ cargo install huber
Shell script:
$ curl -sfSL https://raw.githubusercontent.com/innobead/huber/main/hack/install.sh | sh -
PowerShell:
. { iwr -useb https://raw.githubusercontent.com/innobead/huber/main/hack/windows/install.ps1 } | iex; install
Precompiled binaries:
Download Huber executables from GitHub releases
Getting Started
After installing Huber, you can start using it by running the huber
command.
$ huber --help
Huber, simplify GitHub package management
Usage: huber [OPTIONS] <COMMAND>
Commands:
config Manage Huber configurations
current Update the current package versions
completions Show command completions for the specified shell
flush Remove outdated installed artifacts
info Show package information
install Install packages
repo Manage repositories
reset Reset Huber
search Search package
self-update Update huber
show Show installed packages
uninstall Uninstall packages
update Updates the installed packages
save Save the installed package list to a file
load Load installed packages from a file generated by save command
lock Lock packages or Show locked packages
unlock Unlock packages
help Print this message or the help of the given subcommand(s)
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
-V, --version
Print version
Search and install a package:
$ huber search k9s
Name Description Source
k9s πΆ Kubernetes CLI To Manage Your Clusters In Style! https://github.com/derailed/k9s
$ huber install k9s
[INFO ] k9s version not specified, getting the latest version (v0.32.7)
[INFO ] Installing package k9s@latest/v0.32.7
[INFO ] Downloading https://github.com/derailed/k9s/releases/download/v0.32.7/k9s_Linux_amd64.tar.gz
[INFO ] Installed executables of k9s:
[
"/home/davidko/.huber/bin/k9s",
]
[INFO ] k9s@latest/v0.32.7 installed
$ k9s version
____ __.________
| |/ _/ __ \______
| < \____ / ___/
| | \ / /\___ \
|____|__ \ /____//____ >
\/ \/
Version: v0.32.7
Commit: 6b5d24f5741a1789fb97ba3e11f0ee868d93459d
Date: 2024-11-16T20:22:28Z
For frequently used and advanced commands, please check the corresponding sections.
License
The Huber source and documentation are released under the Apache License v2.0.
The install
Command
The install
command installs packages. You can specify the package name and version to install, install multiple packages at once, install the latest version of a package without specifying the version, and install packages from a file generated by the load command.
$ huber install --help
Install packages
Usage: huber install [OPTIONS] <NAME_VERSION>...
Arguments:
<NAME_VERSION>... Package name (e.g. 'package-name' or 'package-name@version')
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--prefer-stdlib <PREFER_STDLIB>
Prefer standard library (only for Linux or Windows) [possible values: gnu, musl, msvc]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Install a package
$ huber install k9s
[INFO ] k9s version not specified, getting the latest version (v0.32.7)
[INFO ] Installing package k9s@latest/v0.32.7
[INFO ] Downloading https://github.com/derailed/k9s/releases/download/v0.32.7/k9s_Linux_amd64.tar.gz
[INFO ] Installed executables of k9s:
[
"/home/davidko/.huber/bin/k9s",
]
[INFO ] k9s@latest/v0.32.7 installed
$ huber install k9s@v0.32.5
[INFO ] Installing package k9s@v0.32.5
[INFO ] Downloading https://github.com/derailed/k9s/releases/download/v0.32.5/k9s_Linux_amd64.tar.gz
[INFO ] Installed executables of k9s:
[
"/home/davidko/.huber/bin/k9s",
]
[INFO ] k9s@v0.32.5 installed
$ huber show
Name Version Current Kind
k9s v0.32.5 true Release
$ huber show --all
Name Version Current Kind
k9s v0.32.7 false Release
k9s v0.32.5 true Release
Install multiple packages
$ huber install k9s kubectl
[INFO ] kubectl version not specified, getting the latest version (v1.32.1)
[INFO ] Installing package kubectl@latest/v1.32.1
[INFO ] k9s version not specified, getting the latest version (v0.32.7)
[INFO ] Installing package k9s@latest/v0.32.7
[INFO ] Installed executables of k9s:
[
"/home/davidko/.huber/bin/k9s",
]
[INFO ] k9s@latest/v0.32.7 installed
[INFO ] Installed executables of kubectl:
[
"/home/davidko/.huber/bin/kubectl",
]
[INFO ] kubectl@latest/v1.32.1 installed
The info
Command
The info
command shows package information.
$ huber info --help
Shows package information
Usage: huber info [OPTIONS] <NAME>
Arguments:
<NAME> Package name
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Show package information
$ huber info k9s
Name Version Source Targets
k9s v0.32.7 Github: - LinuxAmd64:
owner: derailed artifact_templates:
repo: k9s - k9s_Linux_amd64.tar.gz
- LinuxArm64:
artifact_templates:
- k9s_Linux_arm64.tar.gz
- MacOSAmd64:
artifact_templates:
- k9s_Darwin_amd64.tar.gz
- MacOSArm64:
artifact_templates:
- k9s_Darwin_arm64.tar.gz
- WindowsAmd64:
artifact_templates:
- k9s_Windows_amd64.zip
The search
Command
The search
command searches for a package by name or regex pattern.
$ huber search --help
Search package
Usage: huber search [OPTIONS] [NAME]
Arguments:
[NAME] Package name or regex search with --pattern
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--pattern
Regex search
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--owner <OWNER>
Package owner
--all
Show all the released versions
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Search packages by pattern
$ huber search --pattern wasm
Name Description Source
rustwasmc Tool for building Rust functions for Node.js. Combine the performance of Rust, safety and portabilit... https://github.com/second-state/rustwasmc
wasm-to-oci Use OCI registries to distribute Wasm modules https://github.com/engineerd/wasm-to-oci
wasme Web Assembly tools and SDKs for extending cloud-native infrastructure https://github.com/solo-io/wasm
wasmer π Fast, secure, lightweight containers based on WebAssembly https://github.com/wasmerio/wasmer
wasmtime A lightweight WebAssembly runtime that is fast, secure, and standards-compliant https://github.com/bytecodealliance/wasmtime
Search a package by name. Using the --all
flag to show all the released versions.
$ huber search wasmtime
Name Description Source
wasmtime A lightweight WebAssembly runtime that is fast, secure, and standards-compliant https://github.com/bytecodealliance/wasmtime
$ huber search wasmtime --all
Version Kind
dev PreRelease
v29.0.1 Release
v29.0.0 Release
v28.0.1 Release
v28.0.0 Release
v27.0.0 Release
v26.0.1 Release
v26.0.0 Release
v25.0.3 Release
v25.0.2 Release
v25.0.1 Release
v25.0.0 Release
v24.0.2 Release
v24.0.1 Release
v24.0.0 Release
...
The show
Command
The show
command shows installed packages.
$ huber show --help
Show installed packages
Usage: huber show [OPTIONS] [NAME]
Arguments:
[NAME] Package name
Options:
--all
Show all the installed versions
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--detail
Show the detailed artifact info
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Show installed packages
```console
$ huber show --all
Name Version Current Kind
k9s v0.32.7 true Release
k9s v0.32.5 false Release
The uninstall
Command
The uninstall
command uninstalls packages.
$ huber uninstall --help
Uninstall packages
Usage: huber uninstall [OPTIONS] [NAME]...
Arguments:
[NAME]... Package name
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Uninstall multiple packages
$ huber uninstall k9s kubectl
[INFO ] Uninstalling k9s
[INFO ] Uninstalled k9s
[INFO ] Uninstalling kubectl
[INFO ] Uninstalled kubectl
The update
Command
The update
command updates the installed packages.
$ huber update --help
Updates the installed packages
Usage: huber update [OPTIONS] [NAME]...
Arguments:
[NAME]... Package name
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--prefer-stdlib <PREFER_STDLIB>
Prefer standard library (only for Linux or Windows) [possible values: gnu, musl, msvc]
--dryrun
Dry run to show available updates
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Update the installed packages
$ huber install k9s@v0.32.5 kubectl@v1.31.0
[INFO ] Installing package k9s@v0.32.5
[INFO ] Installing package kubectl@v1.31.0
[INFO ] Installed executables of k9s:
[
"/home/davidko/.huber/bin/k9s",
]
[INFO ] k9s@v0.32.5 installed
[INFO ] Installed executables of kubectl:
[
"/home/davidko/.huber/bin/kubectl",
]
[INFO ] kubectl@v1.31.0 installed
$ huber update
[INFO ] Checking for updates for k9s. The latest installed version is v0.32.5
[INFO ] Checking for updates for kubectl. The latest installed version is v1.31.0
[INFO ] Found the latest version of kubectl: v1.32.1
[INFO ] Updating package kubectl from v1.31.0 to v1.32.1
[INFO ] Updating kubectl (version: v1.31.0, source: github) to kubectl (version: v1.32.1, source: github)
[INFO ] Found the latest version of k9s: v0.32.7
[INFO ] Updating package k9s from v0.32.5 to v0.32.7
[INFO ] Updating k9s (version: v0.32.5, source: github) to k9s (version: v0.32.7, source: github)
[INFO ] Installed executables of kubectl:
[
"/home/davidko/.huber/bin/kubectl",
]
[INFO ] Package kubectl updated to v1.32.1 successfully
[INFO ] Installed executables of k9s:
[
"/home/davidko/.huber/bin/k9s",
]
[INFO ] Package k9s updated to v0.32.7 successfully
The config
Command
The config
command manages Huber configurations including log level, GitHub token, GitHub SSH key, Huber directory, and GitHub base URI. If you want to use Huber behind a proxy, you can set the proxy server to serve the GitHub base URI.
$ huber config --help
Manages huber configurations
Usage: huber config [OPTIONS] <COMMAND>
Commands:
show Show Huber configurations
save Save Huber configurations via global options
help Print this message or the help of the given subcommand(s)
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
The config show
Command
The config show
command shows Huber configurations.
$ huber config show --help
Show Huber configurations
Usage: huber config show [OPTIONS]
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
The config save
Command
The config save
command saves Huber configurations via global options.
$ huber config save --help
Save Huber configurations via global options
Usage: huber config save [OPTIONS]
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
The current
Command
The current
command updates the current package versions if there are multiple versions of the same package installed.
$ huber current --help
Update the current package versions
Usage: huber current [OPTIONS] <NAME_VERSION>...
Arguments:
<NAME_VERSION>... Package name with version (e.g. 'package-name@version')
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Update the current package version
$ huber show --all
Name Version Current Kind
k9s v0.32.7 true Release
k9s v0.32.5 false Release
$ huber current k9s@v0.32.5
[INFO ] Updating the current version of k9s to v0.32.5
[INFO ] k9s@v0.32.5 is now the current version
$ huber show --all
Name Version Current Kind
k9s v0.32.7 false Release
k9s v0.32.5 true Release
The completions
Command
The completions
command shows command completions for the specified shell. It is useful for setting up command completions for Huber.
$ huber completions --help
Show command completions for the specified shell
Usage: huber completions [OPTIONS] <SHELL>
Arguments:
<SHELL> Shell name [possible values: bash, elvish, fish, powershell, zsh]
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
The flush
Command
The flush
command removes outdated installed artifacts to free up disk space.
Remove outdated installed artifacts
Usage: huber flush [OPTIONS]
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Flush outdated installed (non-current) artifacts
$ huber show --all
Name Version Current Kind
k9s v0.32.7 false Release
k9s v0.32.5 true Release
$ huber flush
[INFO ] Removing k9s (version: v0.32.7, source: github)
[INFO ] k9s (version: v0.32.7, source: github) removed
$ huber show --all
Name Version Current Kind
k9s v0.32.5 true Release
The repo
Command
The repo
command allows you to manage repositories. Huber includes a default repository with a curated list of packages, but you can also add your own repositories to install packages from them.
$ huber repo --help
Manage repositories
Usage: huber repo [OPTIONS] <COMMAND>
Commands:
add Add a new repo
remove Remove a repo
show Show all repos
help Print this message or the help of the given subcommand(s)
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
The repo add
Command
The repo add
command adds a new repository using the URL or file path of the Huber package index file.
$ huber repo add --help
Add a new repository
Usage: huber repo add [OPTIONS] --url <URL> --file <FILE> <NAME>
Arguments:
<NAME> Repo name
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--url <URL>
URL of the Huber package index file
--file <FILE>
File path of the Huber package index file
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
The index file is a YAML file that contains the list of packages as the below example:
- name: aichat
description: All-in-one LLM CLI tool featuring Shell Assistant, Chat-REPL, RAG, AI Tools & Agents, with access to OpenAI, Claude, Gemini, Ollama, Groq, and more.
source: !Github
owner: sigoden
repo: aichat
targets:
- !LinuxAmd64
artifact_templates:
- 'aichat-v{version}-x86_64-unknown-linux-musl.tar.gz'
The repo remove
Command
The repo remove
command removes a repository.
Remove a repository
Usage: huber repo remove [OPTIONS] [NAME]...
Arguments:
[NAME]... Repo names
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
The repo show
Command
The repo show
command shows all repositories.
$ huber repo show --help
Show all repositories
Usage: huber repo show [OPTIONS]
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Add a new repository via a file
$ huber repo add --url https://raw.githubusercontent.com/innobead/huber/refs/heads/main/docs/src/cmd/repo/huber.yaml self-hosted
[INFO ] Adding repo self-hosted
[INFO ] Repo self-hosted added
$ huber repo show
Name Url File
self-hosted https://raw.githubusercontent.com/innobead/huber/refs/heads/main/docs/src/cmd/repo/huber.yaml
$ huber search aichat --repo self-hosted
Name Description Source
aichat All-in-one LLM CLI tool featuring Shell Assistant, Chat-REPL, RAG, AI Tools & Agents, with access to... https://github.com/sigoden/aichat
The reset
Command
The reset
command resets Huber to its initial state.
$ huber reset --help
Reset Huber
Usage: huber reset [OPTIONS]
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Reset Huber
$ huber install k9s
[INFO ] k9s version not specified, getting the latest version (v0.32.7)
[INFO ] Installing package k9s@latest/v0.32.7
[INFO ] Installed executables of k9s:
[
"/home/davidko/.huber/bin/k9s",
]
[INFO ] k9s@latest/v0.32.7 installed
$ huber reset
[INFO ] Resetting Huber by removing created caches, downloaded files and installed packages
[INFO ] Huber reset
$ huber show
[INFO ] No packages installed
The self-update
Command
The self-update
command updates Huber if a new version is available.
$ huber self-update --help
Update huber
Usage: huber self-update [OPTIONS]
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--prefer-stdlib <PREFER_STDLIB>
Prefer standard library (only for Linux or Windows) [possible values: gnu, musl, msvc]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
The save
Command
The save
command saves the installed package list to a file which can be used by the load command.
$ huber save --help
Save the installed package list to a file
Usage: huber save [OPTIONS]
Options:
--file <FILE>
File path to save the installed package list [default: huber-packages.txt]
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Save the installed package list
$ huber save --file output.txt
[INFO ] Collecting installed current packages
[INFO ] Saving the package list to output.txt
[INFO ] Saved the package list to /home/davidko/github/innobead/huber/output.txt
$ cat output.txt
k9s@v0.32.7
The load
Command
The load
command reads the package list from a file generated by the save command and installs the packages.
$ huber load --help
Load installed packages from a file generated by save command
Usage: huber load [OPTIONS]
Options:
--file <FILE>
Load a package list to install [default: huber-packages.txt]
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Load installed packages from a file
$ huber load --file output.txt
[INFO ] Loading packages from output.txt
[INFO ] Loaded packages: total 1: [
"k9s@v0.32.7",
]
[INFO ] Installing packages: total 1
[INFO ] Installing package k9s@v0.32.7
[INFO ] Installed executables of k9s:
[
"/home/davidko/.huber/bin/k9s",
]
[INFO ] k9s@v0.32.7 installed
[INFO ] Installed packages: total 1
The lock
Command
The lock
command allows you to lock packages or display locked packages. When a package is locked, it will not be updated by the huber update
command if its version is equal to or lower than the locked version requirement.
The package locking uses Cargo's version requirement format.
the locked version.
```console
$ huber lock --help
Lock packages or Show locked packages
Usage: huber lock [OPTIONS] [NAME_VERSION]... [COMMAND]
Commands:
show Show locked versions
help Print this message or the help of the given subcommand(s)
Arguments:
[NAME_VERSION]... Package name (e.g. 'package-name', 'package-name@semver' or 'package-name@<semver-requirement>' using Cargo's dependency version requirement format)
Options:
--all
Lock all installed `current` packages
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--caret-required
Treat version requirement as a caret requirement if no version requirement is specified
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--tilde-required
Treat version requirement as a tilde requirement if no version requirement is specified
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
The lock show
Command
The lock show
command shows locked packages and their locked version requirements.
$ huber lock show --help
Usage: huber lock show [OPTIONS]
Options:
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Lock a package:
$ huber install k9s@v0.32.5
[INFO ] Installing package k9s@v0.32.5
[INFO ] Installed executables of k9s:
[
"/home/davidko/.huber/bin/k9s",
]
[INFO ] k9s@v0.32.5 installed
$ huber lock k9s@=0.32.5
[INFO ] Locking packages
[INFO ] Locking package k9s@=0.32.5
[INFO ] Packages locked successfully: {
"k9s": "=0.32.5",
}
$ huber lock show
Name Version
k9s =0.32.5
$ huber update k9s
[INFO ] Checking for updates for k9s. The latest installed version is v0.32.5
[INFO ] Found the latest version of k9s: v0.32.7
[WARN ] Package k9s is locked to version =0.32.5. Skipping update to v0.32.7
$ huber install k9s@v0.32.7
[WARN ] Package k9s is locked to version =0.32.5. Skipping installing v0.32.7
The unlock
Command
The unlock
command unlocks packages.
$ huber unlock --help
Unlock packages
Usage: huber unlock [OPTIONS] <NAME>...
Arguments:
<NAME>... Package name
Options:
--all
Unlock all the locked packages
-l, --log-level <LOG_LEVEL>
Log level [default: OFF]
--github-token <GITHUB_TOKEN>
GitHub token; Optional until reaching the rate limit of GitHub API [env: GITHUB_TOKEN=]
--github-key <GITHUB_KEY>
Github SSH key path; Optional, if you want to use SSH to clone the Huber repository [env: GITHUB_KEY=]
--huber-dir <HUBER_DIR>
Huber directory [default: /home/davidko/.huber]
--github-base-uri <GITHUB_BASE_URI>
GitHub base URI [env: GITHUB_BASE_URI=] [default: https://api.github.com]
-h, --help
Print help
Examples
Unlock all the locked packages
$huber lock k9s
[INFO ] Locking packages
[INFO ] Locking package k9s@=0.32.5
[INFO ] Packages locked successfully: {
"k9s": "0.32.5",
}
$ huber unlock --all
[INFO ] Unlocking packages
[INFO ] Unlocking all packages
[INFO ] Unlocked packages
$ huber lock show
[INFO ] No packages locked
Huber Managed Packages
This package list is generated by huber search
using the default Huber package repository.
To add a new package, please follow the instructions in Add a New Package.
Name Description Source
ali Generate HTTP load and plot the results in real-time https://github.com/nakabonne/ali
argocd Declarative Continuous Deployment for Kubernetes https://github.com/argoproj/argo-cd
arkade Open Source Marketplace For Developer Tools https://github.com/alexellis/arkade
asdf Extendable version manager with support for Ruby, Node.js, Elixir, Erlang {value} more https://github.com/asdf-vm/asdf
axelard Axelar: A Decentralized Blockchain Interoperability Network https://github.com/axelarnetwork/axelar-core
bat A cat(1) clone with wings. https://github.com/sharkdp/bat
bottom Yet another cross-platform graphical process/system monitor. https://github.com/ClementTsang/bottom
buf The best way of working with Protocol Buffers. https://github.com/bufbuild/buf
bun Incredibly fast JavaScript runtime, bundler, test runner, and package manager β all in one https://github.com/oven-sh/bun
camel-k Apache Camel K is a lightweight integration platform, born on Kubernetes, with serverless superpower... https://github.com/apache/camel-k
chisel A fast TCP/UDP tunnel over HTTP https://github.com/jpillora/chisel
choose A human-friendly and fast alternative to cut and (sometimes) awk https://github.com/theryangeary/choose
cloak A censorship circumvention tool to evade detection by authoritarian state adversaries https://github.com/cbeuw/Cloak
codeql Binaries for the CodeQL CLI https://github.com/github/codeql-cli-binaries
compose Define and run multi-container applications with Docker https://github.com/docker/compose
conftest Write tests against structured configuration data using the Open Policy Agent Rego query language https://github.com/open-policy-agent/conftest
consul Consul is a distributed, highly available, and data center aware solution to connect and configure a... https://github.com/hashicorp/consul
containerd An open and reliable container runtime https://github.com/containerd/containerd
copilot-cli The AWS Copilot CLI is a tool for developers to build, release and operate production ready containe... https://github.com/aws/copilot-cli
coreutils Cross-platform Rust rewrite of the GNU coreutils https://github.com/uutils/coreutils
cosign Code signing and transparency for containers and binaries https://github.com/sigstore/cosign
croc Easily and securely send things from one computer to another :crocodile: :package: https://github.com/schollz/croc
ctlptl Making local Kubernetes clusters fun and easy to set up https://github.com/tilt-dev/ctlptl
czkawka Multi functional app to find duplicates, empty folders, similar images etc. https://github.com/qarmin/czkawka
dasel Select, put and delete data from JSON, TOML, YAML, XML and CSV files with a single tool. Supports co... https://github.com/TomWright/dasel
delta A syntax-highlighting pager for git, diff, grep, and blame output https://github.com/dandavison/delta
deno A modern runtime for JavaScript and TypeScript. https://github.com/denoland/deno
direnv unclutter your .profile https://github.com/direnv/direnv
dive A tool for exploring each layer in a docker image https://github.com/wagoodman/dive
doctl The official command line interface for the DigitalOcean API. https://github.com/digitalocean/doctl
dog A command-line DNS client. https://github.com/ogham/dog
dolt Dolt β Git for Data https://github.com/dolthub/dolt
dua-cli View disk space usage and delete unwanted data, fast. https://github.com/Byron/dua-cli
dust A more intuitive version of du in rust https://github.com/bootandy/dust
eksctl The official CLI for Amazon EKS https://github.com/eksctl-io/eksctl
exa A modern replacement for βlsβ. https://github.com/ogham/exa
fd A simple, fast and user-friendly alternative to 'find' https://github.com/sharkdp/fd
firecracker Secure and fast microVMs for serverless computing. https://github.com/firecracker-microvm/firecracker
fission Fast and Simple Serverless Functions for Kubernetes https://github.com/fission/fission
fleet Deploy workloads from Git to large fleets of Kubernetes clusters https://github.com/rancher/fleet
flux2 Open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit. https://github.com/fluxcd/flux2
fnm π Fast and simple Node.js version manager, built in Rust https://github.com/Schniz/fnm
fortio Fortio load testing library, command line tool, advanced echo server and web UI in go (golang). Allo... https://github.com/fortio/fortio
foundry Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written... https://github.com/foundry-rs/foundry
frum A little bit fast and modern Ruby version manager written in Rust https://github.com/TaKO8Ki/frum
gh GitHubβs official command line tool https://github.com/cli/cli
gitleaks Find secrets with Gitleaks π https://github.com/gitleaks/gitleaks
gitui Blazing π₯ fast terminal-ui for git written in rust π¦ https://github.com/extrawurst/gitui
go The Go programming language https://github.com/golang/go
go-http-tunnel Fast and secure tunnels over HTTP/2 https://github.com/mmatczuk/go-http-tunnel
goose A database migration tool. Supports SQL migrations and Go functions. https://github.com/pressly/goose
gping Ping, but with a graph https://github.com/orf/gping
gradle Adaptable, fast automation for all https://github.com/gradle/gradle
grex A command-line tool and Rust library with Python bindings for generating regular expressions from us... https://github.com/pemistahl/grex
grpcurl Like cURL, but for gRPC: Command-line tool for interacting with gRPC servers https://github.com/fullstorydev/grpcurl
helm The Kubernetes Package Manager https://github.com/helm/helm
helmfile Declaratively deploy your Kubernetes manifests, Kustomize configs, and Charts as Helm releases. Gene... https://github.com/helmfile/helmfile
hetty An HTTP toolkit for security research. https://github.com/dstotijn/hetty
hexyl A command-line hex viewer https://github.com/sharkdp/hexyl
httptap View HTTP/HTTPS requests made by any Linux program https://github.com/monasticacademy/httptap
huber Huber: simplify GitHub package management https://github.com/innobead/huber
hugo The worldβs fastest framework for building websites. https://github.com/gohugoio/hugo
hyperfine A command-line benchmarking tool https://github.com/sharkdp/hyperfine
img Standalone, daemon-less, unprivileged Dockerfile and OCI compatible container image builder. https://github.com/genuinetools/img
istio Connect, secure, control, and observe services. https://github.com/istio/istio
jiq jid on jq - interactive JSON query tool using jq expressions https://github.com/fiatjaf/jiq
jless jless is a command-line JSON viewer designed for reading, exploring, and searching through JSON data... https://github.com/PaulJuliusMartinez/jless
jq Command-line JSON processor https://github.com/jqlang/jq
just π€ Just a command runner https://github.com/casey/just
jwt-cli A super fast CLI tool to decode and encode JWTs built in Rust https://github.com/mike-engel/jwt-cli
k0s k0s - The Zero Friction Kubernetes https://github.com/k0sproject/k0s
k3d Little helper to run CNCF's k3s in Docker https://github.com/k3d-io/k3d
k3s Lightweight Kubernetes https://github.com/k3s-io/k3s
k3sup bootstrap K3s over SSH in < 60s π https://github.com/alexellis/k3sup
k6 A modern load testing tool, using Go and JavaScript - https://k6.io https://github.com/grafana/k6
k9s πΆ Kubernetes CLI To Manage Your Clusters In Style! https://github.com/derailed/k9s
kind Kubernetes IN Docker - local clusters for testing Kubernetes https://github.com/kubernetes-sigs/kind
ko Build and deploy Go applications https://github.com/ko-build/ko
kompose Convert Compose to Kubernetes https://github.com/kubernetes/kompose
kotlin The Kotlin Programming Language. https://github.com/JetBrains/kotlin
kpt Automate Kubernetes Configuration Editing https://github.com/GoogleContainerTools/kpt
krew π¦ Find and install kubectl plugins https://github.com/kubernetes-sigs/krew
kube-bench Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kub... https://github.com/aquasecurity/kube-bench
kube-linter KubeLinter is a static analysis tool that checks Kubernetes YAML files and Helm charts to ensure the... https://github.com/stackrox/kube-linter
kubectl Production-Grade Container Scheduling and Management https://github.com/kubernetes/kubernetes
kubefire KubeFire π₯, creates and manages Kubernetes Clusters using Firecracker microVMs https://github.com/innobead/kubefire
kubestr https://github.com/kastenhq/kubestr
kubevirt Kubernetes Virtualization API and runtime in order to define and manage virtual machines. https://github.com/kubevirt/kubevirt
kustomize Customization of kubernetes YAML configurations https://github.com/kubernetes-sigs/kustomize
kuttl KUbernetes Test TooL (kuttl) https://github.com/kudobuilder/kuttl
linkerd2-edge Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x. https://github.com/linkerd/linkerd2
linkerd2-stable Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x. https://github.com/linkerd/linkerd2
loc Count lines of code quickly. https://github.com/cgag/loc
local-ai :robot: The free, Open Source alternative to OpenAI, Claude and others. Self-hosted and local-first.... https://github.com/mudler/LocalAI
lsd The next gen ls command https://github.com/lsd-rs/lsd
minikube Run Kubernetes locally https://github.com/kubernetes/minikube
mkcert A simple zero-config tool to make locally trusted development certificates with any names you'd like... https://github.com/FiloSottile/mkcert
nat `ls` alternative with useful info and a splash of color π¨ https://github.com/willdoescode/nat
natscli The NATS Command Line Interface https://github.com/nats-io/natscli
navi An interactive cheatsheet tool for the command-line https://github.com/denisidoro/navi
nerdctl contaiNERD CTL - Docker-compatible CLI for containerd, with support for Compose, Rootless, eStargz, ... https://github.com/containerd/nerdctl
node Node.js JavaScript runtime β¨π’πβ¨ https://github.com/nodejs/node
norouter NoRouter: IP-over-Stdio. The easiest multi-host {value} multi-cloud networking ever. No root privilege is ... https://github.com/norouter/norouter
nushell A new type of shell https://github.com/nushell/nushell
octant Highly extensible platform for developers to better understand the complexity of Kubernetes clusters... https://github.com/vmware-tanzu/octant
okteto Develop your applications directly in your Kubernetes Cluster https://github.com/okteto/okteto
ollama Get up and running with Llama 3.3, DeepSeek-R1, Phi-4, Gemma 2, and other large language models. https://github.com/ollama/ollama
onefetch Command-line Git information tool https://github.com/o2sh/onefetch
opa Open Policy Agent (OPA) is an open source, general-purpose policy engine. https://github.com/open-policy-agent/opa
opentofu OpenTofu lets you declaratively manage your cloud infrastructure. https://github.com/opentofu/opentofu
oras OCI registry client - managing content like artifacts, images, packages https://github.com/oras-project/oras
pack CLI for building apps using Cloud Native Buildpacks https://github.com/buildpacks/pack
packer Packer is a tool for creating identical machine images for multiple platforms from a single source c... https://github.com/hashicorp/packer
podman Podman: A tool for managing OCI containers and pods. https://github.com/containers/podman
powershell PowerShell for every system! https://github.com/PowerShell/PowerShell
procs A modern replacement for ps written in Rust https://github.com/dalance/procs
protoc Protocol Buffers - Google's data interchange format https://github.com/protocolbuffers/protobuf
pueue :stars: Manage your shell commands. https://github.com/Nukesor/pueue
pulumi Pulumi - Infrastructure as Code in any programming language π https://github.com/pulumi/pulumi
rclone "rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi... https://github.com/rclone/rclone
ripgrep ripgrep recursively searches directories for a regex pattern while respecting your gitignore https://github.com/BurntSushi/ripgrep
rke2 https://github.com/rancher/rke2
sad CLI search and replace | Space Age seD https://github.com/ms-jpq/sad
saml2aws CLI tool which enables you to login and retrieve AWS temporary credentials using a SAML IDP https://github.com/Versent/saml2aws
sd Intuitive find {value} replace CLI (sed alternative) https://github.com/chmln/sd
shadowsocks A Rust port of shadowsocks https://github.com/shadowsocks/shadowsocks-rust
skaffold Easy and Repeatable Kubernetes Development https://github.com/GoogleContainerTools/skaffold
skim Fuzzy Finder in rust! https://github.com/skim-rs/skim
solidity Solidity, the Smart Contract Programming Language https://github.com/ethereum/solidity
sonobuoy Sonobuoy is a diagnostic tool that makes it easier to understand the state of a Kubernetes cluster b... https://github.com/vmware-tanzu/sonobuoy
starship βποΈ The minimal, blazing-fast, and infinitely customizable prompt for any shell! https://github.com/starship/starship
stern β Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercke... https://github.com/stern/stern
syncthing Open Source Continuous File Synchronization https://github.com/syncthing/syncthing
tealdeer A very fast implementation of tldr in Rust. https://github.com/tealdeer-rs/tealdeer
termshark A terminal UI for tshark, inspired by Wireshark https://github.com/gcla/termshark
terraform Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a ... https://github.com/hashicorp/terraform
terrascan Detect compliance and security violations across Infrastructure as Code to mitigate risk before prov... https://github.com/tenable/terrascan
tilt Define your dev environment as code. For microservice apps on Kubernetes. https://github.com/tilt-dev/tilt
tokei Count your code, quickly. https://github.com/XAMPPRocky/tokei
tracee Linux Runtime Security and Forensics using eBPF https://github.com/aquasecurity/tracee
traefik The Cloud Native Application Proxy https://github.com/traefik/traefik
trivy Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories,... https://github.com/aquasecurity/trivy
typescript TypeScript is a superset of JavaScript that compiles to clean JavaScript output. https://github.com/microsoft/TypeScript
typos Source code spell checker https://github.com/crate-ci/typos
vegeta HTTP load testing tool and library. It's over 9000! https://github.com/tsenart/vegeta
velero Backup and migrate Kubernetes applications and their persistent volumes https://github.com/vmware-tanzu/velero
viddy π A modern watch command. Time machine and pager etc. https://github.com/sachaos/viddy
volta Volta: JS Toolchains as Code. β‘ https://github.com/volta-cli/volta
wabt The WebAssembly Binary Toolkit https://github.com/WebAssembly/wabt
wasmer π Fast, secure, lightweight containers based on WebAssembly https://github.com/wasmerio/wasmer
wasmtime A lightweight WebAssembly runtime that is fast, secure, and standards-compliant https://github.com/bytecodealliance/wasmtime
wstunnel Tunnel all your traffic over Websocket or HTTP2 - Bypass firewalls/DPI - Static binary available https://github.com/erebe/wstunnel
xh Friendly and fast tool for sending HTTP requests https://github.com/ducaale/xh
yq yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor https://github.com/mikefarah/yq
zellij A terminal workspace with batteries included https://github.com/zellij-org/zellij
zola A fast static site generator in a single binary with everything built-in. https://www.getzola.org https://github.com/getzola/zola
zoxide A smarter cd command. Supports all major shells. https://github.com/ajeetdsouza/zoxide
Add a New Package
We use ollam
as an example to show how to add a new package to the generator.
Step 1: Create a new package module in ./huber-generator/src/pkg
You can specify the exact artifact name template or use the default automatic artifact name recognition.
#![allow(unused)] fn main() { #[allow(dead_code)] pub fn release() -> Package { Package { name: "ollama".to_string(), source: PackageSource::Github { owner: "ollama".to_string(), repo: "ollama".to_string(), }, targets: vec![ PackageTargetType::LinuxAmd64(PackageManagement { artifact_templates: vec!["ollama-linux-amd64.tgz".to_string()], ..Default::default() }), PackageTargetType::LinuxArm64(PackageManagement { artifact_templates: vec!["ollama-linux-arm64.tgz".to_string()], ..Default::default() }), PackageTargetType::MacOSAmd64(PackageManagement { artifact_templates: vec!["ollama-darwin".to_string()], ..Default::default() }), PackageTargetType::WindowsAmd64(PackageManagement { artifact_templates: vec!["ollama-windows-amd64.zip".to_string()], ..Default::default() }), ], ..Default::default() } } }
If the artifact name includes env::consts::OS
, env::consts::ARCH
, values
defined in GOOS/GOARCH and release semantic versions, you can use the default automatic artifact name recognition below instead of
specifying the artifact name template.
Besides downloading executables, Huber also supports downloading compressed files to extract executables from them. If the artifact name ends with .tar.gz
, .tar.xz
, .zip
, .tar
, .tgz
, or
.gz
, Huber will automatically decompress the file after downloading.
The following table shows some automatic artifact name recognition for different operating systems and architectures:
OS | ARCH | Asset name | Renamed asset name |
---|---|---|---|
linux | amd64, x86_64, .. | ollama-linux-amd64 | ollam |
linux | aarch64, arm64, .. | ollama-linux-arm64.tar.gz | ollam.tar.gz |
macos, darwin | aarch64, arm64, .. | ollama-darwin-arm64 | ollam |
windows | amd64, X86_64, .. | ollama-windows-amd64.zip | ollam.zip |
#![allow(unused)] fn main() { #[allow(dead_code)] pub fn release() -> Package { Package { name: "ollama".to_string(), source: PackageSource::Github { owner: "ollama".to_string(), repo: "ollama".to_string(), }, targets: vec![ PackageTargetType::LinuxAmd64(Default::default()), PackageTargetType::LinuxArm64(Default::default()), PackageTargetType::MacOSAmd64(Default::default()), PackageTargetType::WindowsAmd64(Default::default()), ], ..Default::default() } } }
Step 2: Declare the package module in ./huber-generator/src/pkg/mod.rs
#![allow(unused)] fn main() { pub mod ollama; }
Step 3: Export the package to the release function in ./huber-generator/src/build.rs
#![allow(unused)] fn main() { fn releases() -> Vec<Package> { vec![ // ... existing packages // Add the new package here ollama::release(), ] } }
Step 4: Run the generator
After running the following command, the generator will automatically generate the package information to the ./generated-v1
directory and update the
./docs/src/contributing/huber-managed-packages.md
file.
just generate
Finally, please create a pull request to merge the changes into the main branch. Thank you for contributing to Huber!