ccus-cli 0.1.8 → 0.1.9
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.js +37 -6
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -532,11 +532,23 @@ function resolveExportOptions(action, args, rest) {
|
|
|
532
532
|
}
|
|
533
533
|
return options;
|
|
534
534
|
}
|
|
535
|
+
/** 用 readline 向用户提问,返回用户输入的一行文本。 */
|
|
536
|
+
async function prompt(question) {
|
|
537
|
+
const rl = (await Promise.resolve().then(() => __importStar(require("node:readline")))).createInterface({
|
|
538
|
+
input: process.stdin,
|
|
539
|
+
output: process.stderr,
|
|
540
|
+
});
|
|
541
|
+
return new Promise((resolve) => {
|
|
542
|
+
rl.question(question, (answer) => {
|
|
543
|
+
rl.close();
|
|
544
|
+
resolve(answer.trim());
|
|
545
|
+
});
|
|
546
|
+
});
|
|
547
|
+
}
|
|
535
548
|
/**
|
|
536
549
|
* `ccus update`:用户主动检查更新(绕过 24h 节流)。
|
|
537
550
|
*
|
|
538
|
-
*
|
|
539
|
-
* 有新版本时打印应当手动运行的 `npm i -g` 命令。
|
|
551
|
+
* 发现新版本时交互式询问用户是否立即安装;输入 y/Y 则执行 `npm i -g ccus-cli@latest`。
|
|
540
552
|
*/
|
|
541
553
|
async function handleUpdate(options) {
|
|
542
554
|
const dataDir = getDataDir(options);
|
|
@@ -552,11 +564,30 @@ async function handleUpdate(options) {
|
|
|
552
564
|
}
|
|
553
565
|
// 顺手刷新缓存,让 statusline 标记和这次检查结果保持一致。
|
|
554
566
|
await (0, update_check_1.performUpdateCheck)(dataDir);
|
|
555
|
-
if ((0, version_1.isNewerVersion)(latest, current)) {
|
|
556
|
-
process.stdout.write(`发现新版本:v${current} -> v${latest}\n运行以下命令升级:\n npm i -g ccus-cli@latest\n`);
|
|
557
|
-
}
|
|
558
|
-
else {
|
|
567
|
+
if (!(0, version_1.isNewerVersion)(latest, current)) {
|
|
559
568
|
process.stdout.write(`已是最新版本 v${current}\n`);
|
|
569
|
+
return;
|
|
570
|
+
}
|
|
571
|
+
process.stdout.write(`发现新版本:v${current} -> v${latest}\n`);
|
|
572
|
+
let answer;
|
|
573
|
+
try {
|
|
574
|
+
answer = await prompt("立即升级?[y/N] ");
|
|
575
|
+
}
|
|
576
|
+
catch {
|
|
577
|
+
// stdin 不可交互(如管道),退回纯提示。
|
|
578
|
+
process.stdout.write(`运行以下命令升级:\n npm i -g ccus-cli@latest\n`);
|
|
579
|
+
return;
|
|
580
|
+
}
|
|
581
|
+
if (answer.toLowerCase() !== "y") {
|
|
582
|
+
process.stdout.write(`已取消。如需手动升级:\n npm i -g ccus-cli@latest\n`);
|
|
583
|
+
return;
|
|
584
|
+
}
|
|
585
|
+
process.stdout.write("正在升级…\n");
|
|
586
|
+
const { spawnSync } = await Promise.resolve().then(() => __importStar(require("node:child_process")));
|
|
587
|
+
const result = spawnSync("npm", ["i", "-g", "ccus-cli@latest"], { stdio: "inherit", shell: true });
|
|
588
|
+
if (result.status !== 0) {
|
|
589
|
+
process.stdout.write("升级失败,请手动运行:\n npm i -g ccus-cli@latest\n");
|
|
590
|
+
process.exitCode = 1;
|
|
560
591
|
}
|
|
561
592
|
}
|
|
562
593
|
/**
|