@my-life-buddies/cli 0.25.0-dev.0 → 0.25.0
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/README.md +73 -102
- package/dist/bin/buddy.js +39 -48
- package/dist/bin/buddy.js.map +2 -2
- package/dist/bin/core.js +395 -357
- package/dist/bin/core.js.map +4 -4
- package/dist/web/app.js +2 -2
- package/package.json +6 -6
package/dist/bin/buddy.js
CHANGED
|
@@ -68,6 +68,7 @@ function createRuntimeLogForwarder(onLog, secrets) {
|
|
|
68
68
|
// apps/cli/src/platform-host.ts
|
|
69
69
|
import {
|
|
70
70
|
CloudAuthenticator,
|
|
71
|
+
EcsSessionMigrationStore,
|
|
71
72
|
BuddyDevError,
|
|
72
73
|
checkRuntimeUpdate,
|
|
73
74
|
checkProjectGateway,
|
|
@@ -95,8 +96,8 @@ import {
|
|
|
95
96
|
connectPreviewBridge
|
|
96
97
|
} from "./preview.js";
|
|
97
98
|
var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
98
|
-
buddy-cli
|
|
99
|
-
buddy-cli
|
|
99
|
+
buddy-cli preview [--directory <\u9879\u76EE\u76EE\u5F55>] [--buddy-id <\u642D\u5B50 ID>] [--developer-web <\u540E\u53F0 URL>] [--app-server <App Server URL>] [--no-open]
|
|
100
|
+
buddy-cli preview --local [--directory <\u9879\u76EE\u76EE\u5F55>] [--port <\u672C\u5730\u7AEF\u53E3>]
|
|
100
101
|
|
|
101
102
|
\u8BF4\u660E:
|
|
102
103
|
\u9ED8\u8BA4\u6253\u5F00\u5F53\u524D\u642D\u5B50\u7684\u521B\u9020\u8005\u540E\u53F0\u300C\u5F00\u53D1\u8C03\u8BD5\u300D\uFF0C\u8FDE\u63A5\u672C\u5730\u5DE5\u7A0B\uFF1B\u5728\u540E\u53F0\u542F\u52A8/\u505C\u6B62 DEV\u3001\u8BD5\u804A\u3001\u67E5\u770B Widget\u3001\u65F6\u95F4\u7EBF\u4E0E\u534F\u8BAE\u65E5\u5FD7\u3001\u771F\u673A\u9884\u89C8\u3002
|
|
@@ -108,15 +109,15 @@ var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
|
108
109
|
--local \u662F\u540E\u53F0\u4E0D\u53EF\u7528\u65F6\u7684\u72EC\u7ACB\u672C\u5730\u9884\u89C8\u5907\u7528\u5165\u53E3\uFF0C--port \u4EC5\u4E0E --local \u4E00\u8D77\u4F7F\u7528\u3002
|
|
109
110
|
\u4FDD\u6301\u7EC8\u7AEF\u8FD0\u884C\uFF1BCtrl+C \u6216\u5173\u95ED\u7EC8\u7AEF\u4F1A\u505C\u6B62 DEV \u5E76\u65AD\u5F00\u8FDE\u63A5\uFF0C\u5237\u65B0\u540E\u53F0\u4E0D\u4F1A\u81EA\u52A8\u542F\u52A8 DEV\u3002
|
|
110
111
|
DEV \u5931\u8D25\u5148\u67E5\u770B\u5177\u4F53\u9519\u8BEF\u548C\u8FD0\u884C\u65E5\u5FD7\uFF1B\u5347\u7EA7 CLI \u540E\u9000\u51FA\u65E7 preview \u8FDB\u7A0B\u5E76\u91CD\u65B0\u8FDE\u63A5\uFF0C\u518D\u542F\u52A8 DEV\u3002
|
|
111
|
-
\u540E\u53F0\u53EF\u5F3A\u5236\u65AD\u8FDE\uFF1B\u672C\u673A\u505C\u6B62\u672A\u786E\u8BA4\u65F6\uFF0C\u5728\u539F\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C buddy-cli
|
|
112
|
-
\u672A\u914D\u7F6E\u5730\u5740\u65F6\u8FDE\u63A5 MLB \
|
|
113
|
-
|
|
114
|
-
CLI \u7EDF\u4E00\u542F\u52A8\u5E76\u7BA1\u7406\u5DE5\u7A0B\u4E2D\u7684\u5B98\u65B9 Runtime\uFF1B\u6BCF\u6B21\u542F\u52A8\u6216\u91CD\u8F7D\
|
|
112
|
+
\u540E\u53F0\u53EF\u5F3A\u5236\u65AD\u8FDE\uFF1B\u672C\u673A\u505C\u6B62\u672A\u786E\u8BA4\u65F6\uFF0C\u5728\u539F\u5DE5\u7A0B\u76EE\u5F55\u6267\u884C buddy-cli dev stop\u3002\u8BE5\u547D\u4EE4\u4E0D\u91CD\u8FDE\u3001\u4E0D\u91CD\u542F\u3002
|
|
113
|
+
\u672A\u914D\u7F6E\u5730\u5740\u65F6\u8FDE\u63A5 MLB \u6B63\u5F0F\u73AF\u5883 ${DEFAULT_MLB_TEST_URL}\uFF08HTTPS\uFF09\u3002
|
|
114
|
+
\u6B63\u5F0F\u7248\u56FA\u5B9A\u8FDE\u63A5 PROD\uFF1B\u5730\u5740\u53C2\u6570\u53EA\u6821\u9A8C\u56FA\u5B9A\u76EE\u6807\uFF0C\u4E0D\u80FD\u5207\u6362\u5E73\u53F0\u3002Runtime \u7F51\u5173\u7531 CLI \u6CE8\u5165\u3002
|
|
115
|
+
CLI \u7EDF\u4E00\u542F\u52A8\u5E76\u7BA1\u7406\u5DE5\u7A0B\u4E2D\u7684\u5B98\u65B9 Runtime\uFF1B\u6BCF\u6B21\u542F\u52A8\u6216\u91CD\u8F7D\u5FC5\u987B\u901A\u8FC7 npm \u6700\u65B0\u7A33\u5B9A\u7248\u68C0\u67E5\u3002
|
|
115
116
|
\u8EAB\u4EFD\u8BFB\u53D6 package.json.buddyId\uFF1B.env \u4FDD\u5B58 Token\uFF0C\u542F\u52A8\u524D\u5411 Server \u6821\u9A8C\u6240\u5C5E\u642D\u5B50\u3002
|
|
116
|
-
\u8FDE\u63A5\u524D\u81EA\u68C0 .env \u7F51\u5173\uFF1B\
|
|
117
|
+
\u8FDE\u63A5\u524D\u81EA\u68C0 .env \u7F51\u5173\uFF1B\u5DF2\u77E5\u65E7 ECS \u5730\u5740\u5728\u542F\u52A8 DEV \u65F6\u6821\u9A8C\u5F52\u5C5E\u5E76\u81EA\u52A8\u66F4\u65B0\uFF0C\u4E0D\u540C\u5E73\u53F0\u4ECD\u9700\u660E\u786E\u786E\u8BA4\u3002
|
|
117
118
|
--refresh-token \u91CD\u65B0\u9886\u53D6\u5DF2\u6709\u5F00\u53D1 Token\uFF0C\u66F4\u65B0\u540C\u4E00\u73AF\u5883\u7684\u5DE5\u7A0B .env\uFF1B\u4E0D\u80FD\u5207\u6362\u5E73\u53F0\uFF0C\u4E0D\u4F1A\u751F\u6210\u65B0\u5BC6\u94A5\u3002
|
|
118
119
|
Widget \u6D88\u606F\u5361\u7247\u4FDD\u7559\u6307\u5B9A\u8BB0\u5F55\u7684\u6253\u5F00\u76EE\u6807\uFF0C\u5C0F\u6302\u4EF6\u5217\u8868\u6253\u5F00\u9ED8\u8BA4\u89C6\u56FE\u3002
|
|
119
|
-
|
|
120
|
+
\u540E\u53F0\u652F\u6301\u6309 Schema \u7F16\u8F91 Widget \u8BB0\u5F55\u4E0E\u4E0A\u4F20\u56FE\u7247\uFF1B\u901A\u8FC7 window.dadaWidget \u8C03\u7528\uFF0C\u5173\u95ED\u540E\u805A\u5408\u53D8\u66F4\u901A\u77E5\u3002\u771F\u673A\u7F16\u8F91\u4ECD\u9700\u5BA2\u6237\u7AEF\u652F\u6301\u3002
|
|
120
121
|
\u6A21\u62DF\u5668\u4F7F\u7528\u5F53\u524D\u5F00\u53D1\u8005\u8D26\u53F7\u8BBF\u95EE <buddyId>-dev \u8C03\u8BD5\u5206\u8EAB\u3002`;
|
|
121
122
|
function valueAfter(args, index, flag) {
|
|
122
123
|
const value = args[index + 1];
|
|
@@ -443,10 +444,16 @@ var BuddyPlatformHost = class {
|
|
|
443
444
|
developerWebUrl,
|
|
444
445
|
openBrowser: this.#openUrl
|
|
445
446
|
}),
|
|
446
|
-
new
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
447
|
+
new EcsSessionMigrationStore(
|
|
448
|
+
new SystemCloudTokenStore({
|
|
449
|
+
account: `developer-session:${createHash("sha256").update(key).digest("hex")}`,
|
|
450
|
+
commandRunner: this.#credentialCommandRunner
|
|
451
|
+
}),
|
|
452
|
+
new SystemCloudTokenStore({
|
|
453
|
+
account: `developer-session:${createHash("sha256").update("https://47.116.168.81").digest("hex")}`,
|
|
454
|
+
commandRunner: this.#credentialCommandRunner
|
|
455
|
+
})
|
|
456
|
+
)
|
|
450
457
|
);
|
|
451
458
|
this.#sessions.set(key, session);
|
|
452
459
|
}
|
|
@@ -457,7 +464,7 @@ var BuddyPlatformHost = class {
|
|
|
457
464
|
// apps/cli/src/platform-support.ts
|
|
458
465
|
var UnsupportedDeveloperPlatformError = class extends Error {
|
|
459
466
|
constructor(platform) {
|
|
460
|
-
super(`buddy-cli
|
|
467
|
+
super(`buddy-cli V1 \u76EE\u524D\u53EA\u652F\u6301 macOS\uFF0C\u5F53\u524D\u7CFB\u7EDF\u662F ${platform}`);
|
|
461
468
|
this.platform = platform;
|
|
462
469
|
this.name = "UnsupportedDeveloperPlatformError";
|
|
463
470
|
}
|
|
@@ -480,7 +487,7 @@ import { dirname, join } from "node:path";
|
|
|
480
487
|
import { homedir } from "node:os";
|
|
481
488
|
import { createHash as createHash2 } from "node:crypto";
|
|
482
489
|
import { setTimeout as delay } from "node:timers/promises";
|
|
483
|
-
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli
|
|
490
|
+
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli", "updates");
|
|
484
491
|
var globalUpdateLock = (cache, prefix) => join(cache, "locks", createHash2("sha256").update(prefix).digest("hex"));
|
|
485
492
|
async function withUpdateLock(path, signal, action) {
|
|
486
493
|
await mkdir(dirname(path), { recursive: true, mode: 448 });
|
|
@@ -569,23 +576,22 @@ async function globalInstallation(packageRoot, packageName) {
|
|
|
569
576
|
// apps/cli/src/self-update.ts
|
|
570
577
|
var PACKAGE = "@my-life-buddies/cli";
|
|
571
578
|
var REGISTRY = "https://registry.npmjs.org/";
|
|
572
|
-
var MANUAL_UPDATE = `npm install --global
|
|
579
|
+
var MANUAL_UPDATE = `npm install --global ${PACKAGE}@latest --registry=${REGISTRY} --prefer-online`;
|
|
573
580
|
var execute = promisify(execFile);
|
|
574
581
|
var HELP = `\u7528\u6CD5:
|
|
575
|
-
buddy-cli
|
|
576
|
-
buddy-cli
|
|
577
|
-
buddy-cli
|
|
582
|
+
buddy-cli --version [--json]
|
|
583
|
+
buddy-cli update --check [--json]
|
|
584
|
+
buddy-cli update [--json]
|
|
578
585
|
|
|
579
586
|
--version \u67E5\u770B\u5F53\u524D\u8FD0\u884C\u7684 CLI \u7248\u672C\uFF08\u65E0\u9700\u8054\u7F51\uFF09
|
|
580
|
-
--check \u68C0\u67E5\u516C\u5171 npm \u7684
|
|
587
|
+
--check \u68C0\u67E5\u516C\u5171 npm \u7684 latest \u7248\u672C\uFF0C\u4E0D\u5B89\u88C5
|
|
581
588
|
--json \u8F93\u51FA JSON\uFF0C\u4F9B Coding Agent \u6216\u811A\u672C\u8BFB\u53D6
|
|
582
589
|
|
|
583
590
|
\u65E0\u9700\u767B\u5F55\u642D\u642D\u8D26\u53F7\uFF0C\u4E5F\u65E0\u9700\u8FDB\u5165\u642D\u5B50\u5DE5\u7A0B\u3002
|
|
584
591
|
\u6B63\u5E38\u547D\u4EE4\uFF08\u542B guide\uFF09\u4F1A\u5148\u8054\u7F51\u81EA\u68C0\uFF0C\u81EA\u52A8\u66F4\u65B0\u540E\u7531\u65B0\u7248\u7EE7\u7EED\u6267\u884C\uFF1B\u7B49\u5F85\u5B8C\u6210\u5373\u53EF\u3002
|
|
585
592
|
\u5B89\u88C5\u4E3B\u52A8\u5237\u65B0 npm \u7248\u672C\u7F13\u5B58\uFF0C\u627E\u4E0D\u5230\u7248\u672C\uFF08ETARGET\uFF09\u65F6\u6700\u591A\u91CD\u8BD5\u4E00\u6B21\uFF1B\u5931\u8D25\u8BF4\u660E\u5177\u4F53\u539F\u56E0\u3002
|
|
586
593
|
--help\u3001\u5404\u547D\u4EE4 --help \u4E0E --version \u79BB\u7EBF\u53EF\u7528\uFF1B\u67E5\u8BE2\u6216\u66F4\u65B0\u5931\u8D25\u65F6\u505C\u6B62\u4E1A\u52A1\u64CD\u4F5C\u3002
|
|
587
|
-
update \u66F4\u65B0\u5F53\u524D CLI \u6240\u5728\u7684 npm \u5B89\u88C5\u76EE\u5F55\uFF08\u542B
|
|
588
|
-
\u540C\u4E00\u5305 latest/dev \u9700\u5206\u76EE\u5F55\u5B89\u88C5\u624D\u80FD\u5171\u5B58\uFF1BSIT \u547D\u4EE4\u4E3A buddy-cli-sit\uFF0C\u6B63\u5F0F\u547D\u4EE4\u4E3A buddy-cli\u3002
|
|
594
|
+
update \u66F4\u65B0\u5F53\u524D CLI \u6240\u5728\u7684 npm \u5168\u5C40\u5B89\u88C5\u76EE\u5F55\uFF08\u542B\u81EA\u5B9A\u4E49 --prefix\uFF09\uFF0C\u4E0D\u4FEE\u6539\u5176\u4ED6\u5B89\u88C5\u6216\u5DE5\u7A0B Runtime \u4F9D\u8D56\u3002
|
|
589
595
|
\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u6216\u5F53\u524D\u7248\u672C\u66F4\u9AD8\u65F6\u4E0D\u5B89\u88C5\u3001\u4E0D\u964D\u7EA7\u3002
|
|
590
596
|
\u6E90\u7801\u3001npm link\u3001\u5C40\u90E8\u5B89\u88C5\u6216 npx \u7684\u6B63\u5E38\u547D\u4EE4\u4F7F\u7528\u7F13\u5B58\u7684\u65B0\u7248\u6267\u884C\uFF0C\u4E0D\u8986\u76D6\u6E90\u7801\u6216\u5DE5\u7A0B\u4F9D\u8D56\u3002
|
|
591
597
|
\u4E0A\u8FF0\u5B89\u88C5\u65B9\u5F0F\u4E0D\u80FD\u7528 update \u5355\u72EC\u4FEE\u6539\u539F\u5B89\u88C5\uFF0C\u8BF7\u6CBF\u7528\u539F\u6765\u7684\u5B89\u88C5\u65B9\u5F0F\u66F4\u65B0\u3002
|
|
@@ -623,7 +629,7 @@ async function latestVersion(options) {
|
|
|
623
629
|
const timeout = AbortSignal.timeout(1e4);
|
|
624
630
|
const signal = options.signal ? AbortSignal.any([options.signal, timeout]) : timeout;
|
|
625
631
|
try {
|
|
626
|
-
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/
|
|
632
|
+
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/latest`, {
|
|
627
633
|
signal,
|
|
628
634
|
headers: { Accept: "application/json" },
|
|
629
635
|
redirect: "error"
|
|
@@ -631,8 +637,7 @@ async function latestVersion(options) {
|
|
|
631
637
|
if (!response.ok) throw new Error(`npm \u8FD4\u56DE HTTP ${response.status}`);
|
|
632
638
|
const metadata = await response.json();
|
|
633
639
|
if (metadata?.name !== PACKAGE) throw new Error("npm \u8FD4\u56DE\u7684\u5305\u540D\u4E0D\u5339\u914D");
|
|
634
|
-
parseVersion(metadata.version);
|
|
635
|
-
if (typeof metadata.version !== "string" || !/^\d+\.\d+\.\d+-dev\.\d+$/.test(metadata.version)) throw new Error("npm dev \u672A\u6307\u5411 x.y.z-dev.N \u7248\u672C\uFF1BSIT CLI \u4E0D\u4F1A\u8DE8\u6E20\u9053\u66F4\u65B0\uFF0C\u8BF7\u8054\u7CFB\u53D1\u5E03\u8005\u4FEE\u6B63 dev \u6807\u7B7E");
|
|
640
|
+
if (parseVersion(metadata.version).length !== 3) throw new Error("npm latest \u6307\u5411\u4E86\u6D4B\u8BD5\u7248\uFF0C\u6B63\u5F0F CLI \u4E0D\u4F1A\u8DE8\u6E20\u9053\u66F4\u65B0\uFF1B\u8BF7\u8054\u7CFB\u53D1\u5E03\u8005\u4FEE\u6B63 latest \u6807\u7B7E");
|
|
636
641
|
return metadata.version;
|
|
637
642
|
} catch (cause) {
|
|
638
643
|
if (options.signal?.aborted) throw new Error("\u64CD\u4F5C\u5DF2\u53D6\u6D88\u3002");
|
|
@@ -641,20 +646,15 @@ async function latestVersion(options) {
|
|
|
641
646
|
}
|
|
642
647
|
}
|
|
643
648
|
async function installUpdate(version, options) {
|
|
644
|
-
if (!/^\d+\.\d+\.\d+-dev\.\d+$/.test(version)) throw new Error("SIT CLI \u53EA\u80FD\u66F4\u65B0 x.y.z-dev.N \u7248\u672C\uFF0C\u4E0D\u4F1A\u8DE8\u6E20\u9053\u5B89\u88C5\u3002");
|
|
645
649
|
const runNpm = options.runNpm ?? ((args, settings2) => execute("npm", args, { ...settings2, encoding: "utf8", maxBuffer: 4 * 1024 * 1024 }));
|
|
646
650
|
const settings = { cwd: homedir2(), signal: options.signal, timeout: 1e4 };
|
|
647
651
|
const installation = await globalInstallation(options.packageRoot, PACKAGE);
|
|
648
652
|
if (!installation) {
|
|
649
|
-
throw new Error("\u5F53\u524D CLI \u662F\u6E90\u7801\u3001\u94FE\u63A5\u6216\u9879\u76EE\u5185\u5B89\u88C5\uFF0C\u4E0D\u80FD\u76F4\u63A5\u6539\u5199\u539F\u5B89\u88C5\u3002\u6B63\u5E38\u547D\u4EE4\u4F1A\u4ECE
|
|
653
|
+
throw new Error("\u5F53\u524D CLI \u662F\u6E90\u7801\u3001\u94FE\u63A5\u6216\u9879\u76EE\u5185\u5B89\u88C5\uFF0C\u4E0D\u80FD\u76F4\u63A5\u6539\u5199\u539F\u5B89\u88C5\u3002\u6B63\u5E38\u547D\u4EE4\u4F1A\u4ECE\u72EC\u7ACB\u7F13\u5B58\u8FD0\u884C\u65B0\u7248\uFF1B\u5355\u72EC\u66F4\u65B0\u8BF7\u6CBF\u7528\u539F\u6765\u7684\u5B89\u88C5\u65B9\u5F0F\u3002");
|
|
650
654
|
}
|
|
651
655
|
const { root: installedRoot, prefix } = installation;
|
|
652
|
-
const manualUpdate = `npm install --global --prefix '${prefix.replace(/'/gu, "'\\''")}' ${PACKAGE}@dev --registry=${REGISTRY} --prefer-online`;
|
|
653
656
|
await withUpdateLock(globalUpdateLock(options.cacheDirectory ?? defaultUpdateCache(), prefix), options.signal, async () => {
|
|
654
657
|
const current = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
655
|
-
if (current.name !== PACKAGE || !/^\d+\.\d+\.\d+-dev\.\d+$/.test(current.version)) {
|
|
656
|
-
throw new Error("\u5F53\u524D\u5B89\u88C5\u76EE\u5F55\u5DF2\u88AB\u5176\u4ED6\u6E20\u9053\u66FF\u6362\uFF0C\u5DF2\u505C\u6B62\u66F4\u65B0\u3002\u8BF7\u5C06 latest \u548C dev \u5B89\u88C5\u5230\u4E0D\u540C\u76EE\u5F55\uFF0C\u518D\u91CD\u65B0\u8FD0\u884C buddy-cli-sit\u3002");
|
|
657
|
-
}
|
|
658
658
|
if (current.name === PACKAGE && current.version === version) return;
|
|
659
659
|
if (current.name === PACKAGE && compareVersions(current.version, version) > 0) throw new Error("\u53E6\u4E00\u4E2A\u8FDB\u7A0B\u5DF2\u5B89\u88C5\u66F4\u65B0\u7684 CLI\uFF0C\u8BF7\u91CD\u65B0\u6267\u884C\u547D\u4EE4\u3002");
|
|
660
660
|
try {
|
|
@@ -671,13 +671,13 @@ async function installUpdate(version, options) {
|
|
|
671
671
|
"--no-fund"
|
|
672
672
|
], { ...settings, timeout: 18e4 }, runNpm);
|
|
673
673
|
} catch (cause) {
|
|
674
|
-
if (options.signal?.aborted) throw new Error("\u66F4\u65B0\u5DF2\u53D6\u6D88\uFF0C\u8BF7\u8FD0\u884C buddy-cli
|
|
674
|
+
if (options.signal?.aborted) throw new Error("\u66F4\u65B0\u5DF2\u53D6\u6D88\uFF0C\u8BF7\u8FD0\u884C buddy-cli --version \u68C0\u67E5\u5B89\u88C5\u72B6\u6001\u3002");
|
|
675
675
|
throw new Error(`${cause instanceof Error ? cause.message : "npm \u5B89\u88C5\u672A\u5B8C\u6210\u3002"}
|
|
676
|
-
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${
|
|
676
|
+
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${MANUAL_UPDATE}`);
|
|
677
677
|
}
|
|
678
678
|
const installed = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
679
679
|
if (installed.name !== PACKAGE || installed.version !== version) {
|
|
680
|
-
throw new Error(`npm \u5DF2\u7ED3\u675F\uFF0C\u4F46\u672A\u786E\u8BA4\u5B89\u88C5\u5230 ${version}\u3002\u8BF7\u8FD0\u884C buddy-cli
|
|
680
|
+
throw new Error(`npm \u5DF2\u7ED3\u675F\uFF0C\u4F46\u672A\u786E\u8BA4\u5B89\u88C5\u5230 ${version}\u3002\u8BF7\u8FD0\u884C buddy-cli --version \u68C0\u67E5\uFF0C\u5FC5\u8981\u65F6\u91CD\u8BD5\uFF1A${MANUAL_UPDATE}`);
|
|
681
681
|
}
|
|
682
682
|
});
|
|
683
683
|
}
|
|
@@ -687,13 +687,13 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
687
687
|
const json = args.includes("--json");
|
|
688
688
|
const fail = (message, exitCode) => {
|
|
689
689
|
if (json) io.write(JSON.stringify({ package: PACKAGE, currentVersion: options.version, error: message }));
|
|
690
|
-
else io.writeError(`buddy-cli
|
|
690
|
+
else io.writeError(`buddy-cli: ${message}`);
|
|
691
691
|
return { exitCode };
|
|
692
692
|
};
|
|
693
693
|
const flags = args.slice(1);
|
|
694
694
|
const allowed = versionOnly ? ["--json", "--help", "-h"] : ["--check", "--json", "--help", "-h"];
|
|
695
695
|
if (flags.some((flag) => !allowed.includes(flag)) || new Set(flags).size !== flags.length) {
|
|
696
|
-
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli
|
|
696
|
+
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli update --help \u67E5\u770B\u7528\u6CD5\u3002", 2);
|
|
697
697
|
}
|
|
698
698
|
if (flags.includes("--help") || flags.includes("-h")) {
|
|
699
699
|
if (json) io.write(JSON.stringify({ help: HELP }));
|
|
@@ -706,8 +706,6 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
706
706
|
io.write(json ? JSON.stringify({ package: PACKAGE, version: options.version }) : options.version);
|
|
707
707
|
return { exitCode: 0 };
|
|
708
708
|
}
|
|
709
|
-
const pin = process.env.BUDDY_CLI_PIN_VERSION;
|
|
710
|
-
if (pin !== void 0) throw new Error("\u5F53\u524D\u5DF2\u7528 BUDDY_CLI_PIN_VERSION \u9501\u5B9A CLI\uFF1B\u5982\u9700\u66F4\u65B0\uFF0C\u8BF7\u5148 unset BUDDY_CLI_PIN_VERSION\u3002");
|
|
711
709
|
const latest = await latestVersion(options);
|
|
712
710
|
const comparison = compareVersions(latest, options.version);
|
|
713
711
|
const check = flags.includes("--check");
|
|
@@ -727,8 +725,8 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
727
725
|
...updated ? { installedVersion: latest } : {}
|
|
728
726
|
}));
|
|
729
727
|
} else if (updated) io.write(`CLI \u5DF2\u66F4\u65B0\uFF1A${options.version} \u2192 ${latest}\u3002`);
|
|
730
|
-
else if (comparison > 0) io.write(`\u53D1\u73B0\u65B0\u7248\u672C\uFF1A${options.version} \u2192 ${latest}\u3002\u8FD0\u884C buddy-cli
|
|
731
|
-
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm
|
|
728
|
+
else if (comparison > 0) io.write(`\u53D1\u73B0\u65B0\u7248\u672C\uFF1A${options.version} \u2192 ${latest}\u3002\u8FD0\u884C buddy-cli update \u66F4\u65B0\u3002`);
|
|
729
|
+
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm latest ${latest}\uFF0C\u65E0\u9700\u66F4\u65B0\u3002`);
|
|
732
730
|
else io.write(`\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\uFF1A${options.version}\u3002`);
|
|
733
731
|
return { exitCode: 0 };
|
|
734
732
|
} catch (cause) {
|
|
@@ -760,7 +758,7 @@ import { promisify as promisify2 } from "node:util";
|
|
|
760
758
|
var PACKAGE2 = "@my-life-buddies/cli";
|
|
761
759
|
var REGISTRY2 = "https://registry.npmjs.org/";
|
|
762
760
|
var execute2 = promisify2(execFile2);
|
|
763
|
-
var HANDOFF_ENV = "
|
|
761
|
+
var HANDOFF_ENV = "BUDDY_CLI_UPDATE_HANDOFF";
|
|
764
762
|
async function installedVersion(root) {
|
|
765
763
|
try {
|
|
766
764
|
const pkg = JSON.parse(await readFile2(join4(root, "package.json"), "utf8"));
|
|
@@ -853,13 +851,6 @@ async function runAutoUpdate(args, io, options) {
|
|
|
853
851
|
if (args[0] === "help" || args[0] === "update" || args[0] === "--version" || args[0] === "-v" || args.includes("--help") || args.includes("-h")) return void 0;
|
|
854
852
|
try {
|
|
855
853
|
const env = { ...options.env ?? process.env };
|
|
856
|
-
const pin = env.BUDDY_CLI_PIN_VERSION;
|
|
857
|
-
if (pin !== void 0) {
|
|
858
|
-
if (!/^\d+\.\d+\.\d+-dev\.\d+$/.test(pin) || pin !== options.version) {
|
|
859
|
-
throw new Error(`CLI \u7248\u672C\u9501\u5B9A\u4E0D\u5339\u914D\uFF1A\u8981\u6C42 ${pin}\uFF0C\u5F53\u524D ${options.version}\u3002\u8BF7\u5B89\u88C5 @my-life-buddies/cli@${pin} \u6216 unset BUDDY_CLI_PIN_VERSION\u3002`);
|
|
860
|
-
}
|
|
861
|
-
return void 0;
|
|
862
|
-
}
|
|
863
854
|
const handoff = env[HANDOFF_ENV];
|
|
864
855
|
if (handoff !== void 0) {
|
|
865
856
|
delete env[HANDOFF_ENV];
|
|
@@ -993,7 +984,7 @@ try {
|
|
|
993
984
|
process.exitCode = result.exitCode;
|
|
994
985
|
} catch (cause) {
|
|
995
986
|
const message = cause instanceof Error ? cause.message : String(cause);
|
|
996
|
-
terminal.writeError(`buddy-cli
|
|
987
|
+
terminal.writeError(`buddy-cli: ${message}`);
|
|
997
988
|
process.exitCode = 1;
|
|
998
989
|
} finally {
|
|
999
990
|
unbindTermination();
|