camelagi 0.5.21 → 0.5.22
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/dist/cli/cmd-update.js +62 -10
- package/dist/cli/cmd-update.js.map +1 -1
- package/dist/core/version.js +1 -1
- package/package.json +1 -1
package/dist/cli/cmd-update.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// CLI command: camel update — update via npm
|
|
1
|
+
// CLI command: camel update — update via npm with progress bar
|
|
2
2
|
import { register } from "./registry.js";
|
|
3
3
|
import { VERSION } from "../core/version.js";
|
|
4
|
-
import { exec } from "node:child_process";
|
|
4
|
+
import { exec, spawn } from "node:child_process";
|
|
5
5
|
function run(cmd) {
|
|
6
6
|
return new Promise((resolve, reject) => {
|
|
7
7
|
exec(cmd, { encoding: "utf-8" }, (err, stdout) => {
|
|
@@ -12,12 +12,65 @@ function run(cmd) {
|
|
|
12
12
|
});
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
|
+
const c = "\x1b[36m", g = "\x1b[90m", gr = "\x1b[32m", b = "\x1b[1m", x = "\x1b[0m";
|
|
16
|
+
function progressBar(percent, width = 30) {
|
|
17
|
+
const filled = Math.round(width * percent);
|
|
18
|
+
const empty = width - filled;
|
|
19
|
+
const bar = `${c}${"█".repeat(filled)}${g}${"░".repeat(empty)}${x}`;
|
|
20
|
+
return ` ${bar} ${Math.round(percent * 100)}%`;
|
|
21
|
+
}
|
|
22
|
+
function installWithProgress(pkg) {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
const child = spawn("npm", ["i", "-g", `${pkg}@latest`], {
|
|
25
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
26
|
+
shell: true,
|
|
27
|
+
});
|
|
28
|
+
// Simulate progress based on npm lifecycle phases
|
|
29
|
+
let phase = 0;
|
|
30
|
+
const phases = [
|
|
31
|
+
{ pct: 0.15, label: "Resolving package..." },
|
|
32
|
+
{ pct: 0.35, label: "Downloading..." },
|
|
33
|
+
{ pct: 0.60, label: "Extracting..." },
|
|
34
|
+
{ pct: 0.80, label: "Linking..." },
|
|
35
|
+
{ pct: 0.95, label: "Finalizing..." },
|
|
36
|
+
];
|
|
37
|
+
// Advance progress as npm outputs data
|
|
38
|
+
const advance = () => {
|
|
39
|
+
if (phase < phases.length) {
|
|
40
|
+
const p = phases[phase];
|
|
41
|
+
process.stdout.write(`\r${progressBar(p.pct)} ${g}${p.label}${x} `);
|
|
42
|
+
phase++;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
// Start with initial progress
|
|
46
|
+
process.stdout.write(`\r${progressBar(0)} ${g}Starting...${x} `);
|
|
47
|
+
child.stdout?.on("data", () => advance());
|
|
48
|
+
child.stderr?.on("data", () => advance());
|
|
49
|
+
// Also advance on a timer for when npm is quiet
|
|
50
|
+
const timer = setInterval(() => {
|
|
51
|
+
advance();
|
|
52
|
+
}, 800);
|
|
53
|
+
child.on("close", (code) => {
|
|
54
|
+
clearInterval(timer);
|
|
55
|
+
process.stdout.write(`\r${progressBar(1)} ${gr}Done${x} \n`);
|
|
56
|
+
if (code === 0)
|
|
57
|
+
resolve();
|
|
58
|
+
else
|
|
59
|
+
reject(new Error(`npm exited with code ${code}`));
|
|
60
|
+
});
|
|
61
|
+
child.on("error", (err) => {
|
|
62
|
+
clearInterval(timer);
|
|
63
|
+
process.stdout.write("\r" + " ".repeat(60) + "\r");
|
|
64
|
+
reject(err);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
15
68
|
register({
|
|
16
69
|
name: "update",
|
|
17
70
|
description: "Update CamelAGI to the latest version",
|
|
18
71
|
run: async () => {
|
|
19
72
|
const p = await import("@clack/prompts");
|
|
20
|
-
p.intro(
|
|
73
|
+
p.intro(`${c}CamelAGI${x} update`);
|
|
21
74
|
p.log.info(`Current version: ${VERSION}`);
|
|
22
75
|
const s = p.spinner();
|
|
23
76
|
s.start("Checking for updates...");
|
|
@@ -36,19 +89,18 @@ register({
|
|
|
36
89
|
p.outro("");
|
|
37
90
|
return;
|
|
38
91
|
}
|
|
39
|
-
s.stop(`New version available: ${VERSION} → ${latest}`);
|
|
40
|
-
|
|
41
|
-
s2.start(`Downloading and installing v${latest} — this may take a moment...`);
|
|
92
|
+
s.stop(`New version available: ${b}${VERSION}${x} → ${b}${c}${latest}${x}`);
|
|
93
|
+
console.log("");
|
|
42
94
|
try {
|
|
43
|
-
await
|
|
44
|
-
s2.stop(`Installed`);
|
|
95
|
+
await installWithProgress("camelagi");
|
|
45
96
|
}
|
|
46
97
|
catch (err) {
|
|
47
|
-
|
|
48
|
-
p.log.error(
|
|
98
|
+
console.log("");
|
|
99
|
+
p.log.error(`Install failed: ${err instanceof Error ? err.message : err}`);
|
|
49
100
|
p.log.info("Try manually: npm i -g camelagi@latest");
|
|
50
101
|
return;
|
|
51
102
|
}
|
|
103
|
+
console.log("");
|
|
52
104
|
p.log.success(`Updated: ${VERSION} → ${latest}`);
|
|
53
105
|
p.outro("Restart any running server to use the new version.");
|
|
54
106
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd-update.js","sourceRoot":"","sources":["../../src/cli/cmd-update.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cmd-update.js","sourceRoot":"","sources":["../../src/cli/cmd-update.ts"],"names":[],"mappings":"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"}
|
package/dist/core/version.js
CHANGED