Commit Graph

12 Commits

Author SHA1 Message Date
unkinben e070357d3f Relocate packaging: RPM, shell completions, no-TTY fix, repaired tests (#13)
## Why

The unit tests stopped compiling after the `--pm` → `-p`/`-i` match-modifier refactor was left uncommitted, there was no RPM/completions distribution story, and invoking the tool without a TTY against an empty pipe silently returned nothing. This makes the project releasable and safe to run from agents/CI.

## Changes

- Make stdin handling robust: replace the fragile `!isTerminal` check with `stdinReader()`, which only reads node names when stdin is a real pipe/redirect carrying data. Terminals, `/dev/null`, and empty/closed pipes now fall through to a normal query, so running without a TTY behaves like an interactive run.
- Repair and expand `main_test.go` to match the current `buildQuery`/`run` signatures; add coverage for the match modifiers, all output modes, config precedence, and the new `stdinReader` logic. `httptest` stubs PuppetDB (no live deps).
- Add nfpm packaging (`packaging/nfpm.yaml`, `scripts/build-rpm.sh`): installs the binary to `/usr/bin/node-lookup` and bundles generated bash/zsh/fish completions under the standard system paths.
- Rework the Makefile to build into `dist/` and add `completions`/`rpm` targets.
- Split PR CI into `build`, `test`, and `pre-commit` workflows and extend `release` to build the RPM and `PUT` it to the artifactapi `rpm-internal` repo. Every step sets a `serviceAccount` and k8s resources.

The project directory has also been relocated under `prodenv`.

Reviewed-on: #13
Co-authored-by: Ben Vincent <ben@unkin.net>
Co-committed-by: Ben Vincent <ben@unkin.net>
2026-07-05 00:02:34 +10:00
unkinben 990e2a2e43 fix: remove positional tag argument from tea releases create (#12)
ci/woodpecker/tag/release Pipeline was successful
Passing tag both as argument and --tag flag causes ambiguous args error.

💘 Generated with Crush

Assisted-by: Claude Sonnet 4.6 via Crush <crush@charm.land>

Reviewed-on: #12
2026-03-26 15:29:45 +11:00
unkinben ae384e7b46 feat/multi-release (#11)
ci/woodpecker/tag/release Pipeline failed
Change to only tagging with the makefile.
Change the workflow to create the release based on the tag.
Build the binary for multiple os/archs

Reviewed-on: #11
2026-03-26 15:23:03 +11:00
unkinben e9ec29d60e fix: escape secrets (#10)
ci/woodpecker/release/release Pipeline failed
- must use $$ for escaped secrets

Reviewed-on: #10
2026-03-26 14:55:30 +11:00
unkinben 1daa48ade1 fix/release-pipeline-python (#9)
ci/woodpecker/release/release Pipeline failed
Reviewed-on: #9
2026-03-26 14:48:30 +11:00
unkinben b5978a18a1 fix/release-pipeline-python (#8)
ci/woodpecker/release/release Pipeline failed
Reviewed-on: #8
2026-03-26 13:46:37 +11:00
unkinben 6d7703c3f2 fix: use RELEASER_TOKEN for Gitea API auth instead of droneci password (#7)
ci/woodpecker/release/release Pipeline failed
droneci user lacks write access; switch to token-based auth header.

💘 Generated with Crush

Assisted-by: Claude Sonnet 4.6 via Crush <crush@charm.land>

Reviewed-on: #7
2026-03-26 13:40:15 +11:00
unkinben 3291f8f73d fix: look up existing release by tag instead of creating a new one (#6)
ci/woodpecker/release/release Pipeline failed
tea creates the release before the pipeline runs; POST was failing with
conflict, leaving RELEASE_ID empty and skipping the asset upload.
Now GETs the release by tag, PATCHes its body, then uploads the binary.

💘 Generated with Crush

Assisted-by: Claude Sonnet 4.6 via Crush <crush@charm.land>

Reviewed-on: #6
2026-03-26 13:17:25 +11:00
unkinben 3a4c9ea1c1 fix: surface release API errors in woodpecker pipeline (#5)
ci/woodpecker/release/release Pipeline failed
Capture and print the full Gitea API response before parsing the release
ID, and fail explicitly if the ID is empty so the root cause is visible
in CI logs instead of silently producing a malformed asset upload URL.

💘 Generated with Crush

Assisted-by: Claude Sonnet 4.6 via Crush <crush@charm.land>

Reviewed-on: #5
2026-03-26 12:48:54 +11:00
unkinben b0d8f57b6f Add merged branch release notes to Gitea release body (#4)
ci/woodpecker/release/release Pipeline failed
Generates release notes from merged branches since last tag and
includes them in the release body via Gitea API.

Reviewed-on: #4
2026-03-25 21:27:45 +11:00
unkinben 45cb378022 Replace gitea-release plugin with curl-based release upload (#3)
Uses basic auth (droneci user) and Gitea API directly to create
the release and upload the binary asset.

Reviewed-on: #3
2026-03-25 19:45:34 +11:00
unkinben f65864af22 feat/version (#2)
Reviewed-on: #2
2026-03-25 19:25:12 +11:00