mirror of
https://github.com/johnkerl/miller.git
synced 2026-07-25 08:53:55 +00:00
* JIT mlrval type-interfence: mlrval package * mlrmap refactor * complete merge from #779 * iterating * mlrval/format.go * mlrval/copy.go * bifs/arithmetic_test.go * iterate on bifs/collections_test.go * mlrval_cmp.go * mlrval JSON iterate * iterate applying mlrval refactors to dependent packages * first clean compile in a long while on this branch * results of first post-compile profiling * testing * bugfix in ofmt formatting * bugfix in octal-supporess * go fmt * neaten * regression tests all passing |
||
|---|---|---|
| .. | ||
| doc.go | ||
| mlrcli_mlrrc.go | ||
| mlrcli_parse.go | ||
| mlrcli_shebang.go | ||
| README.md | ||
Logic for parsing the Miller command line.
internal/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.internal/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.