@rom-weaver/cli 0.6.7 → 0.7.2
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.
- package/README.md +139 -35
- package/bin/rom-weaver.mjs +4 -2
- package/package.json +23 -6
package/README.md
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
<h1 align="center"><img src="packages/rom-weaver-webapp/src/assets/app/root/logo.svg" alt="rom-weaver logo" width="64" height="64" align="middle"> rom-weaver</h1>
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
|
|
4
|
+
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.
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<a href="https://
|
|
8
|
+
<a href="https://www.npmjs.com/package/rom-weaver"><img alt="npm version" src="https://img.shields.io/npm/v/rom-weaver?logo=npm&logoColor=white&label=npm&color=d9690f"></a>
|
|
9
|
+
<a href="https://crates.io/crates/rom-weaver-cli"><img alt="crates.io version" src="https://img.shields.io/crates/v/rom-weaver-cli?logo=rust&logoColor=white&label=crates.io&color=d9690f"></a>
|
|
10
|
+
<a href="https://github.com/brandonocasey/rom-weaver/pkgs/container/rom-weaver-cli"><img alt="Container images on GitHub Container Registry" src="https://img.shields.io/badge/ghcr.io-rom--weaver-d9690f?logo=docker&logoColor=white"></a>
|
|
11
|
+
<a href="https://github.com/brandonocasey/homebrew-tap"><img alt="Homebrew tap" src="https://img.shields.io/badge/homebrew-brandonocasey%2Ftap-d9690f?logo=homebrew&logoColor=white"></a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
<a href="https://github.com/brandonocasey/rom-weaver/actions/workflows/ci.yml"><img alt="CI status" src="https://img.shields.io/github/actions/workflow/status/brandonocasey/rom-weaver/ci.yml?branch=main&logo=githubactions&logoColor=white&label=CI&color=4a6d63"></a>
|
|
9
16
|
<a href="package.json"><img alt="Node.js 22 or newer" src="https://img.shields.io/badge/Node.js-22%2B-4a6d63?logo=nodedotjs&logoColor=white"></a>
|
|
10
17
|
<a href=".mise.toml"><img alt="Rust 1.95" src="https://img.shields.io/badge/Rust-1.95-2c323b?logo=rust&logoColor=white"></a>
|
|
11
18
|
<a href="LICENSE.md"><img alt="AGPL-3.0-or-later license" src="https://img.shields.io/badge/license-AGPL--3.0--or--later-4a6d63"></a>
|
|
@@ -77,12 +84,14 @@ libraries elsewhere is not supported.
|
|
|
77
84
|
|
|
78
85
|
### First public release
|
|
79
86
|
|
|
80
|
-
v0.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
v0.7.2 is the first public version to install. The changelog and the git
|
|
88
|
+
history go back further, but v0.6.0 through v0.7.1 failed partway through the
|
|
89
|
+
release pipeline or were only partially published. v0.7.1 completed most of
|
|
90
|
+
the pipeline, but it still missed the crates.io CLI package, shipped a broken
|
|
91
|
+
unscoped npm launcher, and built the static webapp archive with mismatched
|
|
92
|
+
release metadata. v0.7.2 is the first release intended to have all public
|
|
93
|
+
install methods working together. Earlier version numbers describe development
|
|
94
|
+
history or incomplete releases only.
|
|
86
95
|
|
|
87
96
|
### LLM-assisted development
|
|
88
97
|
|
|
@@ -105,27 +114,135 @@ leave the device. Install it as a PWA from the browser menu to use it offline.
|
|
|
105
114
|
New here? [Try the sample weave](https://rom-weaver.com/?bundle=first-weave.zip#/weave)
|
|
106
115
|
with tiny synthetic files.
|
|
107
116
|
|
|
108
|
-
|
|
109
|
-
|
|
117
|
+
<a name="self-host-the-webapp"></a>
|
|
118
|
+
|
|
119
|
+
<details>
|
|
120
|
+
<summary>Self-host the webapp</summary>
|
|
121
|
+
|
|
122
|
+
The Docker source build serves the full webapp — WASM build, cross-origin
|
|
123
|
+
isolation headers, SPA fallback, and precompressed assets included. The
|
|
124
|
+
[self-hosting guide](docs/self-hosting.md) covers reverse proxies, subpath
|
|
125
|
+
routing, HTTPS certificates, service-worker scope, and the required COOP/COEP
|
|
126
|
+
headers.
|
|
127
|
+
|
|
128
|
+
Build and start it with Docker Compose:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
git clone https://github.com/brandonocasey/rom-weaver.git
|
|
132
|
+
cd rom-weaver
|
|
133
|
+
docker compose up --build --detach
|
|
134
|
+
curl --fail --silent --show-error http://localhost:8080/health
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Only Docker with Compose is required; the image installs its own build
|
|
138
|
+
toolchains. Set `PORT` to change the host port, for example
|
|
139
|
+
`PORT=3000 docker compose up --build --detach`.
|
|
140
|
+
For standalone TLS, mount a trusted certificate as described in the guide and
|
|
141
|
+
set `HTTPS_PORT` instead.
|
|
142
|
+
|
|
143
|
+
</details>
|
|
110
144
|
|
|
111
145
|
### CLI
|
|
112
146
|
|
|
113
|
-
|
|
147
|
+
Every method below installs the same prebuilt binary from the GitHub release.
|
|
148
|
+
The release covers macOS arm64 and x86-64; Linux x86-64 GNU plus x86-64,
|
|
149
|
+
arm64, and i686 musl; and Windows arm64, x86-64, and x86.
|
|
114
150
|
|
|
115
|
-
|
|
151
|
+
<details>
|
|
152
|
+
<summary>Homebrew (macOS arm64/Intel, Linux arm64/x86-64)</summary>
|
|
116
153
|
|
|
117
154
|
```bash
|
|
118
155
|
brew install brandonocasey/tap/rom-weaver
|
|
119
156
|
```
|
|
120
157
|
|
|
121
|
-
|
|
158
|
+
</details>
|
|
159
|
+
|
|
160
|
+
<details>
|
|
161
|
+
<summary>Scoop (Windows)</summary>
|
|
162
|
+
|
|
163
|
+
```powershell
|
|
164
|
+
scoop bucket add brandonocasey https://github.com/brandonocasey/scoop-bucket
|
|
165
|
+
scoop install rom-weaver
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
</details>
|
|
169
|
+
|
|
170
|
+
<details>
|
|
171
|
+
<summary>Install script (macOS, Linux)</summary>
|
|
172
|
+
|
|
173
|
+
Downloads the latest release to `~/.local/bin` and verifies its checksum.
|
|
174
|
+
Override with `ROM_WEAVER_INSTALL_DIR` or pin with `ROM_WEAVER_VERSION`.
|
|
122
175
|
|
|
123
176
|
```bash
|
|
124
177
|
curl --proto '=https' --tlsv1.2 -LsSf \
|
|
125
178
|
https://raw.githubusercontent.com/brandonocasey/rom-weaver/main/install.sh | sh
|
|
126
179
|
```
|
|
127
180
|
|
|
128
|
-
|
|
181
|
+
</details>
|
|
182
|
+
|
|
183
|
+
<details>
|
|
184
|
+
<summary>Install script (Windows)</summary>
|
|
185
|
+
|
|
186
|
+
The same thing for PowerShell, installing to `%LOCALAPPDATA%\rom-weaver\bin`.
|
|
187
|
+
|
|
188
|
+
```powershell
|
|
189
|
+
irm https://raw.githubusercontent.com/brandonocasey/rom-weaver/main/install.ps1 | iex
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
</details>
|
|
193
|
+
|
|
194
|
+
<details>
|
|
195
|
+
<summary>npm</summary>
|
|
196
|
+
|
|
197
|
+
Cross-platform, and the only channel that covers every supported target at
|
|
198
|
+
once. Needs Node.js 22+. The package is a launcher that pulls the right
|
|
199
|
+
prebuilt binary through platform-specific optional dependencies, so only your
|
|
200
|
+
platform's binary is downloaded.
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
npm install --global rom-weaver
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
For a one-off run, or to add the scoped launcher for a repository's scripts,
|
|
207
|
+
use the scoped package directly:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
npx @rom-weaver/cli probe --input game.iso
|
|
211
|
+
npm install --save-dev @rom-weaver/cli
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
</details>
|
|
215
|
+
|
|
216
|
+
<details>
|
|
217
|
+
<summary>cargo-binstall</summary>
|
|
218
|
+
|
|
219
|
+
Downloads the same release binary rather than compiling the workspace, so it is
|
|
220
|
+
minutes faster than `cargo install`:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
cargo binstall rom-weaver-cli
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
</details>
|
|
227
|
+
|
|
228
|
+
<details>
|
|
229
|
+
<summary>mise</summary>
|
|
230
|
+
|
|
231
|
+
Useful when you want the CLI managed per project in `mise.toml`. mise verifies
|
|
232
|
+
the release's GitHub artifact attestations on install. The
|
|
233
|
+
`minimum_release_age=0s` option lets new releases resolve immediately on release
|
|
234
|
+
day; omit it if you prefer mise's default release-age delay.
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
mise use 'github:brandonocasey/rom-weaver[minimum_release_age=0s]'
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
</details>
|
|
241
|
+
|
|
242
|
+
<details>
|
|
243
|
+
<summary>Docker</summary>
|
|
244
|
+
|
|
245
|
+
Runs from the published Linux image without installing anything:
|
|
129
246
|
|
|
130
247
|
```bash
|
|
131
248
|
docker run --rm \
|
|
@@ -140,7 +257,12 @@ bind-mounted files keep their host ownership, so without it the container cannot
|
|
|
140
257
|
read files it does not own and leaves anything it writes owned by an unknown uid.
|
|
141
258
|
See [Run in Docker](docs/cli.md#run-in-docker).
|
|
142
259
|
|
|
143
|
-
|
|
260
|
+
</details>
|
|
261
|
+
|
|
262
|
+
<a name="build-from-source"></a>
|
|
263
|
+
|
|
264
|
+
<details>
|
|
265
|
+
<summary>Build from source</summary>
|
|
144
266
|
|
|
145
267
|
```bash
|
|
146
268
|
git clone https://github.com/brandonocasey/rom-weaver.git
|
|
@@ -152,32 +274,14 @@ rom-weaver --help
|
|
|
152
274
|
The source build requires Rust 1.95+, CMake, Clang, and a native compiler
|
|
153
275
|
toolchain.
|
|
154
276
|
|
|
277
|
+
</details>
|
|
278
|
+
|
|
155
279
|
Hitting `Permission denied`? See
|
|
156
280
|
[File permissions](docs/cli.md#file-permissions).
|
|
157
281
|
|
|
158
282
|
The [development guide](docs/development.md) covers the full toolchain setup,
|
|
159
283
|
webapp builds, and tests.
|
|
160
284
|
|
|
161
|
-
### Self-host the webapp
|
|
162
|
-
|
|
163
|
-
The Docker source build serves the full webapp — WASM build, cross-origin
|
|
164
|
-
isolation headers, SPA fallback, and precompressed assets included. The
|
|
165
|
-
[self-hosting guide](docs/self-hosting.md) covers reverse proxies, subpath
|
|
166
|
-
routing, service-worker scope, and the required COOP/COEP headers.
|
|
167
|
-
|
|
168
|
-
Build and start it with Docker Compose:
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
git clone https://github.com/brandonocasey/rom-weaver.git
|
|
172
|
-
cd rom-weaver
|
|
173
|
-
docker compose up --build --detach
|
|
174
|
-
curl --fail --silent --show-error http://localhost:8080/health
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
Only Docker with Compose is required; the image installs its own build
|
|
178
|
-
toolchains. Set `PORT` to change the host port, for example
|
|
179
|
-
`PORT=3000 docker compose up --build --detach`.
|
|
180
|
-
|
|
181
285
|
## Screenshots
|
|
182
286
|
|
|
183
287
|
[View every screenshot at full size.](docs/screenshots.md)
|
package/bin/rom-weaver.mjs
CHANGED
|
@@ -17,8 +17,10 @@ const linuxLibc = () => {
|
|
|
17
17
|
const platformPackage = (() => {
|
|
18
18
|
if (process.platform === "darwin") return `@rom-weaver/darwin-${process.arch}`;
|
|
19
19
|
if (process.platform === "win32") return `@rom-weaver/win32-${process.arch}-msvc`;
|
|
20
|
-
if (process.platform === "linux" &&
|
|
21
|
-
|
|
20
|
+
if (process.platform === "linux" && ["arm64", "ia32", "x64"].includes(process.arch)) {
|
|
21
|
+
const libc = process.arch === "x64" ? linuxLibc() : "musl";
|
|
22
|
+
return `@rom-weaver/linux-${process.arch}-${libc}`;
|
|
23
|
+
}
|
|
22
24
|
return null;
|
|
23
25
|
})();
|
|
24
26
|
|
package/package.json
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rom-weaver/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.2",
|
|
4
4
|
"author": "Brandon Casey",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
|
-
"description": "
|
|
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.",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"rom",
|
|
9
|
+
"rom-hack",
|
|
10
|
+
"patch",
|
|
11
|
+
"ips",
|
|
12
|
+
"bps",
|
|
13
|
+
"chd",
|
|
14
|
+
"rvz",
|
|
15
|
+
"z3ds",
|
|
16
|
+
"disc-image",
|
|
17
|
+
"cli"
|
|
18
|
+
],
|
|
7
19
|
"homepage": "https://rom-weaver.com",
|
|
8
20
|
"funding": "https://ko-fi.com/brandonocasey",
|
|
9
21
|
"repository": {
|
|
@@ -48,10 +60,15 @@
|
|
|
48
60
|
"node": ">=22"
|
|
49
61
|
},
|
|
50
62
|
"optionalDependencies": {
|
|
51
|
-
"@rom-weaver/darwin-arm64": "0.
|
|
52
|
-
"@rom-weaver/darwin-x64": "0.
|
|
53
|
-
"@rom-weaver/linux-
|
|
54
|
-
"@rom-weaver/
|
|
63
|
+
"@rom-weaver/darwin-arm64": "0.7.2",
|
|
64
|
+
"@rom-weaver/darwin-x64": "0.7.2",
|
|
65
|
+
"@rom-weaver/linux-arm64-musl": "0.7.2",
|
|
66
|
+
"@rom-weaver/linux-ia32-musl": "0.7.2",
|
|
67
|
+
"@rom-weaver/linux-x64-gnu": "0.7.2",
|
|
68
|
+
"@rom-weaver/linux-x64-musl": "0.7.2",
|
|
69
|
+
"@rom-weaver/win32-arm64-msvc": "0.7.2",
|
|
70
|
+
"@rom-weaver/win32-ia32-msvc": "0.7.2",
|
|
71
|
+
"@rom-weaver/win32-x64-msvc": "0.7.2"
|
|
55
72
|
},
|
|
56
73
|
"scripts": {
|
|
57
74
|
"docs:toc": "bash scripts/update-markdown-toc.sh",
|