CLI command design
jlc
Generates the paired JLCPCB manufacturing upload files from one Altium project by reusing the BOM/PnP normalization and config layer.
Usage
altium-cruncher jlc project.PrjPcb
altium-cruncher jlc project.PrjPcb --variant B4
altium-cruncher jlc project.PrjPcb --all-variants
altium-cruncher jlc project.PrjPcb --position-mode component-origin
altium-cruncher jlc project.PrjPcb --config bom.config
altium-cruncher jlc --write-config bom.configArguments
file is a .PrjPcb. --variant and --all-variants select variant processing. --config loads the shared BOM/PnP JSON or JSONC config. --units defaults to config units but JLC CPL requires mm. --position-mode selects the PnP coordinate mode used for CPL positions; the default is altium-pick-place. -o selects the output root.
Output
The command writes a JLC BOM XLSX and CPL XLSX for each selected variant. The default config puts the paired files in the same output folder, normally output/jlc, using semantic stems such as _jlc.xlsx and _jlc-cpl.xlsx rather than repeating the xlsx extension in the stem. Output paths use the shared config templates with Command, OutputKind, OutputKindStem, OutputKindSuffix, SourceStem, and VariantName tokens. Configured outputs write bom.config.used.json beside generated artifacts. JLC XLSX files use regular header rows without Excel filter dropdowns. CSV JLC output remains available through bom --format jlc-csv and pnp --format jlc-cpl.
Tests
L0 verifies command registration and help. Unit tests cover JLC row generation through the shared BOM/PnP model. L3 workflow tests exercise fixture-backed JLC XLSX bundle validation for hierarchy and high-count projects.