@itznexus/itznexus-cli 1.70.0 → 1.70.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.
|
@@ -2,9 +2,11 @@ export declare const UPDATED_EXIT_CODE = 75;
|
|
|
2
2
|
/**
|
|
3
3
|
* Check for updates and auto-install if a newer version is available.
|
|
4
4
|
* Skips entirely in dev mode (npm link) or if checked recently.
|
|
5
|
-
* After a successful update
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* After a successful update this process cannot continue: its loaded code
|
|
6
|
+
* is stale and running on a swapped-out install breaks in unpredictable
|
|
7
|
+
* ways. So the command is re-executed in a fresh process and we exit with
|
|
8
|
+
* the child's code, which keeps the update invisible to callers. Only when
|
|
9
|
+
* the re-exec itself fails do we fall back to exit 75 ("updated, re-run").
|
|
8
10
|
* A failed update check or install stays silent and never blocks.
|
|
9
11
|
*/
|
|
10
12
|
export declare function checkForUpdates(): void;
|
package/dist/lib/auto-update.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import os from "node:os";
|
|
4
|
-
import { execSync } from "node:child_process";
|
|
4
|
+
import { execSync, spawnSync } from "node:child_process";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
7
7
|
const PKG_ROOT = path.resolve(__dirname, "..", "..");
|
|
@@ -67,21 +67,39 @@ function performUpdate() {
|
|
|
67
67
|
return false;
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
// Exit code
|
|
71
|
-
// must be re-run. Distinct from 1 so
|
|
70
|
+
// Exit code when a self-update happened but the command could not be
|
|
71
|
+
// re-executed: it did NOT run and must be re-run. Distinct from 1 so
|
|
72
|
+
// callers can treat it as "retry" rather than a real failure.
|
|
72
73
|
export const UPDATED_EXIT_CODE = 75;
|
|
74
|
+
// Set on the re-executed child so it never re-enters the update path.
|
|
75
|
+
const SKIP_ENV = "ITZNEXUS_SKIP_UPDATE";
|
|
76
|
+
/**
|
|
77
|
+
* Re-run the current invocation in a fresh process, which loads the freshly
|
|
78
|
+
* installed code. Returns the child's exit code, or null when it could not
|
|
79
|
+
* be spawned or died on a signal.
|
|
80
|
+
*/
|
|
81
|
+
function reExec() {
|
|
82
|
+
const result = spawnSync(process.execPath, [process.argv[1], ...process.argv.slice(2)], { stdio: "inherit", env: { ...process.env, [SKIP_ENV]: "1" } });
|
|
83
|
+
if (result.error || result.status === null)
|
|
84
|
+
return null;
|
|
85
|
+
return result.status;
|
|
86
|
+
}
|
|
73
87
|
/**
|
|
74
88
|
* Check for updates and auto-install if a newer version is available.
|
|
75
89
|
* Skips entirely in dev mode (npm link) or if checked recently.
|
|
76
|
-
* After a successful update
|
|
77
|
-
*
|
|
78
|
-
*
|
|
90
|
+
* After a successful update this process cannot continue: its loaded code
|
|
91
|
+
* is stale and running on a swapped-out install breaks in unpredictable
|
|
92
|
+
* ways. So the command is re-executed in a fresh process and we exit with
|
|
93
|
+
* the child's code, which keeps the update invisible to callers. Only when
|
|
94
|
+
* the re-exec itself fails do we fall back to exit 75 ("updated, re-run").
|
|
79
95
|
* A failed update check or install stays silent and never blocks.
|
|
80
96
|
*/
|
|
81
97
|
export function checkForUpdates() {
|
|
82
98
|
try {
|
|
83
99
|
if (isDevMode())
|
|
84
100
|
return;
|
|
101
|
+
if (process.env[SKIP_ENV])
|
|
102
|
+
return;
|
|
85
103
|
const lastCheck = getLastCheckTime();
|
|
86
104
|
if (Date.now() - lastCheck < CHECK_INTERVAL_MS)
|
|
87
105
|
return;
|
|
@@ -90,12 +108,12 @@ export function checkForUpdates() {
|
|
|
90
108
|
const latest = getLatestVersion();
|
|
91
109
|
if (!latest || latest === installed)
|
|
92
110
|
return;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
111
|
+
if (!performUpdate())
|
|
112
|
+
return;
|
|
113
|
+
// stderr: stdout belongs to the command's own output (--json parsers).
|
|
114
|
+
console.error(`[itznexus] Updated ${installed} -> ${latest}.`);
|
|
115
|
+
const code = reExec();
|
|
116
|
+
process.exit(code === null ? UPDATED_EXIT_CODE : code);
|
|
99
117
|
}
|
|
100
118
|
catch {
|
|
101
119
|
// Never let update logic break the CLI
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../src/lib/auto-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../../src/lib/auto-update.ts"],"names":[],"mappings":"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"}
|