CLI for vendoring Helm charts from a charts.toml registry
  • Rust 87.3%
  • Just 6.5%
  • Nix 6.2%
Find a file
Simon Shine 13fe73b007
All checks were successful
Rust CI / build (push) Successful in 3m31s
chore(readme): Improve README since we may have visitors
2026-07-12 13:48:09 +02:00
.forgejo/workflows chore(ci): Add Cargo.lock sync check 2026-05-01 09:45:52 +02:00
nix chore(ci): Add Cargo.lock sync check 2026-05-01 09:45:52 +02:00
src chore(readme): Improve README since we may have visitors 2026-07-12 13:48:09 +02:00
.envrc feat(flake): Add Nix flake scaffolding with crate2nix 2026-04-16 06:14:13 +02:00
.gitignore feat(flake): Add Nix flake scaffolding with crate2nix 2026-04-16 06:14:13 +02:00
Cargo.lock feat(cli): Decouple chart directory name from upstream chart name + bump to 0.4.3 2026-06-28 21:30:32 +02:00
Cargo.toml feat(cli): Decouple chart directory name from upstream chart name + bump to 0.4.3 2026-06-28 21:30:32 +02:00
flake.lock chore(flake): Lower flake input duplication 2026-04-25 08:12:08 +02:00
flake.nix chore(flake): Lower flake input duplication 2026-04-25 08:12:08 +02:00
justfile feat(cli): Add parallel resolve with progress UI and color 2026-05-01 14:39:38 +02:00
README.md chore(readme): Improve README since we may have visitors 2026-07-12 13:48:09 +02:00
rust-toolchain.toml feat(flake): Add Nix flake scaffolding with crate2nix 2026-04-16 06:14:13 +02:00

helm-vendor

CLI for vendoring Helm charts from a declarative charts.toml registry.

Charts are declared in a charts.toml file and vendored into a sibling charts/ directory.

charts.toml is auto-detected by walking up from the current directory; override with --config <path>.

Usage

$ helm-vendor --help
Vendor Helm charts from a declarative charts.toml registry

Usage: helm-vendor [OPTIONS] <COMMAND>

Commands:
  add         Add a new chart to charts.toml and vendor it. Creates charts.toml if it does not exist
  fetch       Pull chart(s) from upstream into the charts/ directory
  check       Verify vendored charts match their upstream source
  update      Update the version of a chart in charts.toml
  list        List all charts and their versions
  outdated    Show charts whose pinned version is older than what's upstream
  completion  Print a shell completion script. Source it with e.g. `eval "$(helm-vendor completion zsh)"`
  help        Print this message or the help of the given subcommand(s)

Options:
      --config <CONFIG>  Path to charts.toml. Auto-detected by walking up from CWD if omitted
  -h, --help             Print help
  -V, --version          Print version

Adding a new chart

$ helm-vendor add cert-manager https://charts.jetstack.io/
  added cert-manager 1.21.0

$ git add charts.toml charts/cert-manager/
$ git commit -m "feat(charts): Vendored cert-manager 1.21.0"

Updating all charts to their latest upstream versions

$ helm-vendor update --all --latest
  updated cert-manager to 1.21.0

$ git add charts.toml charts/cert-manager/
$ git commit -m "chore(charts): Updated cert-manager to 1.21.0"

Installation

For Nix/NixOS: Add helm-vendor to your flake inputs and include its overlay:

{
  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
  inputs.helm-vendor = {
    url = "git+https://git.shine.town/infra/helm-vendor.git";
    inputs.nixpkgs.follows = "nixpkgs";
  };

  outputs = { self, nixpkgs, helm-vendor, ... }:
    let
      system = "x86_64-linux";
      pkgs = import nixpkgs {
        inherit system;
        overlays = [ helm-vendor.overlays.default ];
      };
    in
    {
      devShells.${system}.default = pkgs.mkShell {
        packages = [
          pkgs.helm-vendor
          pkgs.kubernetes-helm
        ];
      };
    };
}

Or use it directly:

$ nix run git+https://git.shine.town/infra/helm-vendor.git#helm-vendor -- --help