@rom-weaver/cli 0.12.3 → 0.13.0

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.
@@ -4,7 +4,7 @@
4
4
  .SH NAME
5
5
  rom\-weaver\-patch \- Apply, create, or check ROM patches
6
6
  .SH SYNOPSIS
7
- \fBrom\-weaver patch\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
7
+ \fBrom\-weaver patch\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
8
8
  .SH DESCRIPTION
9
9
  Apply, create, or check ROM patches
10
10
  .SH OPTIONS
@@ -57,6 +57,9 @@ Keep colors even when output is piped
57
57
  .TP
58
58
  \fB\-\-no\-color\fR
59
59
  Turn colors off
60
+ .TP
61
+ \fB\-y\fR, \fB\-\-yes\fR
62
+ Answer yes to every confirmation instead of asking. Does not choose between candidates
60
63
  .SH SUBCOMMANDS
61
64
  .TP
62
65
  rom\-weaver\-patch\-apply(1)
@@ -4,7 +4,7 @@
4
4
  .SH NAME
5
5
  rom\-weaver\-probe \- Identify a file: its format, its platform, and any header it carries
6
6
  .SH SYNOPSIS
7
- \fBrom\-weaver probe\fR <\fB\-i\fR|\fB\-\-input\fR> [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-s\fR|\fB\-\-select\fR] [\fB\-\-filter\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-\-no\-extract\fR] [\fB\-\-no\-ignore\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-h\fR|\fB\-\-help\fR]
7
+ \fBrom\-weaver probe\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-s\fR|\fB\-\-select\fR] [\fB\-\-filter\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-\-no\-extract\fR] [\fB\-\-no\-ignore\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fB\-i\fR|\fB\-\-input\fR>
8
8
  .SH DESCRIPTION
9
9
  Identify a file. Reports what format it is, which console it is for, whether it
10
10
  carries a copier header, and what is inside it if it is an archive.
@@ -91,3 +91,6 @@ Keep colors even when output is piped
91
91
  .TP
92
92
  \fB\-\-no\-color\fR
93
93
  Turn colors off
94
+ .TP
95
+ \fB\-y\fR, \fB\-\-yes\fR
96
+ Answer yes to every confirmation instead of asking. Does not choose between candidates
@@ -4,7 +4,7 @@
4
4
  .SH NAME
5
5
  rom\-weaver\-tools\-ppf\-undo \- Undo a PPF3 patch, using the undo data stored inside it
6
6
  .SH SYNOPSIS
7
- \fBrom\-weaver tools ppf\-undo\fR <\fB\-i\fR|\fB\-\-input\fR> [\fB\-\-json\fR] <\fB\-\-patch\fR> [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] <\fB\-o\fR|\fB\-\-output\fR> [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-h\fR|\fB\-\-help\fR]
7
+ \fBrom\-weaver tools ppf\-undo\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fB\-i\fR|\fB\-\-input\fR> <\fB\-\-patch\fR> <\fB\-o\fR|\fB\-\-output\fR>
8
8
  .SH DESCRIPTION
9
9
  Undo a PPF3 patch, turning a patched ROM back into the original.
10
10
  .PP
@@ -69,3 +69,6 @@ Keep colors even when output is piped
69
69
  .TP
70
70
  \fB\-\-no\-color\fR
71
71
  Turn colors off
72
+ .TP
73
+ \fB\-y\fR, \fB\-\-yes\fR
74
+ Answer yes to every confirmation instead of asking. Does not choose between candidates
@@ -4,7 +4,7 @@
4
4
  .SH NAME
5
5
  rom\-weaver\-tools \- One\-off recovery tools
6
6
  .SH SYNOPSIS
7
- \fBrom\-weaver tools\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
7
+ \fBrom\-weaver tools\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fIsubcommands\fR>
8
8
  .SH DESCRIPTION
9
9
  One\-off recovery tools
10
10
  .SH OPTIONS
@@ -57,6 +57,9 @@ Keep colors even when output is piped
57
57
  .TP
58
58
  \fB\-\-no\-color\fR
59
59
  Turn colors off
60
+ .TP
61
+ \fB\-y\fR, \fB\-\-yes\fR
62
+ Answer yes to every confirmation instead of asking. Does not choose between candidates
60
63
  .SH SUBCOMMANDS
61
64
  .TP
62
65
  rom\-weaver\-tools\-ppf\-undo(1)
@@ -4,7 +4,7 @@
4
4
  .SH NAME
5
5
  rom\-weaver\-trim \- Cut the padding off a ROM, or put it back
6
6
  .SH SYNOPSIS
7
- \fBrom\-weaver trim\fR <\fB\-i\fR|\fB\-\-input\fR> [\fB\-\-json\fR] [\fB\-o\fR|\fB\-\-output\fR] [\fB\-\-progress\fR] [\fB\-e\fR|\fB\-\-extension\fR] [\fB\-\-no\-progress\fR] [\fB\-\-in\-place\fR] [\fB\-\-log\-level\fR] [\fB\-n\fR|\fB\-\-dry\-run\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-revert\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-no\-recursive\fR] [\fB\-\-color\fR] [\fB\-\-no\-filter\fR] [\fB\-\-no\-color\fR] [\fB\-\-no\-extract\fR] [\fB\-\-revert\-marker\fR] [\fB\-j\fR|\fB\-\-threads\fR] [\fB\-h\fR|\fB\-\-help\fR]
7
+ \fBrom\-weaver trim\fR [\fB\-\-json\fR] [\fB\-o\fR|\fB\-\-output\fR] [\fB\-\-progress\fR] [\fB\-e\fR|\fB\-\-extension\fR] [\fB\-\-no\-progress\fR] [\fB\-\-in\-place\fR] [\fB\-\-log\-level\fR] [\fB\-n\fR|\fB\-\-dry\-run\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-revert\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-no\-recursive\fR] [\fB\-\-color\fR] [\fB\-\-filter\fR] [\fB\-\-no\-color\fR] [\fB\-\-no\-filter\fR] [\fB\-\-no\-extract\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-\-revert\-marker\fR] [\fB\-j\fR|\fB\-\-threads\fR] [\fB\-\-force\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fB\-i\fR|\fB\-\-input\fR>
8
8
  .SH DESCRIPTION
9
9
  Cut the unused padding off the end of a ROM, making the file smaller without
10
10
  changing what a console or emulator reads from it.
@@ -49,6 +49,19 @@ XISO and RVZ scrub cannot be reverted.
49
49
  \fB\-\-no\-recursive\fR
50
50
  When an input is a folder, look only at its top level
51
51
  .TP
52
+ \fB\-\-filter\fR \fI<FILTER>\fR [default: rom]
53
+ Consider only files that look like a rom or a patch, judged by extension (repeatable, comma\-separable)
54
+ .br
55
+
56
+ .br
57
+ \fIPossible values:\fR
58
+ .RS 14
59
+ .IP \(bu 2
60
+ rom
61
+ .IP \(bu 2
62
+ patch
63
+ .RE
64
+ .TP
52
65
  \fB\-\-no\-filter\fR
53
66
  Consider every file inside an archive, not just the ones that look like ROMs
54
67
  .TP
@@ -61,6 +74,9 @@ Add a small footer recording what was cut, so \-\-revert can restore the origina
61
74
  \fB\-j\fR, \fB\-\-threads\fR \fI<auto|N>\fR [default: auto]
62
75
  How many threads to use at most. auto uses every core; a format may still use fewer
63
76
  .TP
77
+ \fB\-\-force\fR
78
+ Overwrite the output if it already exists (without this, the command stops instead)
79
+ .TP
64
80
  \fB\-h\fR, \fB\-\-help\fR
65
81
  Print help (see a summary with \*(Aq\-h\*(Aq)
66
82
  .SH "GLOBAL OPTIONS"
@@ -109,3 +125,6 @@ Keep colors even when output is piped
109
125
  .TP
110
126
  \fB\-\-no\-color\fR
111
127
  Turn colors off
128
+ .TP
129
+ \fB\-y\fR, \fB\-\-yes\fR
130
+ Answer yes to every confirmation instead of asking. Does not choose between candidates
@@ -4,7 +4,7 @@
4
4
  .SH NAME
5
5
  rom\-weaver\-weave \- Apply one or more patches to a ROM, in order (same as `patch apply`)
6
6
  .SH SYNOPSIS
7
- \fBrom\-weaver weave\fR <\fB\-i\fR|\fB\-\-input\fR> [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-s\fR|\fB\-\-select\fR] [\fB\-\-no\-progress\fR] [\fB\-\-target\fR] [\fB\-\-filter\fR] [\fB\-\-log\-level\fR] [\fB\-\-no\-extract\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-\-no\-ignore\fR] [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-patch\fR] [\fB\-\-color\fR] [\fB\-o\fR|\fB\-\-output\fR] [\fB\-\-bundle\fR] [\fB\-\-no\-color\fR] [\fB\-\-with\fR] [\fB\-\-without\fR] [\fB\-\-no\-compress\fR] [\fB\-\-compress\-format\fR] [\fB\-\-compress\-codec\fR] [\fB\-\-compress\-level\fR] [\fB\-\-assume\-in\fR] [\fB\-\-expect\-in\fR] [\fB\-\-patch\-header\fR] [\fB\-\-patch\-basis\fR] [\fB\-\-output\-header\fR] [\fB\-\-repair\-checksum\fR] [\fB\-\-n64\-byte\-order\fR] [\fB\-\-ignore\-checksum\-validation\fR] [\fB\-\-expect\-out\fR] [\fB\-\-code\fR] [\fB\-\-code\-system\fR] [\fB\-\-code\-kind\fR] [\fB\-\-emit\-bundle\fR] [\fB\-\-tui\fR] [\fB\-j\fR|\fB\-\-threads\fR] [\fB\-h\fR|\fB\-\-help\fR]
7
+ \fBrom\-weaver weave\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-s\fR|\fB\-\-select\fR] [\fB\-\-no\-progress\fR] [\fB\-\-target\fR] [\fB\-\-filter\fR] [\fB\-\-log\-level\fR] [\fB\-\-no\-extract\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-\-no\-ignore\fR] [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-patch\fR] [\fB\-\-color\fR] [\fB\-o\fR|\fB\-\-output\fR] [\fB\-\-bundle\fR] [\fB\-\-no\-color\fR] [\fB\-\-with\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-\-without\fR] [\fB\-\-no\-compress\fR] [\fB\-\-compress\-format\fR] [\fB\-\-compress\-codec\fR] [\fB\-\-compress\-level\fR] [\fB\-\-assume\-in\fR] [\fB\-\-expect\-in\fR] [\fB\-\-patch\-header\fR] [\fB\-\-patch\-basis\fR] [\fB\-\-output\-header\fR] [\fB\-\-repair\-checksum\fR] [\fB\-\-n64\-byte\-order\fR] [\fB\-\-ignore\-checksum\-validation\fR] [\fB\-\-expect\-out\fR] [\fB\-\-code\fR] [\fB\-\-code\-system\fR] [\fB\-\-code\-kind\fR] [\fB\-\-emit\-bundle\fR] [\fB\-\-tui\fR] [\fB\-j\fR|\fB\-\-threads\fR] [\fB\-\-force\fR] [\fB\-n\fR|\fB\-\-dry\-run\fR] [\fB\-h\fR|\fB\-\-help\fR] <\fB\-i\fR|\fB\-\-input\fR>
8
8
  .SH DESCRIPTION
9
9
  Apply one or more patches to a ROM, in order.
10
10
  .PP
@@ -17,8 +17,12 @@ compressed format (the ROM inside is found for you), or a
17
17
  rom\-weaver\-bundle.json that already names the ROM, the patches, and the
18
18
  output.
19
19
  .PP
20
- The result is compressed by default, into whatever container the \-\-output
21
- extension names. Pass \-\-no\-compress for a plain ROM file.
20
+ When \-\-output names the selected ROM leaf\*(Aqs extension, rom\-weaver writes a
21
+ plain ROM. A registered container extension such as .zip compresses the result.
22
+ Pass \-\-no\-compress (or \-\-raw) to force a plain ROM, or use \-\-compress\-format,
23
+ \-\-compress\-codec, and \-\-compress\-level (also accepted as \-\-format, \-\-codec,
24
+ and \-\-level) to force compression. Without \-\-output, an ordinary file apply
25
+ writes a collision\-safe sibling named <stem>\-patched.<ext>.
22
26
  .PP
23
27
  Patch formats: IPS, IPS32, SOLID, BPS, UPS, VCDIFF, xdelta, GDIFF,
24
28
  HDiffPatch/HPatchZ, APS (N64), APSGBA, RUP, PPF, PAT/FFP, EBP, BDF/BSDIFF40,
@@ -31,33 +35,18 @@ DCP needs a Dreamcast .cue or .gdi input. It rebuilds the whole disc, so it
31
35
  cannot be combined with other patches or with the header and checksum options.
32
36
  .SH OPTIONS
33
37
  .TP
34
- \fB\-i\fR, \fB\-\-input\fR \fI<PATH>\fR
35
- ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle
36
- .TP
37
- \fB\-s\fR, \fB\-\-select\fR \fI<SELECT>\fR
38
- Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable)
38
+ \fB\-\-force\fR
39
+ Overwrite the output if it already exists (without this, the command stops instead)
39
40
  .TP
40
- \fB\-\-target\fR \fI<TARGET>\fR
41
- For a .cue or .gdi input, which track gets the patch. Matched like \-\-select and must hit exactly one track
41
+ \fB\-n\fR, \fB\-\-dry\-run\fR
42
+ Print the plan (inputs, patches, output, format, codec, level, threads) and stop without writing
42
43
  .TP
43
- \fB\-\-filter\fR \fI<FILTER>\fR
44
- Consider only files that look like a rom or a patch, judged by extension (repeatable, comma\-separable)
45
- .br
46
-
47
- .br
48
- \fIPossible values:\fR
49
- .RS 14
50
- .IP \(bu 2
51
- rom
52
- .IP \(bu 2
53
- patch
54
- .RE
55
- .TP
56
- \fB\-\-no\-extract\fR
57
- Do not look inside archives; treat the input and every patch as raw files
44
+ \fB\-h\fR, \fB\-\-help\fR
45
+ Print help (see a summary with \*(Aq\-h\*(Aq)
46
+ .SH BASIC
58
47
  .TP
59
- \fB\-\-no\-ignore\fR
60
- Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store
48
+ \fB\-i\fR, \fB\-\-input\fR \fI<PATH>\fR
49
+ ROM to patch. May be an archive, a disc sheet (.cue/.gdi), or a bundle
61
50
  .TP
62
51
  \fB\-\-patch\fR \fI<PATCHES>\fR
63
52
  Patch to apply. Repeat once per patch; they run in the order given, each on the
@@ -69,20 +58,6 @@ the ROM inside the input archive.
69
58
  \fB\-o\fR, \fB\-\-output\fR \fI<OUTPUT>\fR
70
59
  Where to write the patched ROM. Optional when a bundle already names the output
71
60
  .TP
72
- \fB\-\-bundle\fR \fI<BUNDLE>\fR
73
- Follow a rom\-weaver\-bundle.json recipe, which lists the patches, their order,
74
- and the expected checksums. Takes a file path or an http(s) URL.
75
-
76
- You can usually skip this flag. A bundle is picked up automatically when
77
- \-\-input is a rom\-weaver\-bundle.json (optionally .gz, .bz2, .xz, or .zst), or an
78
- archive with one at its root, and you passed no \-\-patch of your own.
79
- .TP
80
- \fB\-\-with\fR \fI<GLOB>\fR
81
- Turn on a bundle patch the bundle leaves off by default, matched by name or file name (repeatable)
82
- .TP
83
- \fB\-\-without\fR \fI<GLOB>\fR
84
- Turn off a bundle patch, matched by name or file name (repeatable)
85
- .TP
86
61
  \fB\-\-no\-compress\fR
87
62
  Write a plain ROM instead of compressing the result
88
63
  .TP
@@ -93,6 +68,22 @@ Normally you do not need this: the format comes from the \-\-output extension.
93
68
  Pass it when the output name has no usable extension. If it disagrees with the
94
69
  extension, this flag wins and a warning is printed. Use \-\-no\-compress to write
95
70
  a plain ROM instead.
71
+ .br
72
+
73
+ .br
74
+ \fIPossible values:\fR
75
+ .RS 14
76
+ .IP \(bu 2
77
+ zip
78
+ .IP \(bu 2
79
+ 7z
80
+ .IP \(bu 2
81
+ chd
82
+ .IP \(bu 2
83
+ rvz
84
+ .IP \(bu 2
85
+ z3ds
86
+ .RE
96
87
  .TP
97
88
  \fB\-\-compress\-codec\fR \fI<COMPRESS_CODEC>\fR
98
89
  Compression method for the patched ROM, written as codec or codec:level.
@@ -103,6 +94,38 @@ this is only for overriding that choice. CHD takes a list, tried in order:
103
94
  \-\-compress\-codec cdzs:19,cdzl,cdfl
104
95
 
105
96
  Without :level, a codec follows the \-\-compress\-level profile.
97
+ .br
98
+
99
+ .br
100
+ \fIPossible values:\fR
101
+ .RS 14
102
+ .IP \(bu 2
103
+ store
104
+ .IP \(bu 2
105
+ deflate
106
+ .IP \(bu 2
107
+ zstd
108
+ .IP \(bu 2
109
+ lzma
110
+ .IP \(bu 2
111
+ lzma2
112
+ .IP \(bu 2
113
+ zlib
114
+ .IP \(bu 2
115
+ huff
116
+ .IP \(bu 2
117
+ flac
118
+ .IP \(bu 2
119
+ cdzs
120
+ .IP \(bu 2
121
+ cdlz
122
+ .IP \(bu 2
123
+ cdzl
124
+ .IP \(bu 2
125
+ cdfl
126
+ .IP \(bu 2
127
+ avhuff
128
+ .RE
106
129
  .TP
107
130
  \fB\-\-compress\-level\fR \fI<COMPRESS_LEVEL>\fR
108
131
  How hard to compress: min, very\-low, low, medium, high, very\-high, or max [default: max]
@@ -126,6 +149,47 @@ very\-high
126
149
  .IP \(bu 2
127
150
  max
128
151
  .RE
152
+ .SH ARCHIVE/BUNDLE
153
+ .TP
154
+ \fB\-s\fR, \fB\-\-select\fR \fI<SELECT>\fR
155
+ Pick which file to use when the ROM or a patch is inside an archive, by exact name, prefix, or glob (repeatable)
156
+ .TP
157
+ \fB\-\-target\fR \fI<TARGET>\fR
158
+ For a .cue or .gdi input, which track gets the patch. Matched like \-\-select and must hit exactly one track
159
+ .TP
160
+ \fB\-\-filter\fR \fI<FILTER>\fR
161
+ Consider only files that look like a rom or a patch, judged by extension (repeatable, comma\-separable)
162
+ .br
163
+
164
+ .br
165
+ \fIPossible values:\fR
166
+ .RS 14
167
+ .IP \(bu 2
168
+ rom
169
+ .IP \(bu 2
170
+ patch
171
+ .RE
172
+ .TP
173
+ \fB\-\-no\-extract\fR
174
+ Do not look inside archives; treat the input and every patch as raw files
175
+ .TP
176
+ \fB\-\-no\-ignore\fR
177
+ Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store
178
+ .TP
179
+ \fB\-\-bundle\fR \fI<BUNDLE>\fR
180
+ Follow a rom\-weaver\-bundle.json recipe, which lists the patches, their order,
181
+ and the expected checksums. Takes a file path or an http(s) URL.
182
+
183
+ You can usually skip this flag. A bundle is picked up automatically when
184
+ \-\-input is a rom\-weaver\-bundle.json (optionally .gz, .bz2, .xz, or .zst), or an
185
+ archive with one at its root, and you passed no \-\-patch of your own.
186
+ .TP
187
+ \fB\-\-with\fR \fI<GLOB>\fR
188
+ Turn on a bundle patch the bundle leaves off by default, matched by name or file name (repeatable)
189
+ .TP
190
+ \fB\-\-without\fR \fI<GLOB>\fR
191
+ Turn off a bundle patch, matched by name or file name (repeatable)
192
+ .SH COMPATIBILITY
129
193
  .TP
130
194
  \fB\-\-assume\-in\fR \fI<ALGO=HEX>\fR
131
195
  Take this checksum on trust instead of reading the ROM to compute it, as in
@@ -150,9 +214,12 @@ Some ROMs carry a small header added by old copier hardware, and a patch may
150
214
  have been made either with it or without it. Getting this wrong makes the patch
151
215
  fail or produce a broken ROM.
152
216
 
153
- auto Work it out per patch (the default). The header is stripped or put
154
- back only when the patch\*(Aqs own source checksum proves which form it
155
- expects. With no such proof, the bytes are left alone.
217
+ auto Work it out per patch (the default). A patch carrying its own source
218
+ checksum (BPS, UPS, RUP) settles it outright. A patch without one
219
+ (IPS) is judged on where its records land, and if that is still
220
+ unclear by applying it both ways and keeping the result the console
221
+ still recognises as its own ROM. Any remaining doubt leaves the
222
+ bytes alone.
156
223
  keep Apply to the bytes as they are.
157
224
  strip Remove the header first.
158
225
 
@@ -189,8 +256,11 @@ checksums describe.
189
256
  previous The output of the patch before it.
190
257
 
191
258
  Reach for this when several patches in a chain were each written against the
192
- unmodified ROM rather than against each other. Binds to the most recent
193
- \-\-patch.
259
+ unmodified ROM rather than against each other.
260
+
261
+ This flag must follow the \-\-patch it describes; it binds to the most recent
262
+ \-\-patch and carries forward until the next occurrence. An occurrence before any
263
+ \-\-patch applies to every patch.
194
264
  .br
195
265
 
196
266
  .br
@@ -241,7 +311,9 @@ N64 dumps circulate in three interleavings (.z64 big\-endian, .v64 byte\-swapped
241
311
  \&.n64 little\-endian) and a patch only matches one of them.
242
312
 
243
313
  auto Match whichever order the patch\*(Aqs source CRC32 names. The
244
- default, and almost always right.
314
+ default, and almost always right. For the first patch, one
315
+ that carries no checksum (IPS) falls back to the shape of its
316
+ changes; an order settled that way is named in the report.
245
317
  keep Leave the ROM as it is.
246
318
  big\-endian Rewrite to .z64 order.
247
319
  little\-endian Rewrite to .n64 order.
@@ -268,6 +340,7 @@ byte\-swapped
268
340
  .TP
269
341
  \fB\-\-ignore\-checksum\-validation\fR
270
342
  Apply the patch even when its own checksums do not match. Can produce a broken ROM
343
+ .SH DIAGNOSTICS/AUTHORING
271
344
  .TP
272
345
  \fB\-\-expect\-out\fR \fI<ALGO=HEX>\fR
273
346
  Fail unless the patched ROM has this checksum, as in sha1=abc... (repeatable, comma\-separable)
@@ -286,12 +359,10 @@ Also write a rom\-weaver\-bundle.json recording this run, so someone else can re
286
359
  .TP
287
360
  \fB\-\-tui\fR
288
361
  Ask for each patch\*(Aqs name, version, and author, then apply and write a bundle. Needs a terminal
362
+ .SH PERFORMANCE
289
363
  .TP
290
364
  \fB\-j\fR, \fB\-\-threads\fR \fI<auto|N>\fR [default: auto]
291
365
  How many threads to use at most. auto uses every core; a format may still use fewer
292
- .TP
293
- \fB\-h\fR, \fB\-\-help\fR
294
- Print help (see a summary with \*(Aq\-h\*(Aq)
295
366
  .SH "GLOBAL OPTIONS"
296
367
  .TP
297
368
  \fB\-\-json\fR
@@ -338,20 +409,9 @@ Keep colors even when output is piped
338
409
  .TP
339
410
  \fB\-\-no\-color\fR
340
411
  Turn colors off
412
+ .TP
413
+ \fB\-y\fR, \fB\-\-yes\fR
414
+ Answer yes to every confirmation instead of asking. Does not choose between candidates
341
415
  .SH EXTRA
342
- Examples:
343
- # One patch, plain ROM out
344
- rom\-weaver patch apply \-\-input game.sfc \-\-patch hack.bps \\
345
- \-\-output hacked.sfc \-\-no\-compress
346
-
347
- # Two patches in order, straight out of and back into a zip
348
- rom\-weaver patch apply \-\-input game.zip \\
349
- \-\-patch translation.bps \-\-patch fixes.ips \-\-output hacked.zip
350
-
351
- # Replay someone else\*(Aqs published recipe
352
- rom\-weaver patch apply \-\-bundle rom\-weaver\-bundle.json \-\-input game.sfc
353
-
354
- # Check the result against a checksum the patch author published
355
- rom\-weaver patch apply \-\-input game.sfc \-\-patch hack.bps \\
356
- \-\-output hacked.sfc \-\-no\-compress \\
357
- \-\-expect\-out sha1=0123456789abcdef0123456789abcdef01234567
416
+ Example:
417
+ rom\-weaver patch apply \-i game.sfc \-\-patch hack.bps \-o hacked.sfc
@@ -1,10 +1,10 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH rom-weaver 1 "rom-weaver 0.12.3"
3
+ .TH rom-weaver 1 "rom-weaver 0.13.0"
4
4
  .SH NAME
5
5
  rom\-weaver \- Inspect, extract, checksum, compress, trim, and patch ROMs and disc images
6
6
  .SH SYNOPSIS
7
- \fBrom\-weaver\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR>
7
+ \fBrom\-weaver\fR [\fB\-\-json\fR] [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-color\fR] [\fB\-\-no\-color\fR] [\fB\-y\fR|\fB\-\-yes\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR>
8
8
  .SH DESCRIPTION
9
9
  Inspect, extract, checksum, compress, trim, and patch ROMs and disc images.
10
10
  .PP
@@ -66,6 +66,9 @@ Keep colors even when output is piped
66
66
  .TP
67
67
  \fB\-\-no\-color\fR
68
68
  Turn colors off
69
+ .TP
70
+ \fB\-y\fR, \fB\-\-yes\fR
71
+ Answer yes to every confirmation instead of asking. Does not choose between candidates
69
72
  .SH SUBCOMMANDS
70
73
  .TP
71
74
  rom\-weaver\-probe(1)
@@ -77,9 +80,6 @@ Unpack an archive or single\-payload compressed format
77
80
  rom\-weaver\-checksum(1)
78
81
  Compute checksums for a file, or for a ROM inside an archive
79
82
  .TP
80
- rom\-weaver\-ingest(1)
81
- Sort a file into ROMs and patches, unpacking and hashing along the way
82
- .TP
83
83
  rom\-weaver\-compress(1)
84
84
  Pack files into an archive, disc image, or ROM\-specific compressed format
85
85
  .TP
@@ -100,6 +100,9 @@ Apply one or more patches to a ROM, in order (same as `patch apply`)
100
100
  .TP
101
101
  rom\-weaver\-completions(1)
102
102
  Print a tab\-completion script for your shell
103
+ .TP
104
+ rom\-weaver\-formats(1)
105
+ List the formats, codecs, and checksum algorithms this build supports
103
106
  .SH EXTRA
104
107
  Examples:
105
108
  # What is this file?
@@ -121,4 +124,4 @@ Examples:
121
124
 
122
125
  Full guide: https://rom\-weaver.com/docs/cli
123
126
  .SH VERSION
124
- v0.12.3
127
+ v0.13.0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rom-weaver/cli",
3
- "version": "0.12.3",
3
+ "version": "0.13.0",
4
4
  "author": "Brandon Casey",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "description": "Local-first toolkit for ROMs and disc images: inspect, extract, compress, and apply, create, or bundle patches. Offline via a browser service-worker PWA or CLI.",
@@ -64,15 +64,15 @@
64
64
  "node": ">=22"
65
65
  },
66
66
  "optionalDependencies": {
67
- "@rom-weaver/darwin-arm64": "0.12.3",
68
- "@rom-weaver/darwin-x64": "0.12.3",
69
- "@rom-weaver/linux-arm64-musl": "0.12.3",
70
- "@rom-weaver/linux-ia32-musl": "0.12.3",
71
- "@rom-weaver/linux-x64-gnu": "0.12.3",
72
- "@rom-weaver/linux-x64-musl": "0.12.3",
73
- "@rom-weaver/win32-arm64-msvc": "0.12.3",
74
- "@rom-weaver/win32-ia32-msvc": "0.12.3",
75
- "@rom-weaver/win32-x64-msvc": "0.12.3"
67
+ "@rom-weaver/darwin-arm64": "0.13.0",
68
+ "@rom-weaver/darwin-x64": "0.13.0",
69
+ "@rom-weaver/linux-arm64-musl": "0.13.0",
70
+ "@rom-weaver/linux-ia32-musl": "0.13.0",
71
+ "@rom-weaver/linux-x64-gnu": "0.13.0",
72
+ "@rom-weaver/linux-x64-musl": "0.13.0",
73
+ "@rom-weaver/win32-arm64-msvc": "0.13.0",
74
+ "@rom-weaver/win32-ia32-msvc": "0.13.0",
75
+ "@rom-weaver/win32-x64-msvc": "0.13.0"
76
76
  },
77
77
  "scripts": {
78
78
  "docs:lint": "markdownlint-cli2",
@@ -97,6 +97,6 @@
97
97
  "doctoc": "2.5.0",
98
98
  "lefthook": "2.1.10",
99
99
  "markdownlint-cli2": "0.23.2",
100
- "oxlint": "1.76.0"
100
+ "oxlint": "1.77.0"
101
101
  }
102
102
  }
@@ -1,98 +0,0 @@
1
- .ie \n(.g .ds Aq \(aq
2
- .el .ds Aq '
3
- .TH rom-weaver-ingest 1 "rom-weaver-ingest "
4
- .SH NAME
5
- rom\-weaver\-ingest \- Sort a file into ROMs and patches, unpacking and hashing along the way
6
- .SH SYNOPSIS
7
- \fBrom\-weaver ingest\fR <\fB\-i\fR|\fB\-\-input\fR> [\fB\-\-json\fR] <\fB\-o\fR|\fB\-\-output\fR> [\fB\-\-progress\fR] [\fB\-\-no\-progress\fR] [\fB\-s\fR|\fB\-\-select\fR] [\fB\-\-log\-level\fR] [\fB\-v\fR|\fB\-\-verbose\fR]... [\fB\-\-no\-ignore\fR] [\fB\-q\fR|\fB\-\-quiet\fR] [\fB\-\-dep\-trace\fR] [\fB\-\-no\-nested\-extract\fR] [\fB\-\-color\fR] [\fB\-\-split\-bin\fR] [\fB\-\-checksum\fR] [\fB\-\-no\-color\fR] [\fB\-j\fR|\fB\-\-threads\fR] [\fB\-h\fR|\fB\-\-help\fR]
8
- .SH DESCRIPTION
9
- Sort a file into ROMs and patches, unpacking archives and hashing the ROMs as
10
- it goes.
11
- .PP
12
- This is what the webapp runs when you drop a file on it, and it is the command
13
- to reach for when you do not know what you have. For a description without the
14
- unpacking, use `probe`.
15
- .SH OPTIONS
16
- .TP
17
- \fB\-i\fR, \fB\-\-input\fR \fI<INPUT>\fR
18
- File to sort into ROMs and patches
19
- .TP
20
- \fB\-o\fR, \fB\-\-output\fR \fI<DIR>\fR
21
- Directory to write anything unpacked along the way into
22
- .TP
23
- \fB\-s\fR, \fB\-\-select\fR \fI<SELECT>\fR
24
- Pick which ROM to use when the archive holds more than one, by exact name, prefix, or glob (repeatable)
25
- .TP
26
- \fB\-\-no\-ignore\fR
27
- Also consider files normally skipped inside archives: readmes, images, checksum sidecars, and OS clutter such as .DS_Store
28
- .TP
29
- \fB\-\-no\-nested\-extract\fR
30
- Stop after one layer; leave any archive found inside the input packed
31
- .TP
32
- \fB\-\-split\-bin\fR [\fI<SPLIT_BIN>\fR]
33
- 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
34
- .br
35
-
36
- .br
37
- \fIPossible values:\fR
38
- .RS 14
39
- .IP \(bu 2
40
- true
41
- .IP \(bu 2
42
- false
43
- .RE
44
- .TP
45
- \fB\-\-checksum\fR \fI<ALGO>\fR
46
- Which checksums to compute for each ROM found (repeatable, comma\-separable) [default: crc32,md5,sha1]
47
- .TP
48
- \fB\-j\fR, \fB\-\-threads\fR \fI<auto|N>\fR [default: auto]
49
- How many threads to use at most. auto uses every core; a format may still use fewer
50
- .TP
51
- \fB\-h\fR, \fB\-\-help\fR
52
- Print help (see a summary with \*(Aq\-h\*(Aq)
53
- .SH "GLOBAL OPTIONS"
54
- .TP
55
- \fB\-\-json\fR
56
- Print one JSON object per line instead of human\-readable output
57
- .TP
58
- \fB\-\-progress\fR
59
- Show progress even when output is piped to a file or another program
60
- .TP
61
- \fB\-\-no\-progress\fR
62
- Hide progress
63
- .TP
64
- \fB\-\-log\-level\fR \fI<LOG_LEVEL>\fR
65
- How much rom\-weaver logs to stderr. Separate from the normal output [default: off]
66
- .br
67
-
68
- .br
69
- \fIPossible values:\fR
70
- .RS 14
71
- .IP \(bu 2
72
- off
73
- .IP \(bu 2
74
- error
75
- .IP \(bu 2
76
- warn
77
- .IP \(bu 2
78
- info
79
- .IP \(bu 2
80
- debug
81
- .IP \(bu 2
82
- trace
83
- .RE
84
- .TP
85
- \fB\-v\fR, \fB\-\-verbose\fR
86
- Log more: \-v for info, \-vv for debug, \-vvv for trace
87
- .TP
88
- \fB\-q\fR, \fB\-\-quiet\fR
89
- Log errors only
90
- .TP
91
- \fB\-\-dep\-trace\fR
92
- Also log trace output from bundled libraries (for bug reports)
93
- .TP
94
- \fB\-\-color\fR
95
- Keep colors even when output is piped
96
- .TP
97
- \fB\-\-no\-color\fR
98
- Turn colors off