From ccad48cf0a49b6d981cd435c2939b8db2028cee8 Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Wed, 23 Sep 2026 20:18:33 -0500 Subject: [PATCH] Instance scripts: read `node -` arguments from argv[2] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `node -` puts '-' in argv[1], so the registry snippets in add-instance.sh and remove-instance.sh were one slot off: they wrote the registry to a file named "-" in the working directory, with the instances.json path as the instance name, a null port and the port as the db. scripts/instances.json was never created, so the updater and start-all only ever knew instance 1 — after an update, instance 2 and up kept running old code against the new build until someone ran `pm2 restart all`. Devices that already ran add-instance.sh need their scripts/instances.json written by hand (and the stray "-" file deleted). Co-Authored-By: Claude Opus 5.5 --- scripts/add-instance.sh | 3 ++- scripts/remove-instance.sh | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/add-instance.sh b/scripts/add-instance.sh index 90b8e0e..8c456a7 100755 --- a/scripts/add-instance.sh +++ b/scripts/add-instance.sh @@ -68,7 +68,8 @@ command -v pm2 >/dev/null 2>&1 || die "PM2 not installed - run install-autostart # ── registry: create with the legacy entry, refuse duplicates, append ─────── node - "$REGISTRY" "$PM2_NAME" "$PORT" "$DB_REL" <<'NODE' const { existsSync, readFileSync, writeFileSync } = require('node:fs'); -const [, file, name, port, db] = process.argv; +// `node -` puts '-' in argv[1], so the arguments start at argv[2]. +const [file, name, port, db] = process.argv.slice(2); const entries = existsSync(file) ? JSON.parse(readFileSync(file, 'utf8')) : [{ name: 'autofirmer', port: 3000, db: 'autotrader.sqlite' }]; diff --git a/scripts/remove-instance.sh b/scripts/remove-instance.sh index b8e62ae..34553ae 100755 --- a/scripts/remove-instance.sh +++ b/scripts/remove-instance.sh @@ -23,7 +23,8 @@ PM2_NAME="autofirmer-$N" node - "$REGISTRY" "$PM2_NAME" <<'NODE' const { readFileSync, writeFileSync } = require('node:fs'); -const [, file, name] = process.argv; +// `node -` puts '-' in argv[1], so the arguments start at argv[2]. +const [file, name] = process.argv.slice(2); const entries = JSON.parse(readFileSync(file, 'utf8')); if (!entries.some((e) => e.name === name)) { console.error(` [X] ${name} is not registered`); process.exit(1); } writeFileSync(file, JSON.stringify(entries.filter((e) => e.name !== name), null, 4) + '\n');