Files
dsh-plugin-rea/scripts
czcdr 84fc9b1611 bundle: honour the manifest's optional field and check a reused Node
Two contracts this repository already states but the code did not keep, both
found by running the bundle on a real machine:

- manifest.components.androidPlatformTools declares optional: true (without a
  device these tools simply report no devices), but setup.mjs never read the
  field, so an unreachable dl.google.com - the only Google-hosted component -
  failed the whole run on a machine where everything REA needs had provisioned
  fine. An optional component's failure is now reported as such, kept out of the
  exit code, and left unrecorded so the next run retries it; a component that
  another component requires is never treated as optional.

- manifest.components.node.probe says the reuse path must reject an incompatible
  runtime, but adoption was fileExists-only: a machine whose PATH Node is 20
  recorded it in bundle.json, and the failure surfaced much later inside REA.
  Every candidate (REA_BUNDLE_NODE and each PATH hit, not just the first) now has
  to pass that probe; one that cannot even be run is rejected with its reason.

README: apktool's real Windows gate (upstream execFile's the launcher without a
shell, so the official .bat cannot work) and the fact that the CLI refuses to
manage the Electron app's desktop profile.

Tests: 21 (was 17); Windows 21/21 and WSL 21/21. Reverse-verified - disabling the
optional accounting reddens that test, disabling the reuse check reddens the
other two.
2026-10-14 20:04:49 +08:00
..