Log messages are lower-case event names with their details as key/value
attributes ("error" for errors), in place of formatted strings.
Loggable package take a WithLogger option as part of their "New*" call,
defaulting to slog.Default(). Each tags its lines with its `component`.
Some debug loggers print directly rather than using slog when in
terminal logging mode.
gci is configured with the sections standard, default and localmodule, and
goimports with the module path as its local prefix, so both formatters
agree.
- Convert OCDS releases to types.Opportunity (internal/types); FetchOnce
and FetchAll now return opportunities, built from each ocid's latest
release
- Include each item's main classification as well as its additional ones
- Return ErrUnexpectedStatus for non-200 responses and
ErrRateLimitExceeded for a repeated 429; close discarded bodies
- Stop fetchAll on a repeated next link and close each page's body once
read rather than deferring in the loop
- Default a zero Since to 24 hours ago
- Merge date repair and releaseIDs into api.go
- Filter --planning/--opportunities/--awards on each procedure's current
stage, using OCDS release tags; --opportunities previously matched a
nonexistent "opportunity" tag and returned nothing
- Reject conflicting filters before fetching (cobra flag group)