@farazirfan/costar-server-executor 1.5.0 → 1.5.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.
|
@@ -31,7 +31,7 @@ export declare function isUpdateInProgress(): boolean;
|
|
|
31
31
|
* 1. Wait for idle state (unless force=true)
|
|
32
32
|
* 2. Run npm install -g @farazirfan/costar-server-executor@{version}
|
|
33
33
|
* 3. Notify user via Supabase
|
|
34
|
-
* 4.
|
|
34
|
+
* 4. Spawn new `costar start` process and exit the old one
|
|
35
35
|
*
|
|
36
36
|
* Returns the result. If successful, the process will exit shortly after.
|
|
37
37
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-updater.d.ts","sourceRoot":"","sources":["../../src/updates/self-updater.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"self-updater.d.ts","sourceRoot":"","sources":["../../src/updates/self-updater.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AA4JD;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAqE3B"}
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
* 1. Automatic: called by the 24h update checker when a new version is detected
|
|
7
7
|
* 2. On-demand: called by POST /api/update endpoint from costar-backend
|
|
8
8
|
*/
|
|
9
|
-
import { execSync } from "node:child_process";
|
|
9
|
+
import { execSync, spawn } from "node:child_process";
|
|
10
|
+
import fs from "node:fs";
|
|
11
|
+
import path from "node:path";
|
|
10
12
|
import { sendNotification } from "../supabase/notifications.js";
|
|
11
13
|
import { isSupabaseInitialized } from "../supabase/index.js";
|
|
12
14
|
const NPM_PACKAGE = "@farazirfan/costar-server-executor";
|
|
@@ -103,6 +105,64 @@ async function notifyUpdateResult(userId, result) {
|
|
|
103
105
|
console.error("[SELF-UPDATE] Failed to send notification:", err);
|
|
104
106
|
}
|
|
105
107
|
}
|
|
108
|
+
/**
|
|
109
|
+
* Find the costar CLI binary path.
|
|
110
|
+
* Checks common locations since global npm bin path varies by setup.
|
|
111
|
+
*/
|
|
112
|
+
function findCostarBin() {
|
|
113
|
+
// 1. Try which/command -v
|
|
114
|
+
try {
|
|
115
|
+
const bin = execSync("which costar", { encoding: "utf-8", timeout: 5000 }).trim();
|
|
116
|
+
if (bin && fs.existsSync(bin))
|
|
117
|
+
return bin;
|
|
118
|
+
}
|
|
119
|
+
catch { /* ignore */ }
|
|
120
|
+
// 2. Check common global npm bin paths
|
|
121
|
+
const candidates = [
|
|
122
|
+
"/usr/local/bin/costar",
|
|
123
|
+
"/usr/bin/costar",
|
|
124
|
+
path.join(process.env.HOME || "/root", ".npm-global/bin/costar"),
|
|
125
|
+
];
|
|
126
|
+
for (const c of candidates) {
|
|
127
|
+
if (fs.existsSync(c))
|
|
128
|
+
return c;
|
|
129
|
+
}
|
|
130
|
+
// 3. Fall back to just "costar" and hope it's on PATH
|
|
131
|
+
return "costar";
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Spawn a detached child process that runs `costar start`, then exit this process.
|
|
135
|
+
* This replaces the old process with the newly installed version.
|
|
136
|
+
* Works with nohup-style setups (Hetzner) — no process supervisor required.
|
|
137
|
+
*/
|
|
138
|
+
function respawnAndExit() {
|
|
139
|
+
const costarBin = findCostarBin();
|
|
140
|
+
const logDir = path.join(process.env.HOME || "/root", ".costar", "logs");
|
|
141
|
+
const logFile = path.join(logDir, "costar.log");
|
|
142
|
+
// Ensure log directory exists
|
|
143
|
+
try {
|
|
144
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
145
|
+
}
|
|
146
|
+
catch { /* ignore */ }
|
|
147
|
+
console.log(`[SELF-UPDATE] Respawning: ${costarBin} start (log: ${logFile})`);
|
|
148
|
+
// Open log file for the child's stdout/stderr
|
|
149
|
+
const out = fs.openSync(logFile, "a");
|
|
150
|
+
const err = fs.openSync(logFile, "a");
|
|
151
|
+
// Spawn detached child — survives parent exit
|
|
152
|
+
const child = spawn(costarBin, ["start"], {
|
|
153
|
+
detached: true,
|
|
154
|
+
stdio: ["ignore", out, err],
|
|
155
|
+
env: { ...process.env },
|
|
156
|
+
cwd: process.env.HOME || "/root",
|
|
157
|
+
});
|
|
158
|
+
// Unref so this process can exit immediately
|
|
159
|
+
child.unref();
|
|
160
|
+
console.log(`[SELF-UPDATE] New process spawned (pid ${child.pid}). Exiting old process.`);
|
|
161
|
+
// Give a moment for logs to flush, then exit
|
|
162
|
+
setTimeout(() => {
|
|
163
|
+
process.exit(0);
|
|
164
|
+
}, 500);
|
|
165
|
+
}
|
|
106
166
|
/**
|
|
107
167
|
* Apply a self-update. Shared by both automatic (checker) and on-demand (API) triggers.
|
|
108
168
|
*
|
|
@@ -110,7 +170,7 @@ async function notifyUpdateResult(userId, result) {
|
|
|
110
170
|
* 1. Wait for idle state (unless force=true)
|
|
111
171
|
* 2. Run npm install -g @farazirfan/costar-server-executor@{version}
|
|
112
172
|
* 3. Notify user via Supabase
|
|
113
|
-
* 4.
|
|
173
|
+
* 4. Spawn new `costar start` process and exit the old one
|
|
114
174
|
*
|
|
115
175
|
* Returns the result. If successful, the process will exit shortly after.
|
|
116
176
|
*/
|
|
@@ -163,11 +223,9 @@ export async function applySelfUpdate(options) {
|
|
|
163
223
|
to: targetVersion,
|
|
164
224
|
};
|
|
165
225
|
await notifyUpdateResult(userId, result);
|
|
166
|
-
// 4.
|
|
167
|
-
console.log("[SELF-UPDATE] Update applied successfully.
|
|
168
|
-
|
|
169
|
-
process.exit(0);
|
|
170
|
-
}, 1000); // Brief delay to allow notification to be sent
|
|
226
|
+
// 4. Respawn with the new version and exit this process
|
|
227
|
+
console.log("[SELF-UPDATE] Update applied successfully. Respawning...");
|
|
228
|
+
respawnAndExit();
|
|
171
229
|
return result;
|
|
172
230
|
}
|
|
173
231
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-updater.js","sourceRoot":"","sources":["../../src/updates/self-updater.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"self-updater.js","sourceRoot":"","sources":["../../src/updates/self-updater.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED