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