mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-18 00:45:47 +00:00
* Default to "cat" verb when none is supplied (#2029) Invocations like 'mlr --j2y' or 'mlr --c2p' previously failed with "no verb supplied", forcing users to type the trailing 'cat' explicitly for pure format conversions. Default the verb to 'cat' in that case. Bare 'mlr' with no flags, no verb, and no files still prints the main usage banner. This handles flag-only invocations (e.g. 'mlr --c2j < input.csv' or 'mlr --c2j --from input.csv'). File names without a preceding verb are still parsed as verb candidates and continue to error if not found; that broader change is out of scope here. * Use ${MLR} substitution for bare-mlr regression case (#2029) The regtester only substitutes the mlr executable when the cmd starts with "mlr " (with a trailing space). The bare-mlr usage-banner test had a cmd of just "mlr", so on CI -- which invokes regtest with a relative path like 'test/../mlr' -- the test shelled out to a literal 'mlr' that isn't on PATH and failed with exit 127. Switch the cmd to ${MLR} (the regtester's explicit substitution token) so the case runs the right binary in any invocation context. |
||
|---|---|---|
| .. | ||
| doc.go | ||
| mlrcli_mlrrc.go | ||
| mlrcli_parse.go | ||
| mlrcli_shebang.go | ||
| README.md | ||
Logic for parsing the Miller command line.
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 for the CLI-parser, which was split out to avoid a Go package-import cycle.- I don't use the Go
flagpackage. Theflagpackage is quite fine; Miller's command-line processing is multi-purpose between serving CLI needs per se as well as for manpage/docfile generation, and I found it simplest to roll my own command-line handling here. More importantly, some Miller verbs such assorttake flags more than once --mlr sort -f field1 -n field2 -f field3-- which is not supported by theflagpackage.