@rom-weaver/cli 0.15.1 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +40 -24
  2. package/docs/completions/_rom-weaver +1242 -644
  3. package/docs/completions/rom-weaver.bash +690 -109
  4. package/docs/completions/rom-weaver.elv +973 -576
  5. package/docs/completions/rom-weaver.fish +841 -536
  6. package/docs/completions/rom-weaver.ps1 +1006 -588
  7. package/docs/man/rom-weaver-bundle-create.1 +55 -8
  8. package/docs/man/rom-weaver-bundle-parse.1 +15 -6
  9. package/docs/man/rom-weaver-bundle-schema.1 +16 -7
  10. package/docs/man/rom-weaver-bundle.1 +15 -6
  11. package/docs/man/rom-weaver-cheat.1 +107 -0
  12. package/docs/man/rom-weaver-checksum.1 +21 -6
  13. package/docs/man/rom-weaver-completions.1 +15 -6
  14. package/docs/man/rom-weaver-compress.1 +23 -11
  15. package/docs/man/rom-weaver-extract.1 +23 -8
  16. package/docs/man/rom-weaver-formats.1 +15 -6
  17. package/docs/man/rom-weaver-identify-database-import-redump.1 +15 -6
  18. package/docs/man/rom-weaver-identify-database-install-all.1 +15 -6
  19. package/docs/man/rom-weaver-identify-database-install-group.1 +15 -6
  20. package/docs/man/rom-weaver-identify-database-install.1 +15 -6
  21. package/docs/man/rom-weaver-identify-database-list.1 +15 -6
  22. package/docs/man/rom-weaver-identify-database-path.1 +15 -6
  23. package/docs/man/rom-weaver-identify-database-remove.1 +15 -6
  24. package/docs/man/rom-weaver-identify-database-status.1 +15 -6
  25. package/docs/man/rom-weaver-identify-database-update.1 +15 -6
  26. package/docs/man/rom-weaver-identify-database.1 +15 -6
  27. package/docs/man/rom-weaver-identify.1 +27 -6
  28. package/docs/man/rom-weaver-man.1 +15 -6
  29. package/docs/man/rom-weaver-patch-apply.1 +64 -15
  30. package/docs/man/rom-weaver-patch-create.1 +33 -8
  31. package/docs/man/rom-weaver-patch-validate.1 +35 -7
  32. package/docs/man/rom-weaver-patch.1 +15 -6
  33. package/docs/man/rom-weaver-probe.1 +18 -6
  34. package/docs/man/rom-weaver-save-export-schema.1 +80 -0
  35. package/docs/man/rom-weaver-save-get.1 +83 -0
  36. package/docs/man/rom-weaver-save-identify.1 +80 -0
  37. package/docs/man/rom-weaver-save-inspect.1 +80 -0
  38. package/docs/man/rom-weaver-save-set.1 +89 -0
  39. package/docs/man/rom-weaver-save.1 +87 -0
  40. package/docs/man/rom-weaver-setup.1 +18 -6
  41. package/docs/man/rom-weaver-tools-ppf-undo.1 +16 -7
  42. package/docs/man/rom-weaver-tools.1 +15 -6
  43. package/docs/man/rom-weaver-trim.1 +24 -15
  44. package/docs/man/rom-weaver-weave.1 +64 -15
  45. package/docs/man/rom-weaver.1 +23 -8
  46. package/package.json +20 -13
@@ -18,14 +18,18 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
18
18
  }
