miller/pkg/cli
John Kerl 19e772d0e6 Add --infer-true/--infer-false for user-defined boolean strings (#1651)
By default Miller does not infer booleans from data files: "true" and
"false" (let alone "True", "yes", "on", etc.) are read as strings. This
adds opt-in flags letting users specify exactly which field values
should be inferred as boolean true/false when read from data files:

  mlr --infer-true True,yes,on --infer-false False,no,off ...

Details:

* Matching is exact and case-sensitive; unlisted values are unaffected.
* As with ints and floats, the original string representation is
  retained for non-JSON output, so CSV/TSV/etc. round-trip unchanged.
* JSON output emits canonical true/false (fixed marshalJSONBool to use
  the underlying boolean rather than the retained string, which would
  otherwise produce invalid JSON for e.g. "yes").
* Works with the -O and -A inference variants; -S (no inference)
  bypasses it, as it bypasses all other type inference.
* Works from .mlrrc as infer-true/infer-false, like any other flag.

Includes unit tests, regression-test cases under
test/cases/io-infer-flags/, and doc updates (reference-main-data-types,
regenerated flag list and man pages).

Addresses #1651.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-14 09:46:03 -04:00
..
doc.go Export library code in pkg/ (#1391) 2023-09-10 17:15:13 -04:00
errors.go Improve error propagation (#1975) 2026-02-16 16:48:41 -05:00
flag_json.go Switch to --as-json (#2106) 2026-06-28 17:04:10 -04:00
flag_types.go Shell tab-completion for bash and zsh (#2096) 2026-06-21 12:47:54 -04:00
flag_types_test.go Shell tab-completion for bash and zsh (#2096) 2026-06-21 12:47:54 -04:00
flatten_unflatten.go Multiple style updates (#1974) 2026-02-16 15:49:21 -05:00
mlrcli_util.go Multiple style updates (#1974) 2026-02-16 15:49:21 -05:00
option_parse.go Add --infer-true/--infer-false for user-defined boolean strings (#1651) 2026-07-14 09:46:03 -04:00
option_types.go Exit 0 when skip-trivial-records is used and CSV/TSV ends with blank lines (#1535) (#2146) 2026-07-06 15:22:51 -04:00
README.md Export library code in pkg/ (#1391) 2023-09-10 17:15:13 -04:00
separators.go Shell tab-completion for bash and zsh (#2096) 2026-06-21 12:47:54 -04:00
verb_utils.go Improve error propagation (#1975) 2026-02-16 16:48:41 -05:00

Datatypes for parsing the Miller command line, and the flags table.

  • pkg/climain is the flag-parsing logic for supporting Miller's command-line interface. When you type something like mlr --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 of put then filter, and a JSON record-writer.
  • pkg/cli contains datatypes and the flags table for the CLI-parser, which was split out to avoid a Go package-import cycle.