Introduces the vault-tools monorepo: two Go CLIs that share a config file
(~/.config/vault) and token cache (~/.cache/vault) for working with multiple
Vault instances (contexts).
- add shared/ library: config parsing (vctl.yaml/config.yaml, per-context
overrides, slash contexts), token cache (0600/0700, atomic writes, path-
traversal guards), and a small hand-rolled Vault HTTP client (login/renew)
- add vctl: login/renew (single or --all), list, --method/--user overrides,
no-echo password/token prompts, dynamic context completion
- add vctx: resolve a context, set VAULT_ADDR/VAULT_TOKEN/VAULT_NAMESPACE and
exec the vault CLI, passing remaining args through untouched
- add unit tests across shared/, vctl and vctx command layers (config
resolution, cache paths, vault client, --all iteration + error aggregation,
vctx arg pass-through and env construction via fakeable exec/prompt seams)
- add Makefile (build/test/completions/rpm, patch|minor|major version bumps),
nfpm RPM packaging bundling bash/zsh/fish completions for both binaries
- add Woodpecker pipelines: build/test/pre-commit on PRs, and a tag release
that cross-compiles, builds+uploads the RPM to artifactapi, and cuts a Gitea
release (serviceAccountName default, k8s resources on every step)
- add README, per-command docs (docs/vctl.md, docs/vctx.md), AGENTS.md and an
example config
Claude-Session: https://claude.ai/code/session_015ur3i7D2azsMAWTSVABApv