oglyad-0.1.2.0: CHANGELOG.md
# changelog
## 0.1.2.0
- checks every maintained release by default (today f43, f44, f45 and
rawhide), as listed by Fedora's Bodhi. `-r`/`--release` takes `43`, `f43`
or `rawhide` and can be repeated. the default used to be just 44
- each release reads its own terrapkg/packages branch (`origin/f43`,
`origin/frawhide`) through `git archive`, without touching the checkout.
`--worktree` checks the checkout as it is against one release, which is
what oglyad used to do. `--remote` picks the remote
- rawhide uses `terrarawhide`, `.fcrawhide` and Fedora's rawhide repo
- findings are merged across releases and tagged with the releases they
came up in. messages that only differ by dist tag show `%{dist}`
- json schema 2: `releases` replaces `monorepo_head` and `terra_repo`, and
each finding lists its `releases`
- an ignore file entry is only reported unused when it matched nothing in
every release
- upstream answers fetched earlier in the same run are reused, so checking
four releases asks each upstream once
- `unparsed-rhai` only lists scripts that really look up a version oglyad
can't follow. kmod packages copying Version from their kmod-common spec,
scripts that only bump Release or write files, and scripts tracking a
commit from `get()` are classified as such instead. whether a script sets
the version is judged by the macros the spec's `Version:` line uses, so
`%global tag` feeding `Version: %(echo %tag | ...)` still counts
- an update.rhai with only comments in it counts as `no-autoupdate`
- `drift` and `stale` don't compare packages with a `nightly` or
`quaterdaily` label in anda.hcl against the latest release, since they
build from a branch head.
a mangled version is still flagged
- anda.hcl values can be bare (`nightly = 1`) as well as quoted
- with `-u`, update.rhai scripts oglyad can't follow (scraping with `get()`,
`gh_tags()` filters, `gh_rawfile()`, ...) run under the real anda on a
throwaway copy of the tree, and the Version left in the spec is compared.
failing scripts show up as `upstream-error`, and answers are cached like
upstream ones. anda gets `GITHUB_TOKEN`, since it needs it for GitHub
helpers
- `drift` replays the version-setting part of update.rhai over the upstream
value, so guards (`if v.starts_with("cli-v")`, `if v < "5"`), edits
(`crop`, `pop`, `truncate`, `replace`), `terminate()` and try/catch apply
before comparing. tags a script would skip no longer show up as drift
- andax's regex helpers (`find`, `find_all`, `sub`) work in that replay,
through a small engine for Rust's regex dialect that gives the same
matches and captures as the regex crate
- `drift` treats a snapshot suffix (`^20260805git...`, `.gitfc62ae7`) as part
of the spec's spelling, so `2.0.0-alpha-1-20250926` matches
`2.0.0~alpha~1~20250926.gitfc62ae7`
- `drift` warns when update.rhai would produce a version that doesn't start
with a letter or digit, like `crop(1)` turning `6.0.1` into `.0.1`
- `unparsed-rhai` warns about scripts with unbalanced brackets, which anda
can't run at all
- `opam()` lookups skip versions that aren't semver, like anda does, so old
Jane Street versions like `113.24.00` no longer win
- `--help` and `--version` print to stdout instead of stderr, so tools like
help2man can read them. bad arguments still go to stderr and exit 2
## 0.1.1.0
prepare for release on Hackage
## 0.1.0.0
first release.
- checks: `build-lag`, `drift`, `duplicate-name`, `fedora-overlap`,
`no-autoupdate`, `stale`, `unparsed-rhai`, `upstream-error`
- text, markdown and json output, with a versioned json envelope
- `--fail-on` and distinct exit codes for automation
- ignore files and `oglyad_ignore` labels in anda.hcl
- caching of spec evaluations, repodata, commit times and upstream answers