Skip to content

feat: report/annotate/lock commands, semantic diff, multi-doc YAML, pagination, envsubst, CI guards#12

Merged
machado144 merged 1 commit into
mainfrom
feature/ci-timesavers-batch
Jul 6, 2026
Merged

feat: report/annotate/lock commands, semantic diff, multi-doc YAML, pagination, envsubst, CI guards#12
machado144 merged 1 commit into
mainfrom
feature/ci-timesavers-batch

Conversation

@machado144

Copy link
Copy Markdown
Contributor

What

Batch of CI/CD time-savers that replace common bash/python/jq glue in pipelines.

New command groups

Command Replaces
report junit / report coverage python scripts over JUnit XML, bc coverage math, hand-rolled step summaries — markdown summary, GITHUB_OUTPUT counts, --fail-on-failures / --min gates
annotate error|warning|notice + annotate from-json per-linter annotation actions — emits GitHub workflow commands (inline PR annotations), plain file:line: fallback elsewhere; converts any linter's JSON findings via --*-key field mapping
lock acquire|release|run flock + trap gymnastics — portable file mutex with --timeout, --stale takeover, holder pid/timestamp recorded

Extended commands

  • json diff / yaml diff — semantic diff (key order/formatting ignored); text/json/markdown output, --ignore prefixes, --exit-code, --to-summary
  • yaml get/set/del --doc — address one document in a multi-doc stream by index or field match (kind=Deployment,metadata.name=api); sibling documents stay byte-identical, composes with --preserve (yq can't do this)
  • http get --paginate — follow Link: rel="next" headers, merge pages; --items for nested arrays, --max-pages cap
  • render --envsubst$VAR / ${VAR} / ${VAR:-default} / $$ drop-in envsubst replacement; --strict lists all unset vars
  • assert versions-match — monorepo version-sync guard (package.json vs Chart.yaml vs …)
  • artifact assert --max-size/--min-size — size budgets with human units (5MB, 100KiB)
  • version next — hardened conventional-commit parsing: line-anchored type(scope)!: matching (no more substring false positives), perf/refactor/revert count as patch, BREAKING CHANGE footers read from commit bodies

Testing

  • 60+ new table-driven unit tests across 8 service files
  • 9 new end-to-end tests in integration/timesavers_test.go driving the built binary
  • go test -race ./... — 349 tests green; gofumpt -l . clean; no new golangci-lint findings (pre-existing ones on main untouched)

Docs

README command table, full COMMANDS.md entries (report/annotate/lock + extended flags), and a "v0.3 patterns" recipe section in EXAMPLES.md.

🤖 Generated with Claude Code

…oc YAML, pagination, envsubst, and CI guards

New command groups:
- report: parse JUnit XML / lcov / cobertura into markdown summaries,
  GITHUB_OUTPUT counts, and threshold gates (--fail-on-failures, --min)
- annotate: emit inline PR annotations on GitHub (plain file:line
  fallback elsewhere) and convert any linter's JSON findings
- lock: file-based mutex (acquire/release/run) with timeout and stale
  takeover for serializing steps on shared runners

Extended commands:
- json/yaml diff: semantic diff ignoring key order and formatting;
  text/json/markdown output, --ignore prefixes, --exit-code gate
- yaml get/set/del --doc: address one document in a multi-doc stream by
  index or field match; edits leave sibling documents byte-identical
  and compose with --preserve
- http get --paginate: follow Link rel=next headers and merge pages
  (--items for nested arrays, --max-pages cap)
- render --envsubst: $VAR / ${VAR} / ${VAR:-default} substitution with
  --strict unset-variable gate
- assert versions-match: monorepo version-sync guard across manifests
- artifact assert --max-size/--min-size: size budgets with human units
- version next: line-anchored conventional-commit parsing (feat/fix/
  perf/refactor/revert, ! bang, BREAKING CHANGE footers in bodies)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@machado144 machado144 merged commit 3f83a64 into main Jul 6, 2026
1 check passed
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.

1 participant