@my-life-buddies/cli 0.23.0-rc.0 → 0.24.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 +76 -101
- package/dist/bin/buddy.js +39 -55
- package/dist/bin/buddy.js.map +2 -2
- package/dist/bin/core.js +1218 -1084
- package/dist/bin/core.js.map +4 -4
- package/dist/web/app.js +2 -2
- package/dist/web/widgets.js +1 -1
- package/package.json +11 -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
|
|
@@ -106,15 +107,15 @@ var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
|
106
107
|
--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
|
|
107
108
|
\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
|
|
108
109
|
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
|
|
109
|
-
\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
|
|
110
|
-
\
|
|
111
|
-
|
|
112
|
-
CLI \u7EDF\u4E00\u542F\u52A8\u5E76\u7BA1\u7406\u5DE5\u7A0B\u4E2D\u7684\u5B98\u65B9 Runtime\uFF1B\u6BCF\u6B21\u542F\u52A8\u6216\u91CD\u8F7D\
|
|
110
|
+
\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
|
|
111
|
+
\u672A\u914D\u7F6E\u5730\u5740\u65F6\u8FDE\u63A5 MLB \u6B63\u5F0F\u73AF\u5883 ${DEFAULT_MLB_TEST_URL}\uFF08HTTPS\uFF09\u3002
|
|
112
|
+
\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
|
|
113
|
+
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
|
|
113
114
|
\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
|
|
114
|
-
\u8FDE\u63A5\u524D\u81EA\u68C0 .env \u7F51\u5173\uFF1B\
|
|
115
|
+
\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
|
|
115
116
|
--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
|
|
116
117
|
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
|
|
117
|
-
|
|
118
|
+
\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
|
|
118
119
|
\u6A21\u62DF\u5668\u4F7F\u7528\u5F53\u524D\u5F00\u53D1\u8005\u8D26\u53F7\u8BBF\u95EE <buddyId>-dev \u8C03\u8BD5\u5206\u8EAB\u3002`;
|
|
119
120
|
function valueAfter(args, index, flag) {
|
|
120
121
|
const value = args[index + 1];
|
|
@@ -440,10 +441,16 @@ var BuddyPlatformHost = class {
|
|
|
440
441
|
developerWebUrl,
|
|
441
442
|
openBrowser: this.#openUrl
|
|
442
443
|
}),
|
|
443
|
-
new
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
444
|
+
new EcsSessionMigrationStore(
|
|
445
|
+
new SystemCloudTokenStore({
|
|
446
|
+
account: `developer-session:${createHash("sha256").update(key).digest("hex")}`,
|
|
447
|
+
commandRunner: this.#credentialCommandRunner
|
|
448
|
+
}),
|
|
449
|
+
new SystemCloudTokenStore({
|
|
450
|
+
account: `developer-session:${createHash("sha256").update("https://47.116.168.81").digest("hex")}`,
|
|
451
|
+
commandRunner: this.#credentialCommandRunner
|
|
452
|
+
})
|
|
453
|
+
)
|
|
447
454
|
);
|
|
448
455
|
this.#sessions.set(key, session);
|
|
449
456
|
}
|
|
@@ -454,7 +461,7 @@ var BuddyPlatformHost = class {
|
|
|
454
461
|
// apps/cli/src/platform-support.ts
|
|
455
462
|
var UnsupportedDeveloperPlatformError = class extends Error {
|
|
456
463
|
constructor(platform) {
|
|
457
|
-
super(`buddy-cli
|
|
464
|
+
super(`buddy-cli V1 \u76EE\u524D\u53EA\u652F\u6301 macOS\uFF0C\u5F53\u524D\u7CFB\u7EDF\u662F ${platform}`);
|
|
458
465
|
this.platform = platform;
|
|
459
466
|
this.name = "UnsupportedDeveloperPlatformError";
|
|
460
467
|
}
|
|
@@ -477,7 +484,7 @@ import { dirname, join } from "node:path";
|
|
|
477
484
|
import { homedir } from "node:os";
|
|
478
485
|
import { createHash as createHash2 } from "node:crypto";
|
|
479
486
|
import { setTimeout as delay } from "node:timers/promises";
|
|
480
|
-
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli
|
|
487
|
+
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli", "updates");
|
|
481
488
|
var globalUpdateLock = (cache, prefix) => join(cache, "locks", createHash2("sha256").update(prefix).digest("hex"));
|
|
482
489
|
async function withUpdateLock(path, signal, action) {
|
|
483
490
|
await mkdir(dirname(path), { recursive: true, mode: 448 });
|
|
@@ -566,23 +573,22 @@ async function globalInstallation(packageRoot, packageName) {
|
|
|
566
573
|
// apps/cli/src/self-update.ts
|
|
567
574
|
var PACKAGE = "@my-life-buddies/cli";
|
|
568
575
|
var REGISTRY = "https://registry.npmjs.org/";
|
|
569
|
-
var MANUAL_UPDATE = `npm install --global
|
|
576
|
+
var MANUAL_UPDATE = `npm install --global ${PACKAGE}@latest --registry=${REGISTRY} --prefer-online`;
|
|
570
577
|
var execute = promisify(execFile);
|
|
571
578
|
var HELP = `\u7528\u6CD5:
|
|
572
|
-
buddy-cli
|
|
573
|
-
buddy-cli
|
|
574
|
-
buddy-cli
|
|
579
|
+
buddy-cli --version [--json]
|
|
580
|
+
buddy-cli update --check [--json]
|
|
581
|
+
buddy-cli update [--json]
|
|
575
582
|
|
|
576
583
|
--version \u67E5\u770B\u5F53\u524D\u8FD0\u884C\u7684 CLI \u7248\u672C\uFF08\u65E0\u9700\u8054\u7F51\uFF09
|
|
577
|
-
--check \u68C0\u67E5\u516C\u5171 npm \u7684
|
|
584
|
+
--check \u68C0\u67E5\u516C\u5171 npm \u7684 latest \u7248\u672C\uFF0C\u4E0D\u5B89\u88C5
|
|
578
585
|
--json \u8F93\u51FA JSON\uFF0C\u4F9B Coding Agent \u6216\u811A\u672C\u8BFB\u53D6
|
|
579
586
|
|
|
580
587
|
\u65E0\u9700\u767B\u5F55\u642D\u642D\u8D26\u53F7\uFF0C\u4E5F\u65E0\u9700\u8FDB\u5165\u642D\u5B50\u5DE5\u7A0B\u3002
|
|
581
588
|
\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
|
|
582
589
|
\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
|
|
583
590
|
--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
|
|
584
|
-
update \u66F4\u65B0\u5F53\u524D CLI \u6240\u5728\u7684 npm \u5B89\u88C5\u76EE\u5F55\uFF08\u542B
|
|
585
|
-
\u540C\u4E00\u5305 latest/dev/prod \u9700\u5206\u76EE\u5F55\u5B89\u88C5\u624D\u80FD\u5171\u5B58\uFF1BPROD \u547D\u4EE4\u4E3A buddy-cli-prod\uFF0C\u6B63\u5F0F\u547D\u4EE4\u4E3A buddy-cli\u3002
|
|
591
|
+
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
|
|
586
592
|
\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u6216\u5F53\u524D\u7248\u672C\u66F4\u9AD8\u65F6\u4E0D\u5B89\u88C5\u3001\u4E0D\u964D\u7EA7\u3002
|
|
587
593
|
\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
|
|
588
594
|
\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
|
|
@@ -620,7 +626,7 @@ async function latestVersion(options) {
|
|
|
620
626
|
const timeout = AbortSignal.timeout(1e4);
|
|
621
627
|
const signal = options.signal ? AbortSignal.any([options.signal, timeout]) : timeout;
|
|
622
628
|
try {
|
|
623
|
-
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/
|
|
629
|
+
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/latest`, {
|
|
624
630
|
signal,
|
|
625
631
|
headers: { Accept: "application/json" },
|
|
626
632
|
redirect: "error"
|
|
@@ -628,8 +634,7 @@ async function latestVersion(options) {
|
|
|
628
634
|
if (!response.ok) throw new Error(`npm \u8FD4\u56DE HTTP ${response.status}`);
|
|
629
635
|
const metadata = await response.json();
|
|
630
636
|
if (metadata?.name !== PACKAGE) throw new Error("npm \u8FD4\u56DE\u7684\u5305\u540D\u4E0D\u5339\u914D");
|
|
631
|
-
parseVersion(metadata.version);
|
|
632
|
-
if (typeof metadata.version !== "string" || !/^\d+\.\d+\.\d+-rc\.\d+$/.test(metadata.version)) throw new Error("npm prod \u672A\u6307\u5411 x.y.z-rc.N \u7248\u672C\uFF1BPROD CLI \u4E0D\u4F1A\u8DE8\u6E20\u9053\u66F4\u65B0\uFF0C\u8BF7\u8054\u7CFB\u53D1\u5E03\u8005\u4FEE\u6B63 prod \u6807\u7B7E");
|
|
637
|
+
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");
|
|
633
638
|
return metadata.version;
|
|
634
639
|
} catch (cause) {
|
|
635
640
|
if (options.signal?.aborted) throw new Error("\u64CD\u4F5C\u5DF2\u53D6\u6D88\u3002");
|
|
@@ -638,20 +643,15 @@ async function latestVersion(options) {
|
|
|
638
643
|
}
|
|
639
644
|
}
|
|
640
645
|
async function installUpdate(version, options) {
|
|
641
|
-
if (!/^\d+\.\d+\.\d+-rc\.\d+$/.test(version)) throw new Error("PROD CLI \u53EA\u80FD\u66F4\u65B0 x.y.z-rc.N \u7248\u672C\uFF0C\u4E0D\u4F1A\u8DE8\u6E20\u9053\u5B89\u88C5\u3002");
|
|
642
646
|
const runNpm = options.runNpm ?? ((args, settings2) => execute("npm", args, { ...settings2, encoding: "utf8", maxBuffer: 4 * 1024 * 1024 }));
|
|
643
647
|
const settings = { cwd: homedir2(), signal: options.signal, timeout: 1e4 };
|
|
644
648
|
const installation = await globalInstallation(options.packageRoot, PACKAGE);
|
|
645
649
|
if (!installation) {
|
|
646
|
-
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
|
|
650
|
+
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");
|
|
647
651
|
}
|
|
648
652
|
const { root: installedRoot, prefix } = installation;
|
|
649
|
-
const manualUpdate = `npm install --global --prefix '${prefix.replace(/'/gu, "'\\''")}' ${PACKAGE}@prod --registry=${REGISTRY} --prefer-online`;
|
|
650
653
|
await withUpdateLock(globalUpdateLock(options.cacheDirectory ?? defaultUpdateCache(), prefix), options.signal, async () => {
|
|
651
654
|
const current = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
652
|
-
if (current.name !== PACKAGE || !/^\d+\.\d+\.\d+-rc\.\d+$/.test(current.version)) {
|
|
653
|
-
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\u3001dev \u548C prod \u5B89\u88C5\u5230\u4E0D\u540C\u76EE\u5F55\uFF0C\u518D\u91CD\u65B0\u8FD0\u884C buddy-cli-prod\u3002");
|
|
654
|
-
}
|
|
655
655
|
if (current.name === PACKAGE && current.version === version) return;
|
|
656
656
|
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");
|
|
657
657
|
try {
|
|
@@ -668,13 +668,13 @@ async function installUpdate(version, options) {
|
|
|
668
668
|
"--no-fund"
|
|
669
669
|
], { ...settings, timeout: 18e4 }, runNpm);
|
|
670
670
|
} catch (cause) {
|
|
671
|
-
if (options.signal?.aborted) throw new Error("\u66F4\u65B0\u5DF2\u53D6\u6D88\uFF0C\u8BF7\u8FD0\u884C buddy-cli
|
|
671
|
+
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");
|
|
672
672
|
throw new Error(`${cause instanceof Error ? cause.message : "npm \u5B89\u88C5\u672A\u5B8C\u6210\u3002"}
|
|
673
|
-
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${
|
|
673
|
+
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${MANUAL_UPDATE}`);
|
|
674
674
|
}
|
|
675
675
|
const installed = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
676
676
|
if (installed.name !== PACKAGE || installed.version !== version) {
|
|
677
|
-
throw new Error(`npm \u5DF2\u7ED3\u675F\uFF0C\u4F46\u672A\u786E\u8BA4\u5B89\u88C5\u5230 ${version}\u3002\u8BF7\u8FD0\u884C buddy-cli
|
|
677
|
+
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}`);
|
|
678
678
|
}
|
|
679
679
|
});
|
|
680
680
|
}
|
|
@@ -684,13 +684,13 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
684
684
|
const json = args.includes("--json");
|
|
685
685
|
const fail = (message, exitCode) => {
|
|
686
686
|
if (json) io.write(JSON.stringify({ package: PACKAGE, currentVersion: options.version, error: message }));
|
|
687
|
-
else io.writeError(`buddy-cli
|
|
687
|
+
else io.writeError(`buddy-cli: ${message}`);
|
|
688
688
|
return { exitCode };
|
|
689
689
|
};
|
|
690
690
|
const flags = args.slice(1);
|
|
691
691
|
const allowed = versionOnly ? ["--json", "--help", "-h"] : ["--check", "--json", "--help", "-h"];
|
|
692
692
|
if (flags.some((flag) => !allowed.includes(flag)) || new Set(flags).size !== flags.length) {
|
|
693
|
-
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli
|
|
693
|
+
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli update --help \u67E5\u770B\u7528\u6CD5\u3002", 2);
|
|
694
694
|
}
|
|
695
695
|
if (flags.includes("--help") || flags.includes("-h")) {
|
|
696
696
|
if (json) io.write(JSON.stringify({ help: HELP }));
|
|
@@ -703,8 +703,6 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
703
703
|
io.write(json ? JSON.stringify({ package: PACKAGE, version: options.version }) : options.version);
|
|
704
704
|
return { exitCode: 0 };
|
|
705
705
|
}
|
|
706
|
-
const pin = process.env.BUDDY_CLI_PIN_VERSION;
|
|
707
|
-
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");
|
|
708
706
|
const latest = await latestVersion(options);
|
|
709
707
|
const comparison = compareVersions(latest, options.version);
|
|
710
708
|
const check = flags.includes("--check");
|
|
@@ -724,8 +722,8 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
724
722
|
...updated ? { installedVersion: latest } : {}
|
|
725
723
|
}));
|
|
726
724
|
} else if (updated) io.write(`CLI \u5DF2\u66F4\u65B0\uFF1A${options.version} \u2192 ${latest}\u3002`);
|
|
727
|
-
else if (comparison > 0) io.write(`\u53D1\u73B0\u65B0\u7248\u672C\uFF1A${options.version} \u2192 ${latest}\u3002\u8FD0\u884C buddy-cli
|
|
728
|
-
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm
|
|
725
|
+
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`);
|
|
726
|
+
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm latest ${latest}\uFF0C\u65E0\u9700\u66F4\u65B0\u3002`);
|
|
729
727
|
else io.write(`\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\uFF1A${options.version}\u3002`);
|
|
730
728
|
return { exitCode: 0 };
|
|
731
729
|
} catch (cause) {
|
|
@@ -757,7 +755,7 @@ import { promisify as promisify2 } from "node:util";
|
|
|
757
755
|
var PACKAGE2 = "@my-life-buddies/cli";
|
|
758
756
|
var REGISTRY2 = "https://registry.npmjs.org/";
|
|
759
757
|
var execute2 = promisify2(execFile2);
|
|
760
|
-
var HANDOFF_ENV = "
|
|
758
|
+
var HANDOFF_ENV = "BUDDY_CLI_UPDATE_HANDOFF";
|
|
761
759
|
async function installedVersion(root) {
|
|
762
760
|
try {
|
|
763
761
|
const pkg = JSON.parse(await readFile2(join4(root, "package.json"), "utf8"));
|
|
@@ -850,13 +848,6 @@ async function runAutoUpdate(args, io, options) {
|
|
|
850
848
|
if (args[0] === "help" || args[0] === "update" || args[0] === "--version" || args[0] === "-v" || args.includes("--help") || args.includes("-h")) return void 0;
|
|
851
849
|
try {
|
|
852
850
|
const env = { ...options.env ?? process.env };
|
|
853
|
-
const pin = env.BUDDY_CLI_PIN_VERSION;
|
|
854
|
-
if (pin !== void 0) {
|
|
855
|
-
if (!/^\d+\.\d+\.\d+-rc\.\d+$/.test(pin) || pin !== options.version) {
|
|
856
|
-
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`);
|
|
857
|
-
}
|
|
858
|
-
return void 0;
|
|
859
|
-
}
|
|
860
851
|
const handoff = env[HANDOFF_ENV];
|
|
861
852
|
if (handoff !== void 0) {
|
|
862
853
|
delete env[HANDOFF_ENV];
|
|
@@ -882,7 +873,6 @@ async function runAutoUpdate(args, io, options) {
|
|
|
882
873
|
}
|
|
883
874
|
|
|
884
875
|
// apps/cli/src/bin/buddy.ts
|
|
885
|
-
import { latestRuntimeTemplate, scaffoldPlatformAgent } from "./core.js";
|
|
886
876
|
var TerminalIO = class {
|
|
887
877
|
canPrompt = Boolean(stdin.isTTY && stdout.isTTY);
|
|
888
878
|
readline;
|
|
@@ -981,12 +971,6 @@ try {
|
|
|
981
971
|
if (maintenance === void 0 && !offlineHelp) resolvePlatformUrl2();
|
|
982
972
|
const result = maintenance ?? await runBuddyCli(args, terminal, {
|
|
983
973
|
runtimeCatalog: { signal: lifecycle.signal },
|
|
984
|
-
scaffoldPlatformAgent: (root, name) => scaffoldPlatformAgent(root, name, {
|
|
985
|
-
resolveDependencies: (template) => latestRuntimeTemplate(template, {
|
|
986
|
-
signal: lifecycle.signal,
|
|
987
|
-
report: (message) => terminal.write(message)
|
|
988
|
-
})
|
|
989
|
-
}),
|
|
990
974
|
...command === "dev" ? { dev: host().devOptions() } : {},
|
|
991
975
|
// Resolve credentials only when a supported command actually needs them.
|
|
992
976
|
get cloud() {
|
|
@@ -997,7 +981,7 @@ try {
|
|
|
997
981
|
process.exitCode = result.exitCode;
|
|
998
982
|
} catch (cause) {
|
|
999
983
|
const message = cause instanceof Error ? cause.message : String(cause);
|
|
1000
|
-
terminal.writeError(`buddy-cli
|
|
984
|
+
terminal.writeError(`buddy-cli: ${message}`);
|
|
1001
985
|
process.exitCode = 1;
|
|
1002
986
|
} finally {
|
|
1003
987
|
unbindTermination();
|