miller/pkg/cli
John Kerl ac08b072dc
Honor --ors crlf for CSV output (#1810) (#2150)
* Honor --ors CRLF for CSV output (#1810)

The full-CSV record writer validated ORS as newline or
carriage-return/newline, but never propagated the choice to the forked
Go CSV writer's UseCRLF field, so `--ors '\r\n'` (or `--ors crlf`)
silently produced LF line endings. Set UseCRLF from the writer options
so CRLF output is honored. Default behavior (LF) is unchanged, and
other ORS values are still rejected. The CSV-lite and TSV writers
already honored CRLF ORS.

Also: fix a copy-paste "for CSV" in the TSV writer's ORS-validation
message, add unit tests asserting byte-exact line endings (the regtest
harness normalizes CR/LF, so this can't be asserted in test/cases), add
CLI-level regression cases, and update the separators documentation.

This substantially addresses #1722 as well: RFC-4180-style CRLF output
can now be requested on any platform.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Fix errcheck lint: check Flush() error in CSV writer test

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 20:35:32 -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 Honor --ors crlf for CSV output (#1810) (#2150) 2026-07-05 20:35:32 -04:00
option_types.go Add --omd-aligned flag for column-padded markdown output (#2057) 2026-05-16 11:41:01 -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.