19
19
  var completions = [
20
20
  &'rom-weaver'= {
21
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
22
- cand --json 'Print one JSON object per line instead of human-readable output'
23
- cand --progress 'Show progress even when output is piped to a file or another program'
21
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
22
+ cand -n 'Plan the command without changing files or downloading data'
23
+ cand --dry-run 'Plan the command without changing files or downloading data'
24
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
25
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
26
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
24
27
  cand --no-progress 'Hide progress'
25
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
26
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
27
- cand -q 'Log errors only'
28
- cand --quiet 'Log errors only'
28
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
29
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
30
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
31
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
32
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
29
33
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
30
34
  cand --color 'Keep colors even when output is piped'
31
35
  cand --no-color 'Turn colors off'
@@ -35,41 +39,81 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
35
39
  cand --help 'Print help (see more with ''--help'')'
36
40
  cand -V 'Print version'
37
41
  cand --version 'Print version'
42
+ cand setup 'Install the offline identify database'
43
+ cand ingest 'Sort a file into ROMs and patches, unpacking and hashing along the way'
44
+ cand cheat 'List the cheat database''s entries for a ROM'
45
+ cand bundle 'Build and read rom-weaver-bundle.json patch recipes'
46
+ cand plan-extract-batch 'Plan a memory-/thread-aware concurrent extraction schedule from per-job source sizes (no I/O)'
47
+ cand completions 'Print a tab-completion script for your shell'
48
+ cand man 'Print or install the generated CLI man pages'
49
+ cand formats 'List the formats, codecs, and checksum algorithms this build supports'
38
50
  cand probe 'Identify a file: its format, its platform, and any header it carries'
39
51
  cand inspect 'Identify a file: its format, its platform, and any header it carries'
40
- cand extract 'Unpack an archive or single-payload compressed format'
41
52
  cand checksum 'Compute checksums for a file, or for a ROM inside an archive'
42
53
  cand identify 'Identify a ROM title from its checksums'
43
- cand setup 'Install the offline identify database'
44
- cand ingest 'Sort a file into ROMs and patches, unpacking and hashing along the way'
54
+ cand extract 'Unpack an archive or single-payload compressed format'
45
55
  cand compress 'Pack files into an archive, disc image, or ROM-specific compressed format'
46
56
  cand trim 'Cut the padding off a ROM, or put it back'
57
+ cand weave 'Apply one or more patches to a ROM, in order (same as `patch apply`)'
47
58
  cand patch 'Apply, create, or check ROM patches'
48
- cand bundle 'Build and read rom-weaver-bundle.json patch recipes'
59
+ cand save 'Inspect and edit supported persistent game saves'
49
60
  cand tools 'One-off recovery tools'
50
- cand plan-extract-batch 'Plan a memory-/thread-aware concurrent extraction schedule from per-job source sizes (no I/O)'
51
- cand weave 'Apply one or more patches to a ROM, in order (same as `patch apply`)'
52
- cand completions 'Print a tab-completion script for your shell'
53
- cand man 'Print or install the generated CLI man pages'
54
- cand formats 'List the formats, codecs, and checksum algorithms this build supports'
55
61
  cand help 'Print this message or the help of the given subcommand(s)'
56
62
  }
57
- &'rom-weaver;probe'= {
58
- cand -i 'File to identify. Use - to read from stdin'
59
- cand --input 'File to identify. Use - to read from stdin'
60
- cand -s 'Pick which file inside the archive to use, by exact name, prefix, or glob (repeatable)'
61
- cand --select 'Pick which file inside the archive to use, by exact name, prefix, or glob (repeatable)'
62
- cand --filter 'Consider only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
63
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
64
- cand --no-extract 'Do not look inside archives; identify the file itself'
63
+ &'rom-weaver;setup'= {
64
+ cand --database-dir 'Install into this directory instead of the per-user data directory'
65
+ cand --from 'Local rom-weaver-identify-data.tar.br; omit to download the archive for this version'
66
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
67
+ cand --force 'Download the database again even when it is already installed'
68
+ cand -n 'Plan the command without changing files or downloading data'
69
+ cand --dry-run 'Plan the command without changing files or downloading data'
70
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
71
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
72
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
73
+ cand --no-progress 'Hide progress'
74
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
75
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
76
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
77
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
78
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
79
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
80
+ cand --color 'Keep colors even when output is piped'
81
+ cand --no-color 'Turn colors off'
82
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
83
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
84
+ cand -h 'Print help (see more with ''--help'')'
85
+ cand --help 'Print help (see more with ''--help'')'
86
+ }
87
+ &'rom-weaver;ingest'= {
88
+ cand -i 'File to sort into ROMs and patches'
89
+ cand --input 'File to sort into ROMs and patches'
90
+ cand -o 'Directory to write anything unpacked along the way into'
91
+ cand --output 'Directory to write anything unpacked along the way into'
92
+ cand -d 'RWFP1 identify pack, raw or Brotli, for ROM titles (repeatable; native defaults to built-in data)'
93
+ cand --database 'RWFP1 identify pack, raw or Brotli, for ROM titles (repeatable; native defaults to built-in data)'
94
+ cand -s 'Pick which ROM to use when the archive holds more than one, by exact name, prefix, or glob (repeatable)'
95
+ cand --select 'Pick which ROM to use when the archive holds more than one, by exact name, prefix, or glob (repeatable)'
96
+ cand --sidecar-name 'Optional loose patch names to match against `source` without ingesting it. This keeps the browser''s sibling-sidecar lookup on the ingest command surface while reusing Rust''s matcher'
97
+ cand --split-bin 'For a multi-track CD-format CHD, write one BIN per track (--split-bin) or one merged BIN (--split-bin false). Omit to be asked'
98
+ cand --checksum 'Which checksums to compute for each ROM found (repeatable, comma-separable) [default: crc32,md5,sha1]'
99
+ cand --algo 'Which checksums to compute for each ROM found (repeatable, comma-separable) [default: crc32,md5,sha1]'
100
+ cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
101
+ cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
102
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
103
+ cand --sidecar-only 'sidecar-only'
65
104
  cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
66
- cand --json 'Print one JSON object per line instead of human-readable output'
67
- cand --progress 'Show progress even when output is piped to a file or another program'
105
+ cand --no-nested-extract 'Stop after one layer; leave any archive found inside the input packed'
106
+ cand -n 'Plan the command without changing files or downloading data'
107
+ cand --dry-run 'Plan the command without changing files or downloading data'
108
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
109
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
110
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
68
111
  cand --no-progress 'Hide progress'
69
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
70
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
71
- cand -q 'Log errors only'
72
- cand --quiet 'Log errors only'
112
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
113
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
114
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
115
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
116
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
73
117
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
74
118
  cand --color 'Keep colors even when output is piped'
75
119
  cand --no-color 'Turn colors off'
@@ -78,22 +122,298 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
78
122
  cand -h 'Print help (see more with ''--help'')'
79
123
  cand --help 'Print help (see more with ''--help'')'
80
124
  }
81
- &'rom-weaver;inspect'= {
82
- cand -i 'File to identify. Use - to read from stdin'
83
- cand --input 'File to identify. Use - to read from stdin'
125
+ &'rom-weaver;cheat'= {
126
+ cand -i 'The ROM the cheats are for. Its header picks the cheat shard and its bytes decide each cheat''s delivery'
127
+ cand --input 'The ROM the cheats are for. Its header picks the cheat shard and its bytes decide each cheat''s delivery'
128
+ cand --cheat 'Database cheat to use, by record ID or exact description. Repeat for each cheat'
129
+ cand --cheat-database 'Directory holding manifest.json and the <system>.json cheat shards. Defaults to $ROM_WEAVER_CHEAT_DATABASE, then the per-user data directory'
130
+ cand --cheat-system 'Console the cheat shard is for (nes, snes, genesis, gameboy, gameboy-color, gba), when the ROM header does not say'
131
+ cand --game 'Use this database game ID instead of matching the ROM by checksum or title'
132
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
133
+ cand --allow-cheat-conflicts 'Let a later cheat overwrite an earlier one at the same offset instead of failing'
134
+ cand -n 'Plan the command without changing files or downloading data'
135
+ cand --dry-run 'Plan the command without changing files or downloading data'
136
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
137
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
138
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
139
+ cand --no-progress 'Hide progress'
140
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
141
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
142
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
143
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
144
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
145
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
146
+ cand --color 'Keep colors even when output is piped'
147
+ cand --no-color 'Turn colors off'
148
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
149
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
150
+ cand -h 'Print help (see more with ''--help'')'
151
+ cand --help 'Print help (see more with ''--help'')'
152
+ }
153
+ &'rom-weaver;bundle'= {
154
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
155
+ cand -n 'Plan the command without changing files or downloading data'
156
+ cand --dry-run 'Plan the command without changing files or downloading data'
157
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
158
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
159
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
160
+ cand --no-progress 'Hide progress'
161
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
162
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
163
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
164
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
165
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
166
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
167
+ cand --color 'Keep colors even when output is piped'
168
+ cand --no-color 'Turn colors off'
169
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
170
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
171
+ cand -h 'Print help'
172
+ cand --help 'Print help'
173
+ cand create 'Write a rom-weaver-bundle.json recipe from local ROM and patch files'
174
+ cand parse 'Read a rom-weaver-bundle.json recipe and report what it points at'
175
+ cand schema 'Print the rom-weaver-bundle.json JSON Schema, for editors and hand-authoring'
176
+ cand help 'Print this message or the help of the given subcommand(s)'
177
+ }
178
+ &'rom-weaver;bundle;create'= {
179
+ cand -i 'ROM the patches apply to. Its checksums and size are read from the file and recorded in the bundle'
180
+ cand --input 'ROM the patches apply to. Its checksums and size are read from the file and recorded in the bundle'
181
+ cand --assume-in 'Take the ROM''s checksum and size on trust rather than reading it, as in crc32=1234abcd,size=1048576 (repeatable, comma-separable)'
182
+ cand --rom-url 'Where the ROM can be downloaded from. With --input, the local file still supplies the checksums; on its own, the bundle records only this url'
183
+ cand --rom-name 'Expected source ROM file name to show and use for output naming; a mismatch is advisory'
184
+ cand --rom-member 'Use this exact archive member or disc track as the bundle ROM target'
185
+ cand --patch 'Patch to list in the bundle. Repeat once per patch, in the order they should be applied'
186
+ cand --patch-id 'Identifier for the preceding --patch that stays the same across releases, so a replacement keeps its settings'
187
+ cand --patch-version 'Version of the preceding --patch, in whatever form its author uses'
188
+ cand --patch-name 'Name to show for the preceding --patch'
189
+ cand --patch-description 'What the preceding --patch does'
190
+ cand --patch-author 'Who made the preceding --patch'
191
+ cand --patch-label 'Short status note for the preceding --patch, such as beta or recommended'
192
+ cand --patch-optional 'Mark the preceding --patch optional, so it starts switched off and needs --with to run'
193
+ cand --patch-source-url 'Where the preceding --patch can be downloaded from. The local file is still read to build the bundle'
194
+ cand --patch-header 'Whether the preceding --patch applies to the ROM with or without its copier header: auto, keep, or strip'
195
+ cand --patch-basis 'Override the preceding --patch input rule: base or previous. Use auto to inherit the bundle rule'
196
+ cand --default-patch-basis 'Shared input ROM rule recorded in the v2 bundle: auto, base, or previous [default: auto]'
197
+ cand --patch-expect-in 'Checksum the ROM should have before the preceding --patch runs. Recorded only when it differs from the bundle''s ROM checksums (repeatable, comma-separable)'
198
+ cand --patch-expect-out 'Checksum the ROM should have after the preceding --patch runs. Recorded only when it differs from the final output checksums (repeatable, comma-separable)'
199
+ cand --expect-out 'Checksum the ROM should have once every patch has run, so users can confirm they got the right result (repeatable, comma-separable)'
200
+ cand --output-name 'File name the bundle suggests for the patched ROM'
201
+ cand --output-header 'Whether the patched ROM should keep its copier header: auto, keep, or strip'
202
+ cand --cheat 'Database cheat to use, by record ID or exact description. Repeat for each cheat'
203
+ cand --cheat-database 'Directory holding manifest.json and the <system>.json cheat shards. Defaults to $ROM_WEAVER_CHEAT_DATABASE, then the per-user data directory'
204
+ cand --cheat-system 'Console the cheat shard is for (nes, snes, genesis, gameboy, gameboy-color, gba), when the ROM header does not say'
205
+ cand --game 'Use this database game ID instead of matching the ROM by checksum or title'
206
+ cand -o 'Where to write the bundle. Name it rom-weaver-bundle.json, or add .gz or .zst to compress it'
207
+ cand --output 'Where to write the bundle. Name it rom-weaver-bundle.json, or add .gz or .zst to compress it'
208
+ cand --bundle 'Also pack the bundle and its ROM and patches into one shareable archive, such as release.zip'
209
+ cand --bundle-rom 'Pack this file into --bundle as the ROM, while --input supplies the checksums and metadata'
210
+ cand --checksum 'Which checksums to record for the ROM (repeatable, comma-separable) [default: crc32,md5,sha1]'
211
+ cand --algo 'Which checksums to record for the ROM (repeatable, comma-separable) [default: crc32,md5,sha1]'
212
+ cand --from 'Build the bundle from a hand-written rom-weaver-bundle.json instead of flags. Use - to read it from stdin'
213
+ cand --schema-ref 'Record this $schema URL in the bundle so editors can validate it. Left out unless asked for'
214
+ cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
215
+ cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
216
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
217
+ cand --allow-cheat-conflicts 'Let a later cheat overwrite an earlier one at the same offset instead of failing'
218
+ cand --no-bundle-rom 'Keep the ROM out of --bundle and record only its checksums, so whoever applies the bundle brings their own copy'
219
+ cand --force 'Overwrite the output if it already exists (without this, the command stops instead)'
220
+ cand -n 'Plan the command without changing files or downloading data'
221
+ cand --dry-run 'Plan the command without changing files or downloading data'
222
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
223
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
224
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
225
+ cand --no-progress 'Hide progress'
226
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
227
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
228
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
229
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
230
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
231
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
232
+ cand --color 'Keep colors even when output is piped'
233
+ cand --no-color 'Turn colors off'
234
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
235
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
236
+ cand -h 'Print help (see more with ''--help'')'
237
+ cand --help 'Print help (see more with ''--help'')'
238
+ }
239
+ &'rom-weaver;bundle;parse'= {
240
+ cand -i 'Bundle file, or an archive with a bundle at its root'
241
+ cand --input 'Bundle file, or an archive with a bundle at its root'
242
+ cand -s 'Handle only the bundle entries whose file name matches this exact name, prefix, or glob (repeatable)'
243
+ cand --select 'Handle only the bundle entries whose file name matches this exact name, prefix, or glob (repeatable)'
244
+ cand --filter 'Handle only the bundle''s rom entry or only its patch entries (repeatable, comma-separable)'
245
+ cand -o 'Directory to unpack the bundle''s files into. Without it, files packed in an archive are listed but not written out'
246
+ cand --output 'Directory to unpack the bundle''s files into. Without it, files packed in an archive are listed but not written out'
247
+ cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
248
+ cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
249
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
250
+ cand --no-extract 'Report what the bundle contains without unpacking any of it'
251
+ cand -n 'Plan the command without changing files or downloading data'
252
+ cand --dry-run 'Plan the command without changing files or downloading data'
253
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
254
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
255
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
256
+ cand --no-progress 'Hide progress'
257
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
258
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
259
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
260
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
261
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
262
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
263
+ cand --color 'Keep colors even when output is piped'
264
+ cand --no-color 'Turn colors off'
265
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
266
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
267
+ cand -h 'Print help (see more with ''--help'')'
268
+ cand --help 'Print help (see more with ''--help'')'
269
+ }
270
+ &'rom-weaver;bundle;schema'= {
271
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
272
+ cand -n 'Plan the command without changing files or downloading data'
273
+ cand --dry-run 'Plan the command without changing files or downloading data'
274
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
275
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
276
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
277
+ cand --no-progress 'Hide progress'
278
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
279
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
280
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
281
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
282
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
283
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
284
+ cand --color 'Keep colors even when output is piped'
285
+ cand --no-color 'Turn colors off'
286
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
287
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
288
+ cand -h 'Print help (see more with ''--help'')'
289
+ cand --help 'Print help (see more with ''--help'')'
290
+ }
291
+ &'rom-weaver;bundle;help'= {
292
+ cand create 'Write a rom-weaver-bundle.json recipe from local ROM and patch files'
293
+ cand parse 'Read a rom-weaver-bundle.json recipe and report what it points at'
294
+ cand schema 'Print the rom-weaver-bundle.json JSON Schema, for editors and hand-authoring'
295
+ cand help 'Print this message or the help of the given subcommand(s)'
296
+ }
297
+ &'rom-weaver;bundle;help;create'= {
298
+ }
299
+ &'rom-weaver;bundle;help;parse'= {
300
+ }
301
+ &'rom-weaver;bundle;help;schema'= {
302
+ }
303
+ &'rom-weaver;bundle;help;help'= {
304
+ }
305
+ &'rom-weaver;plan-extract-batch'= {
306
+ cand --job-size 'Source size in bytes for one job; repeat once per job, in input order'
307
+ cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
308
+ cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
309
+ cand --max-concurrency 'Hard cap on jobs running at once; defaults to the thread budget'
310
+ cand --total-memory-bytes 'Total memory budget concurrent jobs may reserve (e.g. browser device memory); defaults to the platform''s physical memory'
311
+ cand --memory-ceiling-bytes 'Combined working-set ceiling to plan against, used verbatim (no fraction/clamp). The browser passes its own resolved, mobile-capped ceiling here; when set it overrides --total-memory-bytes'
312
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
313
+ cand -n 'Plan the command without changing files or downloading data'
314
+ cand --dry-run 'Plan the command without changing files or downloading data'
315
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
316
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
317
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
318
+ cand --no-progress 'Hide progress'
319
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
320
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
321
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
322
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
323
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
324
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
325
+ cand --color 'Keep colors even when output is piped'
326
+ cand --no-color 'Turn colors off'
327
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
328
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
329
+ cand -h 'Print help'
330
+ cand --help 'Print help'
331
+ }
332
+ &'rom-weaver;completions'= {
333
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
334
+ cand -n 'Plan the command without changing files or downloading data'
335
+ cand --dry-run 'Plan the command without changing files or downloading data'
336
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
337
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
338
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
339
+ cand --no-progress 'Hide progress'
340
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
341
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
342
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
343
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
344
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
345
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
346
+ cand --color 'Keep colors even when output is piped'
347
+ cand --no-color 'Turn colors off'
348
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
349
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
350
+ cand -h 'Print help (see more with ''--help'')'
351
+ cand --help 'Print help (see more with ''--help'')'
352
+ }
353
+ &'rom-weaver;man'= {
354
+ cand --man-dir 'Directory to install pages into'
355
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
356
+ cand --install 'Install the generated pages instead of printing one'
357
+ cand -n 'Plan the command without changing files or downloading data'
358
+ cand --dry-run 'Plan the command without changing files or downloading data'
359
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
360
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
361
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
362
+ cand --no-progress 'Hide progress'
363
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
364
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
365
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
366
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
367
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
368
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
369
+ cand --color 'Keep colors even when output is piped'
370
+ cand --no-color 'Turn colors off'
371
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
372
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
373
+ cand -h 'Print help (see more with ''--help'')'
374
+ cand --help 'Print help (see more with ''--help'')'
375
+ }
376
+ &'rom-weaver;formats'= {
377
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
378
+ cand -n 'Plan the command without changing files or downloading data'
379
+ cand --dry-run 'Plan the command without changing files or downloading data'
380
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
381
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
382
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
383
+ cand --no-progress 'Hide progress'
384
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
385
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
386
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
387
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
388
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
389
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
390
+ cand --color 'Keep colors even when output is piped'
391
+ cand --no-color 'Turn colors off'
392
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
393
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
394
+ cand -h 'Print help (see more with ''--help'')'
395
+ cand --help 'Print help (see more with ''--help'')'
396
+ }
397
+ &'rom-weaver;probe'= {
84
398
  cand -s 'Pick which file inside the archive to use, by exact name, prefix, or glob (repeatable)'
85
399
  cand --select 'Pick which file inside the archive to use, by exact name, prefix, or glob (repeatable)'
86
400
  cand --filter 'Consider only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
87
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
401
+ cand -i 'File to identify. Use - to read from stdin'
402
+ cand --input 'File to identify. Use - to read from stdin'
403
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
88
404
  cand --no-extract 'Do not look inside archives; identify the file itself'
89
405
  cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
90
- cand --json 'Print one JSON object per line instead of human-readable output'
91
- cand --progress 'Show progress even when output is piped to a file or another program'
406
+ cand -n 'Plan the command without changing files or downloading data'
407
+ cand --dry-run 'Plan the command without changing files or downloading data'
408
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
409
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
410
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
92
411
  cand --no-progress 'Hide progress'
93
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
94
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
95
- cand -q 'Log errors only'
96
- cand --quiet 'Log errors only'
412
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
413
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
414
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
415
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
416
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
97
417
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
98
418
  cand --color 'Keep colors even when output is piped'
99
419
  cand --no-color 'Turn colors off'
@@ -102,32 +422,26 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
102
422
  cand -h 'Print help (see more with ''--help'')'
103
423
  cand --help 'Print help (see more with ''--help'')'
104
424
  }
105
- &'rom-weaver;extract'= {
106
- cand -i 'Archive or single-payload compressed format to unpack'
107
- cand --input 'Archive or single-payload compressed format to unpack'
108
- cand -s 'Extract only these files, by exact name, prefix, or glob (repeatable). For example: --select ''game.disc0?.bin'''
109
- cand --select 'Extract only these files, by exact name, prefix, or glob (repeatable). For example: --select ''game.disc0?.bin'''
110
- cand --filter 'Extract only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
111
- cand -o 'Directory to write the extracted files into'
112
- cand --output 'Directory to write the extracted files into'
113
- cand --checksum 'Also hash every extracted file (repeatable, comma-separable)'
114
- cand --algo 'Also hash every extracted file (repeatable, comma-separable)'
115
- cand --checksum-rom 'Like --checksum, but hash only the ROMs and skip sidecar files. Cannot be combined with --checksum'
116
- cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
117
- cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
118
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
119
- cand --split-bin 'Write a CD-format CHD as a CUE plus one BIN per track (*.trackNN.bin), rather than one merged BIN'
425
+ &'rom-weaver;inspect'= {
426
+ cand -s 'Pick which file inside the archive to use, by exact name, prefix, or glob (repeatable)'
427
+ cand --select 'Pick which file inside the archive to use, by exact name, prefix, or glob (repeatable)'
428
+ cand --filter 'Consider only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
429
+ cand -i 'File to identify. Use - to read from stdin'
430
+ cand --input 'File to identify. Use - to read from stdin'
431
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
432
+ cand --no-extract 'Do not look inside archives; identify the file itself'
120
433
  cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
121
- cand --no-nested-extract 'Stop after one layer; leave any archive found inside the input packed'
122
- cand --force 'Overwrite files already in the output directory (without this, extraction stops instead)'
123
- cand --probe 'Also report the format and platform of what was extracted, and fail if a lone payload matches no known platform'
124
- cand --json 'Print one JSON object per line instead of human-readable output'
125
- cand --progress 'Show progress even when output is piped to a file or another program'
434
+ cand -n 'Plan the command without changing files or downloading data'
435
+ cand --dry-run 'Plan the command without changing files or downloading data'
436
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
437
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
438
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
126
439
  cand --no-progress 'Hide progress'
127
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
128
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
129
- cand -q 'Log errors only'
130
- cand --quiet 'Log errors only'
440
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
441
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
442
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
443
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
444
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
131
445
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
132
446
  cand --color 'Keep colors even when output is piped'
133
447
  cand --no-color 'Turn colors off'
@@ -137,8 +451,6 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
137
451
  cand --help 'Print help (see more with ''--help'')'
138
452
  }
139
453
  &'rom-weaver;checksum'= {
140
- cand -i 'File to hash. Use - to read from stdin'
141
- cand --input 'File to hash. Use - to read from stdin'
142
454
  cand -a 'Which checksum to compute (repeatable, comma-separable)'
143
455
  cand --algo 'Which checksum to compute (repeatable, comma-separable)'
144
456
  cand --checksum 'Which checksum to compute (repeatable, comma-separable)'
@@ -149,18 +461,25 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
149
461
  cand --length 'How many bytes to hash from --start. Defaults to the rest of the file'
150
462
  cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
151
463
  cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
152
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
464
+ cand -i 'File to hash. Use - to read from stdin'
465
+ cand --input 'File to hash. Use - to read from stdin'
466
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
153
467
  cand --no-extract 'Do not look inside archives; hash the file itself'
154
468
  cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
155
469
  cand --no-trim-fix 'Skip the extra checksums computed for how a trimmable ROM would hash trimmed or untrimmed'
156
470
  cand --probe 'Also report the platform of the hashed bytes, and fail if it matches no known platform'
157
- cand --json 'Print one JSON object per line instead of human-readable output'
158
- cand --progress 'Show progress even when output is piped to a file or another program'
471
+ cand --digest 'Print only the digest; requires one --algo (no labels or elapsed time)'
472
+ cand -n 'Plan the command without changing files or downloading data'
473
+ cand --dry-run 'Plan the command without changing files or downloading data'
474
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
475
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
476
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
159
477
  cand --no-progress 'Hide progress'
160
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
161
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
162
- cand -q 'Log errors only'
163
- cand --quiet 'Log errors only'
478
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
479
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
480
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
481
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
482
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
164
483
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
165
484
  cand --color 'Keep colors even when output is piped'
166
485
  cand --no-color 'Turn colors off'
@@ -177,25 +496,32 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
177
496
  cand -d 'RWFP1 identify pack, raw or Brotli, to search instead of the built-in data (repeatable)'
178
497
  cand --database 'RWFP1 identify pack, raw or Brotli, to search instead of the built-in data (repeatable)'
179
498
  cand --system 'Search only this system''s pack. Takes a canonical platform name or a common alias (e.g. `snes`, `psx`)'
499
+ cand --name 'Search the database for games whose name matches QUERY, instead of identifying a file or checksum'
500
+ cand --title-index 'Search a cross-platform title index with --name instead of database packs'
501
+ cand --limit 'Maximum number of matches --name returns [default: 50]'
180
502
  cand --database-dir 'Directory of installed identify packs (*.pack plus optional catalog.json). Defaults to the per-user data directory'
181
503
  cand -s 'Pick which file inside the archive to use, by exact name, prefix, or glob (repeatable)'
182
504
  cand --select 'Pick which file inside the archive to use, by exact name, prefix, or glob (repeatable)'
183
505
  cand --filter 'Consider only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
184
506
  cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
185
507
  cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
186
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
508
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
187
509
  cand --offline 'Assert that identify performs no network access (it never does natively; this flag records the guarantee)'
188
510
  cand --exhaustive-database-search 'Search every installed pack instead of only the packs the detected platform routes to'
189
511
  cand --no-extract 'Do not look inside archives; identify the file itself'
190
512
  cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
191
513
  cand --no-trim-fix 'Skip extra checksums for trimmed and untrimmed ROM forms'
192
- cand --json 'Print one JSON object per line instead of human-readable output'
193
- cand --progress 'Show progress even when output is piped to a file or another program'
514
+ cand -n 'Plan the command without changing files or downloading data'
515
+ cand --dry-run 'Plan the command without changing files or downloading data'
516
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
517
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
518
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
194
519
  cand --no-progress 'Hide progress'
195
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
196
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
197
- cand -q 'Log errors only'
198
- cand --quiet 'Log errors only'
520
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
521
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
522
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
523
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
524
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
199
525
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
200
526
  cand --color 'Keep colors even when output is piped'
201
527
  cand --no-color 'Turn colors off'
@@ -207,14 +533,18 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
207
533
  cand help 'Print this message or the help of the given subcommand(s)'
208
534
  }
209
535
  &'rom-weaver;identify;database'= {
210
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
211
- cand --json 'Print one JSON object per line instead of human-readable output'
212
- cand --progress 'Show progress even when output is piped to a file or another program'
536
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
537
+ cand -n 'Plan the command without changing files or downloading data'
538
+ cand --dry-run 'Plan the command without changing files or downloading data'
539
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
540
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
541
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
213
542
  cand --no-progress 'Hide progress'
214
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
215
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
216
- cand -q 'Log errors only'
217
- cand --quiet 'Log errors only'
543
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
544
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
545
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
546
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
547
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
218
548
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
219
549
  cand --color 'Keep colors even when output is piped'
220
550
  cand --no-color 'Turn colors off'
@@ -235,14 +565,18 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
235
565
  }
236
566
  &'rom-weaver;identify;database;list'= {
237
567
  cand --database-dir 'Identify database directory. Defaults to the per-user data directory'
238
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
239
- cand --json 'Print one JSON object per line instead of human-readable output'
240
- cand --progress 'Show progress even when output is piped to a file or another program'
568
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
569
+ cand -n 'Plan the command without changing files or downloading data'
570
+ cand --dry-run 'Plan the command without changing files or downloading data'
571
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
572
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
573
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
241
574
  cand --no-progress 'Hide progress'
242
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
243
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
244
- cand -q 'Log errors only'
245
- cand --quiet 'Log errors only'
575
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
576
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
577
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
578
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
579
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
246
580
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
247
581
  cand --color 'Keep colors even when output is piped'
248
582
  cand --no-color 'Turn colors off'
@@ -253,14 +587,18 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
253
587
  }
254
588
  &'rom-weaver;identify;database;status'= {
255
589
  cand --database-dir 'Identify database directory. Defaults to the per-user data directory'
256
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
257
- cand --json 'Print one JSON object per line instead of human-readable output'
258
- cand --progress 'Show progress even when output is piped to a file or another program'
590
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
591
+ cand -n 'Plan the command without changing files or downloading data'
592
+ cand --dry-run 'Plan the command without changing files or downloading data'
593
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
594
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
595
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
259
596
  cand --no-progress 'Hide progress'
260
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
261
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
262
- cand -q 'Log errors only'
263
- cand --quiet 'Log errors only'
597
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
598
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
599
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
600
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
601
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
264
602
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
265
603
  cand --color 'Keep colors even when output is piped'
266
604
  cand --no-color 'Turn colors off'
@@ -271,14 +609,18 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
271
609
  }
272
610
  &'rom-weaver;identify;database;path'= {
273
611
  cand --database-dir 'Identify database directory. Defaults to the per-user data directory'
274
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
275
- cand --json 'Print one JSON object per line instead of human-readable output'
276
- cand --progress 'Show progress even when output is piped to a file or another program'
612
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
613
+ cand -n 'Plan the command without changing files or downloading data'
614
+ cand --dry-run 'Plan the command without changing files or downloading data'
615
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
616
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
617
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
277
618
  cand --no-progress 'Hide progress'
278
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
279
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
280
- cand -q 'Log errors only'
281
- cand --quiet 'Log errors only'
619
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
620
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
621
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
622
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
623
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
282
624
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
283
625
  cand --color 'Keep colors even when output is piped'
284
626
  cand --no-color 'Turn colors off'
@@ -289,14 +631,18 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
289
631
  }
290
632
  &'rom-weaver;identify;database;remove'= {
291
633
  cand --database-dir 'Identify database directory. Defaults to the per-user data directory'
292
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
293
- cand --json 'Print one JSON object per line instead of human-readable output'
294
- cand --progress 'Show progress even when output is piped to a file or another program'
634
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
635
+ cand -n 'Plan the command without changing files or downloading data'
636
+ cand --dry-run 'Plan the command without changing files or downloading data'
637
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
638
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
639
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
295
640
  cand --no-progress 'Hide progress'
296
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
297
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
298
- cand -q 'Log errors only'
299
- cand --quiet 'Log errors only'
641
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
642
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
643
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
644
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
645
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
300
646
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
301
647
  cand --color 'Keep colors even when output is piped'
302
648
  cand --no-color 'Turn colors off'
@@ -307,14 +653,18 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
307
653
  }
308
654
  &'rom-weaver;identify;database;import-redump'= {
309
655
  cand --database-dir 'Identify database directory. Defaults to the per-user data directory'
310
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
311
- cand --json 'Print one JSON object per line instead of human-readable output'
312
- cand --progress 'Show progress even when output is piped to a file or another program'
656
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
657
+ cand -n 'Plan the command without changing files or downloading data'
658
+ cand --dry-run 'Plan the command without changing files or downloading data'
659
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
660
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
661
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
313
662
  cand --no-progress 'Hide progress'
314
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
315
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
316
- cand -q 'Log errors only'
317
- cand --quiet 'Log errors only'
663
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
664
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
665
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
666
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
667
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
318
668
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
319
669
  cand --color 'Keep colors even when output is piped'
320
670
  cand --no-color 'Turn colors off'
@@ -325,14 +675,18 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
325
675
  }
326
676
  &'rom-weaver;identify;database;install-all'= {
327
677
  cand --database-dir 'Identify database directory. Defaults to the per-user data directory'
328
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
329
- cand --json 'Print one JSON object per line instead of human-readable output'
330
- cand --progress 'Show progress even when output is piped to a file or another program'
678
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
679
+ cand -n 'Plan the command without changing files or downloading data'
680
+ cand --dry-run 'Plan the command without changing files or downloading data'
681
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
682
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
683
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
331
684
  cand --no-progress 'Hide progress'
332
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
333
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
334
- cand -q 'Log errors only'
335
- cand --quiet 'Log errors only'
685
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
686
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
687
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
688
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
689
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
336
690
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
337
691
  cand --color 'Keep colors even when output is piped'
338
692
  cand --no-color 'Turn colors off'
@@ -344,14 +698,18 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
344
698
  &'rom-weaver;identify;database;install-group'= {
345
699
  cand --from 'Local group archive; omit to download the archive for this version'
346
700
  cand --database-dir 'Identify database directory. Defaults to the per-user data directory'
347
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
348
- cand --json 'Print one JSON object per line instead of human-readable output'
349
- cand --progress 'Show progress even when output is piped to a file or another program'
701
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
702
+ cand -n 'Plan the command without changing files or downloading data'
703
+ cand --dry-run 'Plan the command without changing files or downloading data'
704
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
705
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
706
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
350
707
  cand --no-progress 'Hide progress'
351
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
352
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
353
- cand -q 'Log errors only'
354
- cand --quiet 'Log errors only'
708
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
709
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
710
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
711
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
712
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
355
713
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
356
714
  cand --color 'Keep colors even when output is piped'
357
715
  cand --no-color 'Turn colors off'
@@ -363,15 +721,19 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
363
721
  &'rom-weaver;identify;database;install'= {
364
722
  cand --from 'Local Redump DAT ZIP file; omit to download from Redump'
365
723
  cand --database-dir 'Identify database directory. Defaults to the per-user data directory'
366
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
724
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
367
725
  cand --all 'Install every platform in the dump'
368
- cand --json 'Print one JSON object per line instead of human-readable output'
369
- cand --progress 'Show progress even when output is piped to a file or another program'
726
+ cand -n 'Plan the command without changing files or downloading data'
727
+ cand --dry-run 'Plan the command without changing files or downloading data'
728
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
729
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
730
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
370
731
  cand --no-progress 'Hide progress'
371
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
372
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
373
- cand -q 'Log errors only'
374
- cand --quiet 'Log errors only'
732
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
733
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
734
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
735
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
736
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
375
737
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
376
738
  cand --color 'Keep colors even when output is piped'
377
739
  cand --no-color 'Turn colors off'
@@ -383,14 +745,18 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
383
745
  &'rom-weaver;identify;database;update'= {
384
746
  cand --from 'Local Redump DAT ZIP file; omit to download from Redump'
385
747
  cand --database-dir 'Identify database directory. Defaults to the per-user data directory'
386
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
387
- cand --json 'Print one JSON object per line instead of human-readable output'
388
- cand --progress 'Show progress even when output is piped to a file or another program'
748
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
749
+ cand -n 'Plan the command without changing files or downloading data'
750
+ cand --dry-run 'Plan the command without changing files or downloading data'
751
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
752
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
753
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
389
754
  cand --no-progress 'Hide progress'
390
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
391
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
392
- cand -q 'Log errors only'
393
- cand --quiet 'Log errors only'
755
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
756
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
757
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
758
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
759
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
394
760
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
395
761
  cand --color 'Keep colors even when output is piped'
396
762
  cand --no-color 'Turn colors off'
@@ -466,51 +832,37 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
466
832
  }
467
833
  &'rom-weaver;identify;help;help'= {
468
834
  }
469
- &'rom-weaver;setup'= {
470
- cand --database-dir 'Install into this directory instead of the per-user data directory'
471
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
472
- cand --force 'Download the database again even when it is already installed'
473
- cand --json 'Print one JSON object per line instead of human-readable output'
474
- cand --progress 'Show progress even when output is piped to a file or another program'
475
- cand --no-progress 'Hide progress'
476
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
477
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
478
- cand -q 'Log errors only'
479
- cand --quiet 'Log errors only'
480
- cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
481
- cand --color 'Keep colors even when output is piped'
482
- cand --no-color 'Turn colors off'
483
- cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
484
- cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
485
- cand -h 'Print help (see more with ''--help'')'
486
- cand --help 'Print help (see more with ''--help'')'
487
- }
488
- &'rom-weaver;ingest'= {
489
- cand -i 'File to sort into ROMs and patches'
490
- cand --input 'File to sort into ROMs and patches'
491
- cand -o 'Directory to write anything unpacked along the way into'
492
- cand --output 'Directory to write anything unpacked along the way into'
493
- cand -d 'RWFP1 identify pack, raw or Brotli, for ROM titles (repeatable; native defaults to built-in data)'
494
- cand --database 'RWFP1 identify pack, raw or Brotli, for ROM titles (repeatable; native defaults to built-in data)'
495
- cand -s 'Pick which ROM to use when the archive holds more than one, by exact name, prefix, or glob (repeatable)'
496
- cand --select 'Pick which ROM to use when the archive holds more than one, by exact name, prefix, or glob (repeatable)'
497
- cand --sidecar-name 'Optional loose patch names to match against `source` without ingesting it. This keeps the browser''s sibling-sidecar lookup on the ingest command surface while reusing Rust''s matcher'
498
- cand --split-bin 'For a multi-track CD-format CHD, write one BIN per track (--split-bin) or one merged BIN (--split-bin false). Omit to be asked'
499
- cand --checksum 'Which checksums to compute for each ROM found (repeatable, comma-separable) [default: crc32,md5,sha1]'
500
- cand --algo 'Which checksums to compute for each ROM found (repeatable, comma-separable) [default: crc32,md5,sha1]'
835
+ &'rom-weaver;extract'= {
836
+ cand -s 'Extract only these files, by exact name, prefix, or glob (repeatable). For example: --select ''game.disc0?.bin'''
837
+ cand --select 'Extract only these files, by exact name, prefix, or glob (repeatable). For example: --select ''game.disc0?.bin'''
838
+ cand --filter 'Extract only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
839
+ cand --checksum 'Also hash every extracted file (repeatable, comma-separable)'
840
+ cand --algo 'Also hash every extracted file (repeatable, comma-separable)'
841
+ cand --checksum-rom 'Like --checksum, but hash only the ROMs and skip sidecar files. Cannot be combined with --checksum'
501
842
  cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
502
843
  cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
503
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
504
- cand --sidecar-only 'sidecar-only'
844
+ cand --stdin-name 'Filename for input - (default: stdin.bin); one filename, no directories'
845
+ cand -i 'Input path; - reads stdin using a temporary file'
846
+ cand --input 'Input path; - reads stdin using a temporary file'
847
+ cand -o 'Output path; - writes one binary result to stdout (compress requires --format)'
848
+ cand --output 'Output path; - writes one binary result to stdout (compress requires --format)'
849
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
850
+ cand --split-bin 'Write a CD-format CHD as a CUE plus one BIN per track (*.trackNN.bin), rather than one merged BIN'
505
851
  cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
506
852
  cand --no-nested-extract 'Stop after one layer; leave any archive found inside the input packed'
507
- cand --json 'Print one JSON object per line instead of human-readable output'
508
- cand --progress 'Show progress even when output is piped to a file or another program'
853
+ cand --force 'Overwrite files already in the output directory (without this, extraction stops instead)'
854
+ cand --probe 'Also report the format and platform of what was extracted, and fail if a lone payload matches no known platform'
855
+ cand -n 'Plan the command without changing files or downloading data'
856
+ cand --dry-run 'Plan the command without changing files or downloading data'
857
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
858
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
859
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
509
860
  cand --no-progress 'Hide progress'
510
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
511
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
512
- cand -q 'Log errors only'
513
- cand --quiet 'Log errors only'
861
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
862
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
863
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
864
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
865
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
514
866
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
515
867
  cand --color 'Keep colors even when output is piped'
516
868
  cand --no-color 'Turn colors off'
@@ -520,27 +872,30 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
520
872
  cand --help 'Print help (see more with ''--help'')'
521
873
  }
522
874
  &'rom-weaver;compress'= {
523
- cand -i 'File to put in the archive; repeat for each one. For a disc image, pass the .cue or .gdi alone and its tracks come along'
524
- cand --input 'File to put in the archive; repeat for each one. For a disc image, pass the .cue or .gdi alone and its tracks come along'
525
875
  cand -f 'Output format, such as zip, 7z, chd, rvz, or z3ds [default: from the --output extension]'
526
876
  cand --format 'Output format, such as zip, 7z, chd, rvz, or z3ds [default: from the --output extension]'
527
- cand -o 'Where to write the archive'
528
- cand --output 'Where to write the archive'
529
877
  cand --codec 'Compression method to use, as codec or codec:level (repeatable, comma-separable)'
530
878
  cand --level 'How hard to compress: min, very-low, low, medium, high, very-high, or max'
531
879
  cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
532
880
  cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
533
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
881
+ cand --stdin-name 'Filename for input - (default: stdin.bin); one filename, no directories'
882
+ cand -i 'Input path; - reads stdin using a temporary file'
883
+ cand --input 'Input path; - reads stdin using a temporary file'
884
+ cand -o 'Output path; - writes one binary result to stdout (compress requires --format)'
885
+ cand --output 'Output path; - writes one binary result to stdout (compress requires --format)'
886
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
534
887
  cand --force 'Overwrite the output if it already exists (without this, the command stops instead)'
535
- cand -n 'Print the plan (inputs, output, format, codec, level, threads) and stop without writing'
536
- cand --dry-run 'Print the plan (inputs, output, format, codec, level, threads) and stop without writing'
537
- cand --json 'Print one JSON object per line instead of human-readable output'
538
- cand --progress 'Show progress even when output is piped to a file or another program'
888
+ cand -n 'Plan the command without changing files or downloading data'
889
+ cand --dry-run 'Plan the command without changing files or downloading data'
890
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
891
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
892
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
539
893
  cand --no-progress 'Hide progress'
540
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
541
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
542
- cand -q 'Log errors only'
543
- cand --quiet 'Log errors only'
894
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
895
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
896
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
897
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
898
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
544
899
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
545
900
  cand --color 'Keep colors even when output is piped'
546
901
  cand --no-color 'Turn colors off'
@@ -550,35 +905,37 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
550
905
  cand --help 'Print help (see more with ''--help'')'
551
906
  }
552
907
  &'rom-weaver;trim'= {
553
- cand -i 'File or folder to trim. Repeat for each one'
554
- cand --input 'File or folder to trim. Repeat for each one'
555
- cand -o 'Where to write the trimmed file. Only valid with a single trimmable input'
556
- cand --output 'Where to write the trimmed file. Only valid with a single trimmable input'
557
908
  cand -e 'Save next to each original under this extension. {ext} stands for the original one, as in trim.{ext}'
558
909
  cand --extension 'Save next to each original under this extension. {ext} stands for the original one, as in trim.{ext}'
559
910
  cand --filter 'Consider only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
560
911
  cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
561
912
  cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
562
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
913
+ cand -i 'File or folder to trim. Repeat for each one'
914
+ cand --input 'File or folder to trim. Repeat for each one'
915
+ cand -o 'Output path; - writes one completed binary file to stdout'
916
+ cand --output 'Output path; - writes one completed binary file to stdout'
917
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
563
918
  cand --in-place 'Overwrite the original instead of writing a new file'
564
- cand -n 'Report what would be trimmed without writing anything'
565
- cand --dry-run 'Report what would be trimmed without writing anything'
566
919
  cand --revert 'Pad a trimmed file back to full size (NDS, GBA, and 3DS only)'
567
920
  cand --untrim 'Pad a trimmed file back to full size (NDS, GBA, and 3DS only)'
568
921
  cand --restore 'Pad a trimmed file back to full size (NDS, GBA, and 3DS only)'
569
922
  cand --no-recursive 'When an input is a folder, look only at its top level'
570
923
  cand --no-filter 'Consider every file inside an archive, not just the ones that look like ROMs'
571
924
  cand --no-extract 'Do not look inside archives; trim only the files named directly'
572
- cand --revert-marker 'Add a small footer recording what was cut, so --revert can restore the original exactly'
573
- cand --reversible 'Add a small footer recording what was cut, so --revert can restore the original exactly'
925
+ cand --revert-marker 'Add a footer with the original size and a fill byte for --revert'
926
+ cand --reversible 'Add a footer with the original size and a fill byte for --revert'
574
927
  cand --force 'Overwrite the output if it already exists (without this, the command stops instead)'
575
- cand --json 'Print one JSON object per line instead of human-readable output'
576
- cand --progress 'Show progress even when output is piped to a file or another program'
928
+ cand -n 'Plan the command without changing files or downloading data'
929
+ cand --dry-run 'Plan the command without changing files or downloading data'
930
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
931
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
932
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
577
933
  cand --no-progress 'Hide progress'
578
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
579
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
580
- cand -q 'Log errors only'
581
- cand --quiet 'Log errors only'
934
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
935
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
936
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
937
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
938
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
582
939
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
583
940
  cand --color 'Keep colors even when output is piped'
584
941
  cand --no-color 'Turn colors off'
@@ -587,29 +944,7 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
587
944
  cand -h 'Print help (see more with ''--help'')'
588
945
  cand --help 'Print help (see more with ''--help'')'
589
946
  }
590
- &'rom-weaver;patch'= {
591
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
592
- cand --json 'Print one JSON object per line instead of human-readable output'
593
- cand --progress 'Show progress even when output is piped to a file or another program'
594
- cand --no-progress 'Hide progress'
595
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
596
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
597
- cand -q 'Log errors only'
598
- cand --quiet 'Log errors only'
599
- cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
600
- cand --color 'Keep colors even when output is piped'
601
- cand --no-color 'Turn colors off'
602
- cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
603
- cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
604
- cand -h 'Print help'
605
- cand --help 'Print help'
606
- cand apply 'Apply one or more patches to a ROM, in order'
607
- cand weave 'Apply one or more patches to a ROM, in order'
608
- cand validate 'Check that patches would apply cleanly, without writing anything'
609
- cand create 'Build a patch from an original ROM and a changed one'
610
- cand help 'Print this message or the help of the given subcommand(s)'
611
- }
612
- &'rom-weaver;patch;apply'= {
947
+ &'rom-weaver;weave'= {
613
948
  cand -i 'ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle'
614
949
  cand --input 'ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle'
615
950
  cand -s 'Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable). --patch-select overrides it for the patch it follows'
@@ -618,8 +953,6 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
618
953
  cand --filter 'Consider only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
619
954
  cand --patch 'Patch to apply. Repeat once per patch; they run in the order given'
620
955
  cand --patch-select 'Pick which file to use inside the --patch archive before it. Repeatable, one per --patch; falls back to --select'
621
- cand -o 'Where to write the patched ROM. Optional when a bundle already names the output'
622
- cand --output 'Where to write the patched ROM. Optional when a bundle already names the output'
623
956
  cand --bundle 'Follow a rom-weaver-bundle.json recipe: a file path, or an http(s) URL'
624
957
  cand --with 'Turn on a bundle patch the bundle leaves off by default, matched by name or file name (repeatable)'
625
958
  cand --without 'Turn off a bundle patch, matched by name or file name (repeatable)'
@@ -632,34 +965,47 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
632
965
  cand --assume-in 'Take this checksum on trust instead of reading the ROM to compute it, as in crc32=1234abcd (repeatable, comma-separable)'
633
966
  cand --expect-in 'Stop unless the ROM about to be patched has this checksum, as in crc32=1234abcd (repeatable, comma-separable)'
634
967
  cand --patch-header 'Whether a patch applies to the ROM with or without its copier header: auto, keep, or strip [default: auto]'
635
- cand --patch-basis 'Which ROM the preceding --patch was built against: auto, base, or previous [default: auto]'
968
+ cand --patch-basis 'Override the preceding --patch input rule: auto, base, or previous'
969
+ cand --patch-input-check 'Expected input checks for the preceding patch (repeatable, comma-separable)'
970
+ cand --patch-output-check 'Expected output checks for the preceding patch (repeatable, comma-separable)'
971
+ cand --default-patch-basis 'Shared input ROM rule for every patch: auto, base, or previous [default: auto]'
636
972
  cand --output-header 'Whether the finished ROM keeps its copier header: auto, keep, or strip [default: auto]'
637
973
  cand --n64-byte-order 'Byte order to put an N64 ROM in for each patch: auto, keep, big-endian, little-endian, or byte-swapped [default: auto]'
638
974
  cand --expect-out 'Fail unless the patched ROM has this checksum, as in sha1=abc... (repeatable, comma-separable)'
639
975
  cand --code 'Game Genie or GameShark/Pro Action Replay code to bake into the ROM. Repeat for each code'
640
- cand --code-system 'Console the --code values are for (nes, snes, genesis, gameboy, gba, psx), when the ROM header does not say'
976
+ cand --code-system 'Console the --code values are for (nes, snes, genesis, 32x, sms, gamegear, sg1000, gameboy, gba, psx), when the ROM header does not say'
641
977
  cand --code-kind 'Which cheat scheme the --code values use: auto, game-genie, gameshark/par, or xploder'
978
+ cand --cheat 'Database cheat to use, by record ID or exact description. Repeat for each cheat'
979
+ cand --cheat-database 'Directory holding manifest.json and the <system>.json cheat shards. Defaults to $ROM_WEAVER_CHEAT_DATABASE, then the per-user data directory'
980
+ cand --cheat-system 'Console the cheat shard is for (nes, snes, genesis, gameboy, gameboy-color, gba), when the ROM header does not say'
981
+ cand --game 'Use this database game ID instead of matching the ROM by checksum or title'
642
982
  cand --emit-bundle 'Also write a rom-weaver-bundle.json recording this run, so someone else can repeat it'
643
983
  cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
644
984
  cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
645
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
985
+ cand -o 'Output path; - writes one completed binary file to stdout'
986
+ cand --output 'Output path; - writes one completed binary file to stdout'
987
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
646
988
  cand --no-extract 'Do not look inside archives; treat the input and every patch as raw files'
647
989
  cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
990
+ cand --without-cheats 'Ignore every cheat the bundle records and run only its patch chain'
648
991
  cand --no-compress 'Write a plain ROM instead of compressing the result'
649
992
  cand --raw 'Write a plain ROM instead of compressing the result'
650
993
  cand --repair-checksum 'Recompute the ROM''s internal header checksum afterwards, so the console does not reject it (SNES, NES, GB, GBA, Mega Drive, SMS, N64, NDS)'
651
994
  cand --ignore-checksum-validation 'Apply the patch even when its own checksums do not match. Can produce a broken ROM'
995
+ cand --allow-cheat-conflicts 'Let a later cheat overwrite an earlier one at the same offset instead of failing'
652
996
  cand --tui 'Ask for each patch''s name, version, and author, then apply and write a bundle. Needs a terminal'
653
997
  cand --force 'Overwrite the output if it already exists (without this, the command stops instead)'
654
- cand -n 'Print the plan (inputs, patches, output, format, codec, level, threads) and stop without writing'
655
- cand --dry-run 'Print the plan (inputs, patches, output, format, codec, level, threads) and stop without writing'
656
- cand --json 'Print one JSON object per line instead of human-readable output'
657
- cand --progress 'Show progress even when output is piped to a file or another program'
998
+ cand -n 'Plan the command without changing files or downloading data'
999
+ cand --dry-run 'Plan the command without changing files or downloading data'
1000
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1001
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1002
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
658
1003
  cand --no-progress 'Hide progress'
659
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
660
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
661
- cand -q 'Log errors only'
662
- cand --quiet 'Log errors only'
1004
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1005
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1006
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1007
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1008
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
663
1009
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
664
1010
  cand --color 'Keep colors even when output is piped'
665
1011
  cand --no-color 'Turn colors off'
@@ -668,7 +1014,76 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
668
1014
  cand -h 'Print help (see more with ''--help'')'
669
1015
  cand --help 'Print help (see more with ''--help'')'
670
1016
  }
671
- &'rom-weaver;patch;weave'= {
1017
+ &'rom-weaver;patch'= {
1018
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
1019
+ cand -n 'Plan the command without changing files or downloading data'
1020
+ cand --dry-run 'Plan the command without changing files or downloading data'
1021
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1022
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1023
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
1024
+ cand --no-progress 'Hide progress'
1025
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1026
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1027
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1028
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1029
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1030
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
1031
+ cand --color 'Keep colors even when output is piped'
1032
+ cand --no-color 'Turn colors off'
1033
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1034
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1035
+ cand -h 'Print help'
1036
+ cand --help 'Print help'
1037
+ cand validate 'Check that patches would apply cleanly, without writing anything'
1038
+ cand apply 'Apply one or more patches to a ROM, in order'
1039
+ cand weave 'Apply one or more patches to a ROM, in order'
1040
+ cand create 'Build a patch from an original ROM and a changed one'
1041
+ cand help 'Print this message or the help of the given subcommand(s)'
1042
+ }
1043
+ &'rom-weaver;patch;validate'= {
1044
+ cand -i 'ROM to check the patches against. May be an archive'
1045
+ cand --input 'ROM to check the patches against. May be an archive'
1046
+ cand -s 'Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable). --patch-select overrides it for the patch it follows'
1047
+ cand --select 'Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable). --patch-select overrides it for the patch it follows'
1048
+ cand --filter 'Consider only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
1049
+ cand --patch 'Patch to check. Repeat once per patch; they are checked in the order given'
1050
+ cand --patch-select 'Pick which file to use inside the --patch archive before it. Repeatable, one per --patch; falls back to --select'
1051
+ cand --assume-in 'Take this checksum on trust instead of reading the ROM to compute it, as in crc32=1234abcd (repeatable, comma-separable)'
1052
+ cand --expect-in 'Fail unless the ROM matches: a checksum (crc32=1234abcd), an exact size (size=N), or a floor (min-size=N). Repeatable, comma-separable'
1053
+ cand --n64-byte-order 'Byte order to put an N64 ROM in before checking: auto, keep, big-endian, little-endian, or byte-swapped [default: auto]'
1054
+ cand --patch-basis 'Override the preceding --patch input rule: auto, base, or previous'
1055
+ cand --default-patch-basis 'Shared input ROM rule for every patch: auto, base, or previous [default: auto]'
1056
+ cand --patch-input-check 'Checksum the preceding --patch expects to see going in, when the patch does not carry one (comma-separable; empty means none)'
1057
+ cand --patch-output-check 'Checksum the preceding --patch should produce, when the patch does not carry one (comma-separable; empty means none)'
1058
+ cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
1059
+ cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
1060
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
1061
+ cand --no-extract 'Do not look inside archives; treat the input and every patch as raw files'
1062
+ cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
1063
+ cand --strip-header 'Remove the ROM''s copier header before checking (A78, LNX, NES, FDS, SMC signatures, plus the SNES and PCE size rules)'
1064
+ cand --ignore-checksum-validation 'Report a patch as usable even when its own checksums do not match'
1065
+ cand --independent 'Check every patch against the original ROM rather than as a chain, and report a verdict for each instead of stopping at the first failure'
1066
+ cand --plan 'Report the order the patches would run in and what each would be checked against, without reading the ROM more than needed'
1067
+ cand -n 'Plan the command without changing files or downloading data'
1068
+ cand --dry-run 'Plan the command without changing files or downloading data'
1069
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1070
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1071
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
1072
+ cand --no-progress 'Hide progress'
1073
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1074
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1075
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1076
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1077
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1078
+ cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
1079
+ cand --color 'Keep colors even when output is piped'
1080
+ cand --no-color 'Turn colors off'
1081
+ cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1082
+ cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1083
+ cand -h 'Print help (see more with ''--help'')'
1084
+ cand --help 'Print help (see more with ''--help'')'
1085
+ }
1086
+ &'rom-weaver;patch;apply'= {
672
1087
  cand -i 'ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle'
673
1088
  cand --input 'ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle'
674
1089
  cand -s 'Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable). --patch-select overrides it for the patch it follows'
@@ -677,8 +1092,6 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
677
1092
  cand --filter 'Consider only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
678
1093
  cand --patch 'Patch to apply. Repeat once per patch; they run in the order given'
679
1094
  cand --patch-select 'Pick which file to use inside the --patch archive before it. Repeatable, one per --patch; falls back to --select'
680
- cand -o 'Where to write the patched ROM. Optional when a bundle already names the output'
681
- cand --output 'Where to write the patched ROM. Optional when a bundle already names the output'
682
1095
  cand --bundle 'Follow a rom-weaver-bundle.json recipe: a file path, or an http(s) URL'
683
1096
  cand --with 'Turn on a bundle patch the bundle leaves off by default, matched by name or file name (repeatable)'
684
1097
  cand --without 'Turn off a bundle patch, matched by name or file name (repeatable)'
@@ -691,34 +1104,47 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
691
1104
  cand --assume-in 'Take this checksum on trust instead of reading the ROM to compute it, as in crc32=1234abcd (repeatable, comma-separable)'
692
1105
  cand --expect-in 'Stop unless the ROM about to be patched has this checksum, as in crc32=1234abcd (repeatable, comma-separable)'
693
1106
  cand --patch-header 'Whether a patch applies to the ROM with or without its copier header: auto, keep, or strip [default: auto]'
694
- cand --patch-basis 'Which ROM the preceding --patch was built against: auto, base, or previous [default: auto]'
1107
+ cand --patch-basis 'Override the preceding --patch input rule: auto, base, or previous'
1108
+ cand --patch-input-check 'Expected input checks for the preceding patch (repeatable, comma-separable)'
1109
+ cand --patch-output-check 'Expected output checks for the preceding patch (repeatable, comma-separable)'
1110
+ cand --default-patch-basis 'Shared input ROM rule for every patch: auto, base, or previous [default: auto]'
695
1111
  cand --output-header 'Whether the finished ROM keeps its copier header: auto, keep, or strip [default: auto]'
696
1112
  cand --n64-byte-order 'Byte order to put an N64 ROM in for each patch: auto, keep, big-endian, little-endian, or byte-swapped [default: auto]'
697
1113
  cand --expect-out 'Fail unless the patched ROM has this checksum, as in sha1=abc... (repeatable, comma-separable)'
698
1114
  cand --code 'Game Genie or GameShark/Pro Action Replay code to bake into the ROM. Repeat for each code'
699
- cand --code-system 'Console the --code values are for (nes, snes, genesis, gameboy, gba, psx), when the ROM header does not say'
1115
+ cand --code-system 'Console the --code values are for (nes, snes, genesis, 32x, sms, gamegear, sg1000, gameboy, gba, psx), when the ROM header does not say'
700
1116
  cand --code-kind 'Which cheat scheme the --code values use: auto, game-genie, gameshark/par, or xploder'
1117
+ cand --cheat 'Database cheat to use, by record ID or exact description. Repeat for each cheat'
1118
+ cand --cheat-database 'Directory holding manifest.json and the <system>.json cheat shards. Defaults to $ROM_WEAVER_CHEAT_DATABASE, then the per-user data directory'
1119
+ cand --cheat-system 'Console the cheat shard is for (nes, snes, genesis, gameboy, gameboy-color, gba), when the ROM header does not say'
1120
+ cand --game 'Use this database game ID instead of matching the ROM by checksum or title'
701
1121
  cand --emit-bundle 'Also write a rom-weaver-bundle.json recording this run, so someone else can repeat it'
702
1122
  cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
703
1123
  cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
704
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
1124
+ cand -o 'Output path; - writes one completed binary file to stdout'
1125
+ cand --output 'Output path; - writes one completed binary file to stdout'
1126
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
705
1127
  cand --no-extract 'Do not look inside archives; treat the input and every patch as raw files'
706
1128
  cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
1129
+ cand --without-cheats 'Ignore every cheat the bundle records and run only its patch chain'
707
1130
  cand --no-compress 'Write a plain ROM instead of compressing the result'
708
1131
  cand --raw 'Write a plain ROM instead of compressing the result'
709
1132
  cand --repair-checksum 'Recompute the ROM''s internal header checksum afterwards, so the console does not reject it (SNES, NES, GB, GBA, Mega Drive, SMS, N64, NDS)'
710
1133
  cand --ignore-checksum-validation 'Apply the patch even when its own checksums do not match. Can produce a broken ROM'
1134
+ cand --allow-cheat-conflicts 'Let a later cheat overwrite an earlier one at the same offset instead of failing'
711
1135
  cand --tui 'Ask for each patch''s name, version, and author, then apply and write a bundle. Needs a terminal'
712
1136
  cand --force 'Overwrite the output if it already exists (without this, the command stops instead)'
713
- cand -n 'Print the plan (inputs, patches, output, format, codec, level, threads) and stop without writing'
714
- cand --dry-run 'Print the plan (inputs, patches, output, format, codec, level, threads) and stop without writing'
715
- cand --json 'Print one JSON object per line instead of human-readable output'
716
- cand --progress 'Show progress even when output is piped to a file or another program'
1137
+ cand -n 'Plan the command without changing files or downloading data'
1138
+ cand --dry-run 'Plan the command without changing files or downloading data'
1139
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1140
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1141
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
717
1142
  cand --no-progress 'Hide progress'
718
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
719
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
720
- cand -q 'Log errors only'
721
- cand --quiet 'Log errors only'
1143
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1144
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1145
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1146
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1147
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
722
1148
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
723
1149
  cand --color 'Keep colors even when output is piped'
724
1150
  cand --no-color 'Turn colors off'
@@ -727,36 +1153,68 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
727
1153
  cand -h 'Print help (see more with ''--help'')'
728
1154
  cand --help 'Print help (see more with ''--help'')'
729
1155
  }
730
- &'rom-weaver;patch;validate'= {
731
- cand -i 'ROM to check the patches against. May be an archive'
732
- cand --input 'ROM to check the patches against. May be an archive'
1156
+ &'rom-weaver;patch;weave'= {
1157
+ cand -i 'ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle'
1158
+ cand --input 'ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle'
733
1159
  cand -s 'Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable). --patch-select overrides it for the patch it follows'
734
1160
  cand --select 'Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable). --patch-select overrides it for the patch it follows'
1161
+ cand --target 'For a .cue or .gdi input, which track gets the patch. Matched like --select and must hit exactly one track'
735
1162
  cand --filter 'Consider only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
736
- cand --patch 'Patch to check. Repeat once per patch; they are checked in the order given'
1163
+ cand --patch 'Patch to apply. Repeat once per patch; they run in the order given'
737
1164
  cand --patch-select 'Pick which file to use inside the --patch archive before it. Repeatable, one per --patch; falls back to --select'
1165
+ cand --bundle 'Follow a rom-weaver-bundle.json recipe: a file path, or an http(s) URL'
1166
+ cand --with 'Turn on a bundle patch the bundle leaves off by default, matched by name or file name (repeatable)'
1167
+ cand --without 'Turn off a bundle patch, matched by name or file name (repeatable)'
1168
+ cand --compress-format 'Format to compress the patched ROM into [default: from the --output extension]'
1169
+ cand --format 'Format to compress the patched ROM into [default: from the --output extension]'
1170
+ cand --compress-codec 'Compression method to use, as codec or codec:level (repeatable, comma-separable)'
1171
+ cand --codec 'Compression method to use, as codec or codec:level (repeatable, comma-separable)'
1172
+ cand --compress-level 'How hard to compress: min, very-low, low, medium, high, very-high, or max [default: max]'
1173
+ cand --level 'How hard to compress: min, very-low, low, medium, high, very-high, or max [default: max]'
738
1174
  cand --assume-in 'Take this checksum on trust instead of reading the ROM to compute it, as in crc32=1234abcd (repeatable, comma-separable)'
739
- cand --expect-in 'Fail unless the ROM matches: a checksum (crc32=1234abcd), an exact size (size=N), or a floor (min-size=N). Repeatable, comma-separable'
740
- cand --n64-byte-order 'Byte order to put an N64 ROM in before checking: auto, keep, big-endian, little-endian, or byte-swapped [default: auto]'
741
- cand --patch-basis 'Which ROM the preceding --patch was built against: auto, base, or previous [default: auto]'
742
- cand --patch-input-check 'Checksum the preceding --patch expects to see going in, when the patch does not carry one (comma-separable; empty means none)'
743
- cand --patch-output-check 'Checksum the preceding --patch should produce, when the patch does not carry one (comma-separable; empty means none)'
1175
+ cand --expect-in 'Stop unless the ROM about to be patched has this checksum, as in crc32=1234abcd (repeatable, comma-separable)'
1176
+ cand --patch-header 'Whether a patch applies to the ROM with or without its copier header: auto, keep, or strip [default: auto]'
1177
+ cand --patch-basis 'Override the preceding --patch input rule: auto, base, or previous'
1178
+ cand --patch-input-check 'Expected input checks for the preceding patch (repeatable, comma-separable)'
1179
+ cand --patch-output-check 'Expected output checks for the preceding patch (repeatable, comma-separable)'
1180
+ cand --default-patch-basis 'Shared input ROM rule for every patch: auto, base, or previous [default: auto]'
1181
+ cand --output-header 'Whether the finished ROM keeps its copier header: auto, keep, or strip [default: auto]'
1182
+ cand --n64-byte-order 'Byte order to put an N64 ROM in for each patch: auto, keep, big-endian, little-endian, or byte-swapped [default: auto]'
1183
+ cand --expect-out 'Fail unless the patched ROM has this checksum, as in sha1=abc... (repeatable, comma-separable)'
1184
+ cand --code 'Game Genie or GameShark/Pro Action Replay code to bake into the ROM. Repeat for each code'
1185
+ cand --code-system 'Console the --code values are for (nes, snes, genesis, 32x, sms, gamegear, sg1000, gameboy, gba, psx), when the ROM header does not say'
1186
+ cand --code-kind 'Which cheat scheme the --code values use: auto, game-genie, gameshark/par, or xploder'
1187
+ cand --cheat 'Database cheat to use, by record ID or exact description. Repeat for each cheat'
1188
+ cand --cheat-database 'Directory holding manifest.json and the <system>.json cheat shards. Defaults to $ROM_WEAVER_CHEAT_DATABASE, then the per-user data directory'
1189
+ cand --cheat-system 'Console the cheat shard is for (nes, snes, genesis, gameboy, gameboy-color, gba), when the ROM header does not say'
1190
+ cand --game 'Use this database game ID instead of matching the ROM by checksum or title'
1191
+ cand --emit-bundle 'Also write a rom-weaver-bundle.json recording this run, so someone else can repeat it'
744
1192
  cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
745
1193
  cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
746
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
1194
+ cand -o 'Output path; - writes one completed binary file to stdout'
1195
+ cand --output 'Output path; - writes one completed binary file to stdout'
1196
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
747
1197
  cand --no-extract 'Do not look inside archives; treat the input and every patch as raw files'
748
1198
  cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
749
- cand --strip-header 'Remove the ROM''s copier header before checking (A78, LNX, NES, FDS, SMC signatures, plus the SNES and PCE size rules)'
750
- cand --ignore-checksum-validation 'Report a patch as usable even when its own checksums do not match'
751
- cand --independent 'Check every patch against the original ROM rather than as a chain, and report a verdict for each instead of stopping at the first failure'
752
- cand --plan 'Report the order the patches would run in and what each would be checked against, without reading the ROM more than needed'
753
- cand --json 'Print one JSON object per line instead of human-readable output'
754
- cand --progress 'Show progress even when output is piped to a file or another program'
1199
+ cand --without-cheats 'Ignore every cheat the bundle records and run only its patch chain'
1200
+ cand --no-compress 'Write a plain ROM instead of compressing the result'
1201
+ cand --raw 'Write a plain ROM instead of compressing the result'
1202
+ cand --repair-checksum 'Recompute the ROM''s internal header checksum afterwards, so the console does not reject it (SNES, NES, GB, GBA, Mega Drive, SMS, N64, NDS)'
1203
+ cand --ignore-checksum-validation 'Apply the patch even when its own checksums do not match. Can produce a broken ROM'
1204
+ cand --allow-cheat-conflicts 'Let a later cheat overwrite an earlier one at the same offset instead of failing'
1205
+ cand --tui 'Ask for each patch''s name, version, and author, then apply and write a bundle. Needs a terminal'
1206
+ cand --force 'Overwrite the output if it already exists (without this, the command stops instead)'
1207
+ cand -n 'Plan the command without changing files or downloading data'
1208
+ cand --dry-run 'Plan the command without changing files or downloading data'
1209
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1210
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1211
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
755
1212
  cand --no-progress 'Hide progress'
756
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
757
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
758
- cand -q 'Log errors only'
759
- cand --quiet 'Log errors only'
1213
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1214
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1215
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1216
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1217
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
760
1218
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
761
1219
  cand --color 'Keep colors even when output is piped'
762
1220
  cand --no-color 'Turn colors off'
@@ -770,12 +1228,14 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
770
1228
  cand --modified 'The changed ROM. Leave out when using --code, which produces the changed ROM for you'
771
1229
  cand -f 'Patch format, such as bps, ips, or xdelta [default: from the --output extension]'
772
1230
  cand --format 'Patch format, such as bps, ips, or xdelta [default: from the --output extension]'
773
- cand -o 'Where to write the patch. Required unless --plan is used'
774
- cand --output 'Where to write the patch. Required unless --plan is used'
775
1231
  cand --assume-in 'Take the original ROM''s checksum on trust rather than reading the file, as in crc32=1234abcd (repeatable, comma-separable)'
776
1232
  cand --code 'Build the patch from a Game Genie or GameShark/Pro Action Replay code instead of a second ROM. Repeat for each code; cannot be used with --modified'
777
- cand --code-system 'Console the --code values are for (nes, snes, genesis, gameboy, gba, psx), when the ROM header does not say'
1233
+ cand --code-system 'Console the --code values are for (nes, snes, genesis, 32x, sms, gamegear, sg1000, gameboy, gba, psx), when the ROM header does not say'
778
1234
  cand --code-kind 'Which cheat scheme the --code values use: auto, game-genie, gameshark/par, or xploder'
1235
+ cand --cheat 'Database cheat to use, by record ID or exact description. Repeat for each cheat'
1236
+ cand --cheat-database 'Directory holding manifest.json and the <system>.json cheat shards. Defaults to $ROM_WEAVER_CHEAT_DATABASE, then the per-user data directory'
1237
+ cand --cheat-system 'Console the cheat shard is for (nes, snes, genesis, gameboy, gameboy-color, gba), when the ROM header does not say'
1238
+ cand --game 'Use this database game ID instead of matching the ROM by checksum or title'
779
1239
  cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
780
1240
  cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
781
1241
  cand --solid-system 'SOLID patches only: console the ROM is for'
@@ -786,19 +1246,26 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
786
1246
  cand --solid-contact 'SOLID patches only: how to reach the author. Switches the patch to its extended header'
787
1247
  cand --solid-comment 'SOLID patches only: free-form note. Switches the patch to its extended header'
788
1248
  cand --xdelta-secondary 'xdelta patches only: compress the patch''s own contents'
789
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
1249
+ cand -o 'Output path; - writes one completed binary file to stdout'
1250
+ cand --output 'Output path; - writes one completed binary file to stdout'
1251
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
790
1252
  cand --plan 'Only report which formats suit these two ROMs; write nothing'
791
1253
  cand --ignore-checksum-validation 'Write the patch even when the format''s own consistency checks fail, and leave its checksums out'
792
1254
  cand --checksum-name 'Put the original ROM''s crc32 in the patch file name, as [crc32:HEX]'
1255
+ cand --allow-cheat-conflicts 'Let a later cheat overwrite an earlier one at the same offset instead of failing'
793
1256
  cand --solid-extended 'SOLID patches only: use the extended header even with none of the extended fields filled in'
794
1257
  cand --force 'Overwrite the output if it already exists (without this, the command stops instead)'
795
- cand --json 'Print one JSON object per line instead of human-readable output'
796
- cand --progress 'Show progress even when output is piped to a file or another program'
1258
+ cand -n 'Plan the command without changing files or downloading data'
1259
+ cand --dry-run 'Plan the command without changing files or downloading data'
1260
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1261
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1262
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
797
1263
  cand --no-progress 'Hide progress'
798
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
799
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
800
- cand -q 'Log errors only'
801
- cand --quiet 'Log errors only'
1264
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1265
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1266
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1267
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1268
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
802
1269
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
803
1270
  cand --color 'Keep colors even when output is piped'
804
1271
  cand --no-color 'Turn colors off'
@@ -808,28 +1275,32 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
808
1275
  cand --help 'Print help (see more with ''--help'')'
809
1276
  }
810
1277
  &'rom-weaver;patch;help'= {
811
- cand apply 'Apply one or more patches to a ROM, in order'
812
1278
  cand validate 'Check that patches would apply cleanly, without writing anything'
1279
+ cand apply 'Apply one or more patches to a ROM, in order'
813
1280
  cand create 'Build a patch from an original ROM and a changed one'
814
1281
  cand help 'Print this message or the help of the given subcommand(s)'
815
1282
  }
816
- &'rom-weaver;patch;help;apply'= {
817
- }
818
1283
  &'rom-weaver;patch;help;validate'= {
819
1284
  }
1285
+ &'rom-weaver;patch;help;apply'= {
1286
+ }
820
1287
  &'rom-weaver;patch;help;create'= {
821
1288
  }
822
1289
  &'rom-weaver;patch;help;help'= {
823
1290
  }
824
- &'rom-weaver;bundle'= {
825
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
826
- cand --json 'Print one JSON object per line instead of human-readable output'
827
- cand --progress 'Show progress even when output is piped to a file or another program'
1291
+ &'rom-weaver;save'= {
1292
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
1293
+ cand -n 'Plan the command without changing files or downloading data'
1294
+ cand --dry-run 'Plan the command without changing files or downloading data'
1295
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1296
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1297
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
828
1298
  cand --no-progress 'Hide progress'
829
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
830
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
831
- cand -q 'Log errors only'
832
- cand --quiet 'Log errors only'
1299
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1300
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1301
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1302
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1303
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
833
1304
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
834
1305
  cand --color 'Keep colors even when output is piped'
835
1306
  cand --no-color 'Turn colors off'
@@ -837,128 +1308,97 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
837
1308
  cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
838
1309
  cand -h 'Print help'
839
1310
  cand --help 'Print help'
840
- cand create 'Write a rom-weaver-bundle.json recipe from local ROM and patch files'
841
- cand parse 'Read a rom-weaver-bundle.json recipe and report what it points at'
842
- cand schema 'Print the rom-weaver-bundle.json JSON Schema, for editors and hand-authoring'
1311
+ cand identify 'Identify a supported game save without changing it'
1312
+ cand inspect 'Show the sections and fields in a supported game save'
1313
+ cand get 'Read one field from a supported game save'
1314
+ cand export-schema 'Print the generic field schema for a supported game save'
1315
+ cand set 'Write validated field changes to a new game save'
843
1316
  cand help 'Print this message or the help of the given subcommand(s)'
844
1317
  }
845
- &'rom-weaver;bundle;create'= {
846
- cand -i 'ROM the patches apply to. Its checksums and size are read from the file and recorded in the bundle'
847
- cand --input 'ROM the patches apply to. Its checksums and size are read from the file and recorded in the bundle'
848
- cand --assume-in 'Take the ROM''s checksum and size on trust rather than reading it, as in crc32=1234abcd,size=1048576 (repeatable, comma-separable)'
849
- cand --rom-url 'Where the ROM can be downloaded from. With --input, the local file still supplies the checksums; on its own, the bundle records only this url'
850
- cand --rom-name 'Expected ROM file name to show and use for output naming; a supplied ROM with a different name only warns'
851
- cand --patch 'Patch to list in the bundle. Repeat once per patch, in the order they should be applied'
852
- cand --patch-id 'Identifier for the preceding --patch that stays the same across releases, so a replacement keeps its settings'
853
- cand --patch-version 'Version of the preceding --patch, in whatever form its author uses'
854
- cand --patch-name 'Name to show for the preceding --patch'
855
- cand --patch-description 'What the preceding --patch does'
856
- cand --patch-author 'Who made the preceding --patch'
857
- cand --patch-label 'Short status note for the preceding --patch, such as beta or recommended'
858
- cand --patch-optional 'Mark the preceding --patch optional, so it starts switched off and needs --with to run'
859
- cand --patch-source-url 'Where the preceding --patch can be downloaded from. The local file is still read to build the bundle'
860
- cand --patch-header 'Whether the preceding --patch applies to the ROM with or without its copier header: auto, keep, or strip'
861
- cand --patch-basis 'Which ROM the preceding --patch was built against: base (the bundle''s ROM) or previous (the patch before it). Use auto to leave it out and let apply infer it'
862
- cand --patch-expect-in 'Checksum the ROM should have before the preceding --patch runs. Recorded only when it differs from the bundle''s ROM checksums (repeatable, comma-separable)'
863
- cand --patch-expect-out 'Checksum the ROM should have after the preceding --patch runs. Recorded only when it differs from the final output checksums (repeatable, comma-separable)'
864
- cand --expect-out 'Checksum the ROM should have once every patch has run, so users can confirm they got the right result (repeatable, comma-separable)'
865
- cand --output-name 'File name the bundle suggests for the patched ROM'
866
- cand --output-header 'Whether the patched ROM should keep its copier header: auto, keep, or strip'
867
- cand -o 'Where to write the bundle. Name it rom-weaver-bundle.json, or add .gz or .zst to compress it'
868
- cand --output 'Where to write the bundle. Name it rom-weaver-bundle.json, or add .gz or .zst to compress it'
869
- cand --bundle 'Also pack the bundle and its ROM and patches into one shareable archive, such as release.zip'
870
- cand --bundle-rom 'Pack this file into --bundle as the ROM, while --input supplies the checksums and metadata'
871
- cand --checksum 'Which checksums to record for the ROM (repeatable, comma-separable) [default: crc32,md5,sha1]'
872
- cand --algo 'Which checksums to record for the ROM (repeatable, comma-separable) [default: crc32,md5,sha1]'
873
- cand --from 'Build the bundle from a hand-written rom-weaver-bundle.json instead of flags. Use - to read it from stdin'
874
- cand --schema-ref 'Record this $schema URL in the bundle so editors can validate it. Left out unless asked for'
875
- cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
876
- cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
877
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
878
- cand --no-bundle-rom 'Keep the ROM out of --bundle and record only its checksums, so whoever applies the bundle brings their own copy'
879
- cand --force 'Overwrite the output if it already exists (without this, the command stops instead)'
880
- cand --json 'Print one JSON object per line instead of human-readable output'
881
- cand --progress 'Show progress even when output is piped to a file or another program'
1318
+ &'rom-weaver;save;identify'= {
1319
+ cand --game 'Force a game id instead of detecting one'
1320
+ cand --rom-sha1 'SHA-1 of the matching ROM, used to pick a game'
1321
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
1322
+ cand -n 'Plan the command without changing files or downloading data'
1323
+ cand --dry-run 'Plan the command without changing files or downloading data'
1324
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1325
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1326
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
882
1327
  cand --no-progress 'Hide progress'
883
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
884
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
885
- cand -q 'Log errors only'
886
- cand --quiet 'Log errors only'
1328
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1329
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1330
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1331
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1332
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
887
1333
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
888
1334
  cand --color 'Keep colors even when output is piped'
889
1335
  cand --no-color 'Turn colors off'
890
1336
  cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
891
1337
  cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
892
- cand -h 'Print help (see more with ''--help'')'
893
- cand --help 'Print help (see more with ''--help'')'
1338
+ cand -h 'Print help'
1339
+ cand --help 'Print help'
894
1340
  }
895
- &'rom-weaver;bundle;parse'= {
896
- cand -i 'Bundle file, or an archive with a bundle at its root'
897
- cand --input 'Bundle file, or an archive with a bundle at its root'
898
- cand -s 'Handle only the bundle entries whose file name matches this exact name, prefix, or glob (repeatable)'
899
- cand --select 'Handle only the bundle entries whose file name matches this exact name, prefix, or glob (repeatable)'
900
- cand --filter 'Handle only the bundle''s rom entry or only its patch entries (repeatable, comma-separable)'
901
- cand -o 'Directory to unpack the bundle''s files into. Without it, files packed in an archive are listed but not written out'
902
- cand --output 'Directory to unpack the bundle''s files into. Without it, files packed in an archive are listed but not written out'
903
- cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
904
- cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
905
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
906
- cand --no-extract 'Report what the bundle contains without unpacking any of it'
907
- cand --json 'Print one JSON object per line instead of human-readable output'
908
- cand --progress 'Show progress even when output is piped to a file or another program'
1341
+ &'rom-weaver;save;inspect'= {
1342
+ cand --game 'Force a game id instead of detecting one'
1343
+ cand --rom-sha1 'SHA-1 of the matching ROM, used to pick a game'
1344
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
1345
+ cand -n 'Plan the command without changing files or downloading data'
1346
+ cand --dry-run 'Plan the command without changing files or downloading data'
1347
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1348
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1349
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
909
1350
  cand --no-progress 'Hide progress'
910
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
911
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
912
- cand -q 'Log errors only'
913
- cand --quiet 'Log errors only'
1351
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1352
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1353
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1354
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1355
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
914
1356
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
915
1357
  cand --color 'Keep colors even when output is piped'
916
1358
  cand --no-color 'Turn colors off'
917
1359
  cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
918
1360
  cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
919
- cand -h 'Print help (see more with ''--help'')'
920
- cand --help 'Print help (see more with ''--help'')'
1361
+ cand -h 'Print help'
1362
+ cand --help 'Print help'
921
1363
  }
922
- &'rom-weaver;bundle;schema'= {
923
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
924
- cand --json 'Print one JSON object per line instead of human-readable output'
925
- cand --progress 'Show progress even when output is piped to a file or another program'
1364
+ &'rom-weaver;save;get'= {
1365
+ cand --game 'Force a game id instead of detecting one'
1366
+ cand --rom-sha1 'SHA-1 of the matching ROM, used to pick a game'
1367
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
1368
+ cand -n 'Plan the command without changing files or downloading data'
1369
+ cand --dry-run 'Plan the command without changing files or downloading data'
1370
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1371
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1372
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
926
1373
  cand --no-progress 'Hide progress'
927
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
928
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
929
- cand -q 'Log errors only'
930
- cand --quiet 'Log errors only'
1374
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1375
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1376
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1377
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1378
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
931
1379
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
932
1380
  cand --color 'Keep colors even when output is piped'
933
1381
  cand --no-color 'Turn colors off'
934
1382
  cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
935
1383
  cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
936
- cand -h 'Print help (see more with ''--help'')'
937
- cand --help 'Print help (see more with ''--help'')'
938
- }
939
- &'rom-weaver;bundle;help'= {
940
- cand create 'Write a rom-weaver-bundle.json recipe from local ROM and patch files'
941
- cand parse 'Read a rom-weaver-bundle.json recipe and report what it points at'
942
- cand schema 'Print the rom-weaver-bundle.json JSON Schema, for editors and hand-authoring'
943
- cand help 'Print this message or the help of the given subcommand(s)'
944
- }
945
- &'rom-weaver;bundle;help;create'= {
946
- }
947
- &'rom-weaver;bundle;help;parse'= {
948
- }
949
- &'rom-weaver;bundle;help;schema'= {
950
- }
951
- &'rom-weaver;bundle;help;help'= {
1384
+ cand -h 'Print help'
1385
+ cand --help 'Print help'
952
1386
  }
953
- &'rom-weaver;tools'= {
954
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
955
- cand --json 'Print one JSON object per line instead of human-readable output'
956
- cand --progress 'Show progress even when output is piped to a file or another program'
1387
+ &'rom-weaver;save;export-schema'= {
1388
+ cand --game 'Force a game id instead of detecting one'
1389
+ cand --rom-sha1 'SHA-1 of the matching ROM, used to pick a game'
1390
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
1391
+ cand -n 'Plan the command without changing files or downloading data'
1392
+ cand --dry-run 'Plan the command without changing files or downloading data'
1393
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1394
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1395
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
957
1396
  cand --no-progress 'Hide progress'
958
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
959
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
960
- cand -q 'Log errors only'
961
- cand --quiet 'Log errors only'
1397
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1398
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1399
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1400
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1401
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
962
1402
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
963
1403
  cand --color 'Keep colors even when output is piped'
964
1404
  cand --no-color 'Turn colors off'
@@ -966,54 +1406,66 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
966
1406
  cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
967
1407
  cand -h 'Print help'
968
1408
  cand --help 'Print help'
969
- cand ppf-undo 'Undo a PPF3 patch, using the undo data stored inside it'
970
- cand help 'Print this message or the help of the given subcommand(s)'
971
1409
  }
972
- &'rom-weaver;tools;ppf-undo'= {
973
- cand -i 'The already-patched ROM to undo'
974
- cand --input 'The already-patched ROM to undo'
975
- cand --patch 'The PPF3 patch that was applied. It must carry undo data'
976
- cand -o 'Where to write the restored ROM'
977
- cand --output 'Where to write the restored ROM'
978
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
979
- cand --json 'Print one JSON object per line instead of human-readable output'
980
- cand --progress 'Show progress even when output is piped to a file or another program'
1410
+ &'rom-weaver;save;set'= {
1411
+ cand --game 'Force a game id instead of detecting one'
1412
+ cand --rom-sha1 'SHA-1 of the matching ROM, used to pick a game'
1413
+ cand -o 'Output path; - writes one completed binary file to stdout'
1414
+ cand --output 'Output path; - writes one completed binary file to stdout'
1415
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
1416
+ cand -n 'Validate and preview every change without writing a file'
1417
+ cand --dry-run 'Validate and preview every change without writing a file'
1418
+ cand --force 'Overwrite an explicit output path if it already exists'
1419
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1420
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1421
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
981
1422
  cand --no-progress 'Hide progress'
982
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
983
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
984
- cand -q 'Log errors only'
985
- cand --quiet 'Log errors only'
1423
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1424
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1425
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1426
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1427
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
986
1428
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
987
1429
  cand --color 'Keep colors even when output is piped'
988
1430
  cand --no-color 'Turn colors off'
989
1431
  cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
990
1432
  cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
991
- cand -h 'Print help (see more with ''--help'')'
992
- cand --help 'Print help (see more with ''--help'')'
1433
+ cand -h 'Print help'
1434
+ cand --help 'Print help'
993
1435
  }
994
- &'rom-weaver;tools;help'= {
995
- cand ppf-undo 'Undo a PPF3 patch, using the undo data stored inside it'
1436
+ &'rom-weaver;save;help'= {
1437
+ cand identify 'Identify a supported game save without changing it'
1438
+ cand inspect 'Show the sections and fields in a supported game save'
1439
+ cand get 'Read one field from a supported game save'
1440
+ cand export-schema 'Print the generic field schema for a supported game save'
1441
+ cand set 'Write validated field changes to a new game save'
996
1442
  cand help 'Print this message or the help of the given subcommand(s)'
997
1443
  }
998
- &'rom-weaver;tools;help;ppf-undo'= {
1444
+ &'rom-weaver;save;help;identify'= {
999
1445
  }
1000
- &'rom-weaver;tools;help;help'= {
1446
+ &'rom-weaver;save;help;inspect'= {
1001
1447
  }
1002
- &'rom-weaver;plan-extract-batch'= {
1003
- cand --job-size 'Source size in bytes for one job; repeat once per job, in input order'
1004
- cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
1005
- cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
1006
- cand --max-concurrency 'Hard cap on jobs running at once; defaults to the thread budget'
1007
- cand --total-memory-bytes 'Total memory budget concurrent jobs may reserve (e.g. browser device memory); defaults to the platform''s physical memory'
1008
- cand --memory-ceiling-bytes 'Combined working-set ceiling to plan against, used verbatim (no fraction/clamp). The browser passes its own resolved, mobile-capped ceiling here; when set it overrides --total-memory-bytes'
1009
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
1010
- cand --json 'Print one JSON object per line instead of human-readable output'
1011
- cand --progress 'Show progress even when output is piped to a file or another program'
1448
+ &'rom-weaver;save;help;get'= {
1449
+ }
1450
+ &'rom-weaver;save;help;export-schema'= {
1451
+ }
1452
+ &'rom-weaver;save;help;set'= {
1453
+ }
1454
+ &'rom-weaver;save;help;help'= {
1455
+ }
1456
+ &'rom-weaver;tools'= {
1457
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
1458
+ cand -n 'Plan the command without changing files or downloading data'
1459
+ cand --dry-run 'Plan the command without changing files or downloading data'
1460
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1461
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1462
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
1012
1463
  cand --no-progress 'Hide progress'
1013
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
1014
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
1015
- cand -q 'Log errors only'
1016
- cand --quiet 'Log errors only'
1464
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1465
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1466
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1467
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1468
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1017
1469
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
1018
1470
  cand --color 'Keep colors even when output is piped'
1019
1471
  cand --no-color 'Turn colors off'
@@ -1021,58 +1473,27 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
1021
1473
  cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1022
1474
  cand -h 'Print help'
1023
1475
  cand --help 'Print help'
1476
+ cand ppf-undo 'Undo a PPF3 patch, using the undo data stored inside it'
1477
+ cand help 'Print this message or the help of the given subcommand(s)'
1024
1478
  }
1025
- &'rom-weaver;weave'= {
1026
- cand -i 'ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle'
1027
- cand --input 'ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle'
1028
- cand -s 'Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable). --patch-select overrides it for the patch it follows'
1029
- cand --select 'Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable). --patch-select overrides it for the patch it follows'
1030
- cand --target 'For a .cue or .gdi input, which track gets the patch. Matched like --select and must hit exactly one track'
1031
- cand --filter 'Consider only files that look like a rom or a patch, judged by extension (repeatable, comma-separable)'
1032
- cand --patch 'Patch to apply. Repeat once per patch; they run in the order given'
1033
- cand --patch-select 'Pick which file to use inside the --patch archive before it. Repeatable, one per --patch; falls back to --select'
1034
- cand -o 'Where to write the patched ROM. Optional when a bundle already names the output'
1035
- cand --output 'Where to write the patched ROM. Optional when a bundle already names the output'
1036
- cand --bundle 'Follow a rom-weaver-bundle.json recipe: a file path, or an http(s) URL'
1037
- cand --with 'Turn on a bundle patch the bundle leaves off by default, matched by name or file name (repeatable)'
1038
- cand --without 'Turn off a bundle patch, matched by name or file name (repeatable)'
1039
- cand --compress-format 'Format to compress the patched ROM into [default: from the --output extension]'
1040
- cand --format 'Format to compress the patched ROM into [default: from the --output extension]'
1041
- cand --compress-codec 'Compression method to use, as codec or codec:level (repeatable, comma-separable)'
1042
- cand --codec 'Compression method to use, as codec or codec:level (repeatable, comma-separable)'
1043
- cand --compress-level 'How hard to compress: min, very-low, low, medium, high, very-high, or max [default: max]'
1044
- cand --level 'How hard to compress: min, very-low, low, medium, high, very-high, or max [default: max]'
1045
- cand --assume-in 'Take this checksum on trust instead of reading the ROM to compute it, as in crc32=1234abcd (repeatable, comma-separable)'
1046
- cand --expect-in 'Stop unless the ROM about to be patched has this checksum, as in crc32=1234abcd (repeatable, comma-separable)'
1047
- cand --patch-header 'Whether a patch applies to the ROM with or without its copier header: auto, keep, or strip [default: auto]'
1048
- cand --patch-basis 'Which ROM the preceding --patch was built against: auto, base, or previous [default: auto]'
1049
- cand --output-header 'Whether the finished ROM keeps its copier header: auto, keep, or strip [default: auto]'
1050
- cand --n64-byte-order 'Byte order to put an N64 ROM in for each patch: auto, keep, big-endian, little-endian, or byte-swapped [default: auto]'
1051
- cand --expect-out 'Fail unless the patched ROM has this checksum, as in sha1=abc... (repeatable, comma-separable)'
1052
- cand --code 'Game Genie or GameShark/Pro Action Replay code to bake into the ROM. Repeat for each code'
1053
- cand --code-system 'Console the --code values are for (nes, snes, genesis, gameboy, gba, psx), when the ROM header does not say'
1054
- cand --code-kind 'Which cheat scheme the --code values use: auto, game-genie, gameshark/par, or xploder'
1055
- cand --emit-bundle 'Also write a rom-weaver-bundle.json recording this run, so someone else can repeat it'
1056
- cand -j 'How many threads to use at most. auto uses every core; a format may still use fewer'
1057
- cand --threads 'How many threads to use at most. auto uses every core; a format may still use fewer'
1058
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
1059
- cand --no-extract 'Do not look inside archives; treat the input and every patch as raw files'
1060
- cand --no-ignore 'Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store'
1061
- cand --no-compress 'Write a plain ROM instead of compressing the result'
1062
- cand --raw 'Write a plain ROM instead of compressing the result'
1063
- cand --repair-checksum 'Recompute the ROM''s internal header checksum afterwards, so the console does not reject it (SNES, NES, GB, GBA, Mega Drive, SMS, N64, NDS)'
1064
- cand --ignore-checksum-validation 'Apply the patch even when its own checksums do not match. Can produce a broken ROM'
1065
- cand --tui 'Ask for each patch''s name, version, and author, then apply and write a bundle. Needs a terminal'
1066
- cand --force 'Overwrite the output if it already exists (without this, the command stops instead)'
1067
- cand -n 'Print the plan (inputs, patches, output, format, codec, level, threads) and stop without writing'
1068
- cand --dry-run 'Print the plan (inputs, patches, output, format, codec, level, threads) and stop without writing'
1069
- cand --json 'Print one JSON object per line instead of human-readable output'
1070
- cand --progress 'Show progress even when output is piped to a file or another program'
1479
+ &'rom-weaver;tools;ppf-undo'= {
1480
+ cand -i 'The already-patched ROM to undo'
1481
+ cand --input 'The already-patched ROM to undo'
1482
+ cand --patch 'The PPF3 patch that was applied. It must carry undo data'
1483
+ cand -o 'Output path; - writes one completed binary file to stdout'
1484
+ cand --output 'Output path; - writes one completed binary file to stdout'
1485
+ cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: warn]'
1486
+ cand -n 'Plan the command without changing files or downloading data'
1487
+ cand --dry-run 'Plan the command without changing files or downloading data'
1488
+ cand --json 'Print one complete JSON report; progress and diagnostics use stderr'
1489
+ cand --jsonl 'Stream JSON events, including progress, one object per line'
1490
+ cand --progress 'Show progress on stderr (off by default; JSONL includes progress)'
1071
1491
  cand --no-progress 'Hide progress'
1072
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
1073
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
1074
- cand -q 'Log errors only'
1075
- cand --quiet 'Log errors only'
1492
+ cand -v 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1493
+ cand --verbose 'Show user diagnostics on stderr; repeat for developer detail (-vv debug, -vvv trace)'
1494
+ cand --debug 'Show developer diagnostics and trace events on stderr (same as -vvv)'
1495
+ cand -q 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1496
+ cand --quiet 'Hide optional diagnostics and progress; keep results, warnings, and errors'
1076
1497
  cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
1077
1498
  cand --color 'Keep colors even when output is piped'
1078
1499
  cand --no-color 'Turn colors off'
@@ -1081,81 +1502,61 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
1081
1502
  cand -h 'Print help (see more with ''--help'')'
1082
1503
  cand --help 'Print help (see more with ''--help'')'
1083
1504
  }
1084
- &'rom-weaver;completions'= {
1085
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
1086
- cand --json 'Print one JSON object per line instead of human-readable output'
1087
- cand --progress 'Show progress even when output is piped to a file or another program'
1088
- cand --no-progress 'Hide progress'
1089
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
1090
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
1091
- cand -q 'Log errors only'
1092
- cand --quiet 'Log errors only'
1093
- cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
1094
- cand --color 'Keep colors even when output is piped'
1095
- cand --no-color 'Turn colors off'
1096
- cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1097
- cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1098
- cand -h 'Print help (see more with ''--help'')'
1099
- cand --help 'Print help (see more with ''--help'')'
1505
+ &'rom-weaver;tools;help'= {
1506
+ cand ppf-undo 'Undo a PPF3 patch, using the undo data stored inside it'
1507
+ cand help 'Print this message or the help of the given subcommand(s)'
1100
1508
  }
1101
- &'rom-weaver;man'= {
1102
- cand --man-dir 'Directory to install pages into'
1103
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
1104
- cand --install 'Install the generated pages instead of printing one'
1105
- cand --json 'Print one JSON object per line instead of human-readable output'
1106
- cand --progress 'Show progress even when output is piped to a file or another program'
1107
- cand --no-progress 'Hide progress'
1108
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
1109
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
1110
- cand -q 'Log errors only'
1111
- cand --quiet 'Log errors only'
1112
- cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
1113
- cand --color 'Keep colors even when output is piped'
1114
- cand --no-color 'Turn colors off'
1115
- cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1116
- cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1117
- cand -h 'Print help (see more with ''--help'')'
1118
- cand --help 'Print help (see more with ''--help'')'
1509
+ &'rom-weaver;tools;help;ppf-undo'= {
1119
1510
  }
1120
- &'rom-weaver;formats'= {
1121
- cand --log-level 'How much rom-weaver logs to stderr. Separate from the normal output [default: off]'
1122
- cand --json 'Print one JSON object per line instead of human-readable output'
1123
- cand --progress 'Show progress even when output is piped to a file or another program'
1124
- cand --no-progress 'Hide progress'
1125
- cand -v 'Log more: -v for info, -vv for debug, -vvv for trace'
1126
- cand --verbose 'Log more: -v for info, -vv for debug, -vvv for trace'
1127
- cand -q 'Log errors only'
1128
- cand --quiet 'Log errors only'
1129
- cand --dep-trace 'Also log trace output from bundled libraries (for bug reports)'
1130
- cand --color 'Keep colors even when output is piped'
1131
- cand --no-color 'Turn colors off'
1132
- cand -y 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1133
- cand --yes 'Answer yes to every confirmation instead of asking. Does not choose between candidates'
1134
- cand -h 'Print help (see more with ''--help'')'
1135
- cand --help 'Print help (see more with ''--help'')'
1511
+ &'rom-weaver;tools;help;help'= {
1136
1512
  }
1137
1513
  &'rom-weaver;help'= {
1138
- cand probe 'Identify a file: its format, its platform, and any header it carries'
1139
- cand extract 'Unpack an archive or single-payload compressed format'
1140
- cand checksum 'Compute checksums for a file, or for a ROM inside an archive'
1141
- cand identify 'Identify a ROM title from its checksums'
1142
1514
  cand setup 'Install the offline identify database'
1143
1515
  cand ingest 'Sort a file into ROMs and patches, unpacking and hashing along the way'
1144
- cand compress 'Pack files into an archive, disc image, or ROM-specific compressed format'
1145
- cand trim 'Cut the padding off a ROM, or put it back'
1146
- cand patch 'Apply, create, or check ROM patches'
1516
+ cand cheat 'List the cheat database''s entries for a ROM'
1147
1517
  cand bundle 'Build and read rom-weaver-bundle.json patch recipes'
1148
- cand tools 'One-off recovery tools'
1149
1518
  cand plan-extract-batch 'Plan a memory-/thread-aware concurrent extraction schedule from per-job source sizes (no I/O)'
1150
- cand weave 'Apply one or more patches to a ROM, in order (same as `patch apply`)'
1151
1519
  cand completions 'Print a tab-completion script for your shell'
1152
1520
  cand man 'Print or install the generated CLI man pages'
1153
1521
  cand formats 'List the formats, codecs, and checksum algorithms this build supports'
1522
+ cand probe 'Identify a file: its format, its platform, and any header it carries'
1523
+ cand checksum 'Compute checksums for a file, or for a ROM inside an archive'
1524
+ cand identify 'Identify a ROM title from its checksums'
1525
+ cand extract 'Unpack an archive or single-payload compressed format'
1526
+ cand compress 'Pack files into an archive, disc image, or ROM-specific compressed format'
1527
+ cand trim 'Cut the padding off a ROM, or put it back'
1528
+ cand weave 'Apply one or more patches to a ROM, in order (same as `patch apply`)'
1529
+ cand patch 'Apply, create, or check ROM patches'
1530
+ cand save 'Inspect and edit supported persistent game saves'
1531
+ cand tools 'One-off recovery tools'
1154
1532
  cand help 'Print this message or the help of the given subcommand(s)'
1155
1533
  }
1156
- &'rom-weaver;help;probe'= {
1534
+ &'rom-weaver;help;setup'= {
1157
1535
  }
1158
- &'rom-weaver;help;extract'= {
1536
+ &'rom-weaver;help;ingest'= {
1537
+ }
1538
+ &'rom-weaver;help;cheat'= {
1539
+ }
1540
+ &'rom-weaver;help;bundle'= {
1541
+ cand create 'Write a rom-weaver-bundle.json recipe from local ROM and patch files'
1542
+ cand parse 'Read a rom-weaver-bundle.json recipe and report what it points at'
1543
+ cand schema 'Print the rom-weaver-bundle.json JSON Schema, for editors and hand-authoring'
1544
+ }
1545
+ &'rom-weaver;help;bundle;create'= {
1546
+ }
1547
+ &'rom-weaver;help;bundle;parse'= {
1548
+ }
1549
+ &'rom-weaver;help;bundle;schema'= {
1550
+ }
1551
+ &'rom-weaver;help;plan-extract-batch'= {
1552
+ }
1553
+ &'rom-weaver;help;completions'= {
1554
+ }
1555
+ &'rom-weaver;help;man'= {
1556
+ }
1557
+ &'rom-weaver;help;formats'= {
1558
+ }
1559
+ &'rom-weaver;help;probe'= {
1159
1560
  }
1160
1561
  &'rom-weaver;help;checksum'= {
1161
1562
  }
@@ -1191,51 +1592,47 @@ set edit:completion:arg-completer[rom-weaver] = {|@words|
1191
1592
  }
1192
1593
  &'rom-weaver;help;identify;database;update'= {
1193
1594
  }
1194
- &'rom-weaver;help;setup'= {
1195
- }
1196
- &'rom-weaver;help;ingest'= {
1595
+ &'rom-weaver;help;extract'= {
1197
1596
  }
1198
1597
  &'rom-weaver;help;compress'= {
1199
1598
  }
1200
1599
  &'rom-weaver;help;trim'= {
1201
1600
  }
1601
+ &'rom-weaver;help;weave'= {
1602
+ }
1202
1603
  &'rom-weaver;help;patch'= {
1203
- cand apply 'Apply one or more patches to a ROM, in order'
1204
1604
  cand validate 'Check that patches would apply cleanly, without writing anything'
1605
+ cand apply 'Apply one or more patches to a ROM, in order'
1205
1606
  cand create 'Build a patch from an original ROM and a changed one'
1206
1607
  }
1207
- &'rom-weaver;help;patch;apply'= {
1208
- }
1209
1608
  &'rom-weaver;help;patch;validate'= {
1210
1609
  }
1610
+ &'rom-weaver;help;patch;apply'= {
1611
+ }
1211
1612
  &'rom-weaver;help;patch;create'= {
1212
1613
  }
1213
- &'rom-weaver;help;bundle'= {
1214
- cand create 'Write a rom-weaver-bundle.json recipe from local ROM and patch files'
1215
- cand parse 'Read a rom-weaver-bundle.json recipe and report what it points at'
1216
- cand schema 'Print the rom-weaver-bundle.json JSON Schema, for editors and hand-authoring'
1614
+ &'rom-weaver;help;save'= {
1615
+ cand identify 'Identify a supported game save without changing it'
1616
+ cand inspect 'Show the sections and fields in a supported game save'
1617
+ cand get 'Read one field from a supported game save'
1618
+ cand export-schema 'Print the generic field schema for a supported game save'
1619
+ cand set 'Write validated field changes to a new game save'
1217
1620
  }
1218
- &'rom-weaver;help;bundle;create'= {
1621
+ &'rom-weaver;help;save;identify'= {
1219
1622
  }
1220
- &'rom-weaver;help;bundle;parse'= {
1623
+ &'rom-weaver;help;save;inspect'= {
1221
1624
  }
1222
- &'rom-weaver;help;bundle;schema'= {
1625
+ &'rom-weaver;help;save;get'= {
1626
+ }
1627
+ &'rom-weaver;help;save;export-schema'= {
1628
+ }
1629
+ &'rom-weaver;help;save;set'= {
1223
1630
  }
1224
1631
  &'rom-weaver;help;tools'= {
1225
1632
  cand ppf-undo 'Undo a PPF3 patch, using the undo data stored inside it'
1226
1633
  }
1227
1634
  &'rom-weaver;help;tools;ppf-undo'= {
1228
1635
  }
1229
- &'rom-weaver;help;plan-extract-batch'= {
1230
- }
1231
- &'rom-weaver;help;weave'= {
1232
- }
1233
- &'rom-weaver;help;completions'= {
1234
- }
1235
- &'rom-weaver;help;man'= {
1236
- }
1237
- &'rom-weaver;help;formats'= {
1238
- }
1239
1636
  &'rom-weaver;help;help'= {
1240
1637
  }
1241
1638
  ]