Skip to content

feat(catalog): add HashiCorp Vault#124

Merged
CybotTM merged 1 commit into
mainfrom
feat/catalog-vault
Jul 23, 2026
Merged

feat(catalog): add HashiCorp Vault#124
CybotTM merged 1 commit into
mainfrom
feat/catalog-vault

Conversation

@CybotTM

@CybotTM CybotTM commented Jul 23, 2026

Copy link
Copy Markdown
Member

Summary

Adds vault to the tool catalog as the second hashicorp_zip tool (after terraform).

  • catalog/vault.json — modeled on terraform.json (product_name/binary_name vault, guide order 205, amd64/arm64 arch map)
  • upstream_versions.json — vault 2.0.3 added to the committed baseline (merged additively; two npm entries got key-sorted to match the canonical sort_keys=True writer output)
  • catalog/COVERAGE.md, catalog/README.md — coverage lists and counts updated; the cataloged-tool count was already stale at 98 vs. 99 actual JSON entries, now corrected to 100

No bash_completion declared: vault completion bash prints usage text (which the completion validator rejects); vault's actual mechanism is vault -autocomplete-install, which edits rc files directly instead of emitting a script.

Verification

  • https://releases.hashicorp.com/vault/2.0.3/vault_2.0.3_linux_amd64.zip → HTTP 200
  • make install-vault → installs Vault v2.0.3 to ~/.local/bin/vault, snapshot refreshed
  • uv run python audit.py vault → ✅ 2.0.3 / 2.0.3
  • 738 passed, 1 skipped; smoke test OK; flake8 findings are pre-existing (no Python touched)

Note

audit.py --update-baseline <tool> with a single tool argument replaces the whole upstream_versions.json instead of merging — it dropped the other ~95 entries when run for vault (restored, then merged manually). Worth a follow-up issue.

Adds vault as the second hashicorp_zip tool (after terraform), installable
via 'make install-vault'. Records the current upstream version (2.0.3) in
the committed baseline and updates the catalog coverage docs, including
the stale cataloged-tool count (98 -> 100).

Vault has no stdout bash-completion generator ('vault completion bash'
prints usage; the real mechanism is 'vault -autocomplete-install', which
edits rc files directly), so no bash_completion is declared.

Signed-off-by: Sebastian Mendel <sebastian.mendel@netresearch.de>
Copilot AI review requested due to automatic review settings July 23, 2026 08:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions

Copy link
Copy Markdown
Contributor

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@sonarqubecloud

Copy link
Copy Markdown

@CybotTM
CybotTM merged commit 183c4c5 into main Jul 23, 2026
24 of 25 checks passed
@CybotTM
CybotTM deleted the feat/catalog-vault branch July 23, 2026 08:52
CybotTM added a commit that referenced this pull request Jul 23, 2026
#126)

Fixes #125.

## Root cause

`cmd_update_baseline` built a fresh empty `UpstreamCache()`
(`audit.py:1029`), filled it with only the tools collected this run, and
`write_upstream_cache` overwrote the whole file. Consequences:

- A tool-scoped run (`audit.py --update-baseline vault`) replaced
`upstream_versions.json` with just that one entry, dropping ~95
committed entries (observed in #124).
- Even in full runs, a transient collection failure silently deleted
that tool's committed entry (the exception path never re-adds it).

## Fix

Start from `load_upstream_cache()` and update only the entries collected
this run — everything else survives. Follow-ups inside the same blast
radius:

- The `✓ Collected N versions` summary counted the merged map size,
which would have read "Collected 96" after collecting 1; it now reports
successful collections as `N/total`.
- `UpstreamCache` import removed from `audit.py` (orphaned by the fix;
the other pre-existing F401s are untouched).

Side-effect note: a full `--update-baseline` run no longer prunes
entries for tools removed from the catalog — stale entries are removed
by editing the committed file, which review covers.

## Tests

`TestUpdateBaselineMerges` (tests/test_update_fixes.py) — written red
against the unfixed code:
- tool-scoped run preserves unrelated entries and updates the requested
one
- failed collection leaves the existing entry intact

Full suite 740 passed / 1 skipped, smoke test OK; flake8 findings on
`audit.py` are the 3 pre-existing ones from `main`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants