- Wrap defer resp.Body.Close() to capture error
- Ignore json.Unmarshal error in valueAny (best-effort)
- Check enc.Encode and os.Stdout.Write return values
- Check json.NewEncoder.Encode and w.Write in test helpers
- Check os.MkdirAll and os.WriteFile errors in tests
- Check first writeDefaultConfig() call in AlreadyExists test
- Remove unused mustMarshal helper
- var version injected at build time via -X main.version=$(VERSION)
- VERSION derives from 'git describe --tags' so built binaries show
the exact tag (or tag+commits+sha for dirty/untagged builds)
- 'make patch/minor/major' reads the latest vX.Y.Z tag and creates
the next one; starts from v0.0.0 if no tags exist yet
Query PuppetDB for node facts via CLI. Replaces the original Python script.
- XDG config (~/.config/node-lookup/config.yaml) with env var overrides
- All flags from original tool preserved (-n, -F, -R, -m, --pm, -1, -2, -C, -A, -j)
- config init / config show subcommands
- Unit tests (23), Makefile, GoReleaser config, pre-commit hooks
💘 Generated with Crush
Assisted-by: Claude Sonnet 4.6 via Crush <crush@charm.land>