mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-17 16:38:54 +00:00
Phase-5 wrap-up for plans/exit.md. The DSL-runtime cluster (pkg/dsl/cst: hofs.go, udf.go, evaluable.go) is deferred rather than converted: 58 regression cases pin the current loud-failure behavior (exact stderr plus exit 1), and the planned error-Mlrval mechanism would make HOF/UDF misuse fail silently as bare '(error)' with exit 0 -- a debugging-UX regression. The alternative (typed panic recovered at the Execute* boundaries) preserves behavior but introduces panic/recover to a codebase that has none. The decision belongs with the issue-440 strict-mode design, where the fatal-vs-data error taxonomy gets decided anyway; plans/exit.md now records the rationale, the phase-by-phase status (#2198, #2202, #2204, #2205), and the final intentional keep-list. Also converted here, since they're squarely in prior phases' patterns rather than the deferred expression-depth cluster: - RootNode.ProcessEndOfStream (a phase-3 leftover on the put/filter Transform path) returns an error instead of printing-and-exiting on end-of-stream close failures; first error returned, any others printed at the site. - The three CompileMillerRegexOrDie calls in option_parse.go (inside error-returning parser closures since phase 2) use CompileMillerRegex and return the error; 'mlr --ifs-regex (' output and exit code are unchanged. All 4779 regression cases pass; make lint 0 issues. Co-authored-by: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| doc.go | ||
| errors.go | ||
| flag_json.go | ||
| flag_types.go | ||
| flag_types_test.go | ||
| flatten_unflatten.go | ||
| mlrcli_util.go | ||
| option_parse.go | ||
| option_types.go | ||
| README.md | ||
| separators.go | ||
| verb_utils.go | ||
Datatypes for parsing the Miller command line, and the flags table.
pkg/climainis the flag-parsing logic for supporting Miller's command-line interface. When you type something likemlr --icsv --ojson put '$sum = $a + $b' then filter '$sum > 1000' myfile.csv, it's the CLI parser which makes it possible for Miller to construct a CSV record-reader, a transformer chain ofputthenfilter, and a JSON record-writer.pkg/clicontains datatypes and the flags table for the CLI-parser, which was split out to avoid a Go package-import cycle.