v0.18.0
Batch conversion: directories, globs, parallel workers, atomic writes,
and dry runs on the command line; the formats map as one graph per
category.
Added
- Batch conversion:
sublime converttakes several inputs, directories (-rto descend), and glob patterns (*,?,**, expanded by the tool where the shell does not), and writes each output named after its input with the target's extension, into--out-dir(or a trailingdir/) mirroring the input's structure, or beside the input. Files convert in parallel (--jobs, one per CPU by default); one file's failure does not stop the rest; files under a directory whose format is unknown are skipped and counted;--dry-runlists the plan without writing. Every output, batch or single, is written to a.partfile and renamed into place, so a failed conversion leaves nothing behind and never disturbs an existing output. New eventsfile_started,file_failed, andbatch_finishedin both log formats. Exit code is the worst outcome across the batch. sublime convert a.csv b.csv --to tsvis refused with a pointer to--out-dir: the old reading, "write a.csv's TSV over b.csv", would have destroyed an input.- The binary size budget is raised 1.85 -> 1.9 MB for batch conversion (17 KB: threads, the directory walk, the glob matcher, and the part-file writer; a first draft on
std::sync::mpsccost 10 KB more and was replaced by a mutex and a condition variable).
Changed
- The formats map is one Mermaid graph per category plus one for the crossings between categories, instead of a single graph of everything: a format with a converter into another category is a stadium in its own graph, and the other category is a hexagon in the crossing graph. The binary size budget is raised 1.8 -> 1.85 MB: the binary had 3 KB of headroom after 0.17.0 and this rendering takes 4 KB.