@my-life-buddies/cli 0.26.0-dev.0 → 0.26.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 +88 -119
- package/dist/bin/buddy.js +38 -47
- package/dist/bin/buddy.js.map +2 -2
- package/dist/bin/core.js +415 -374
- package/dist/bin/core.js.map +4 -4
- package/dist/bin/preview.js +65 -5
- package/dist/bin/preview.js.map +2 -2
- package/dist/web/app.js +9 -6
- package/dist/web/index.html +2 -0
- package/dist/web/products.css +19 -0
- package/dist/web/products.js +104 -0
- 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,12 +109,12 @@ 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
|
Widget \u9875\u9762\u5199\u64CD\u4F5C\u987B\u7531 operations.userUI \u663E\u5F0F\u6388\u6743\uFF0C\u7F3A\u7701\u53EA\u8BFB\uFF1B\u540E\u53F0\u7F16\u8F91\u8FD8\u9700\u914D\u5957 Server\u3001Web \u548C window.dadaWidget \u6865\u63A5\u3002
|
|
@@ -445,10 +446,16 @@ var BuddyPlatformHost = class {
|
|
|
445
446
|
developerWebUrl,
|
|
446
447
|
openBrowser: this.#openUrl
|
|
447
448
|
}),
|
|
448
|
-
new
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
449
|
+
new EcsSessionMigrationStore(
|
|
450
|
+
new SystemCloudTokenStore({
|
|
451
|
+
account: `developer-session:${createHash("sha256").update(key).digest("hex")}`,
|
|
452
|
+
commandRunner: this.#credentialCommandRunner
|
|
453
|
+
}),
|
|
454
|
+
new SystemCloudTokenStore({
|
|
455
|
+
account: `developer-session:${createHash("sha256").update("https://47.116.168.81").digest("hex")}`,
|
|
456
|
+
commandRunner: this.#credentialCommandRunner
|
|
457
|
+
})
|
|
458
|
+
)
|
|
452
459
|
);
|
|
453
460
|
this.#sessions.set(key, session);
|
|
454
461
|
}
|
|
@@ -459,7 +466,7 @@ var BuddyPlatformHost = class {
|
|
|
459
466
|
// apps/cli/src/platform-support.ts
|
|
460
467
|
var UnsupportedDeveloperPlatformError = class extends Error {
|
|
461
468
|
constructor(platform) {
|
|
462
|
-
super(`buddy-cli
|
|
469
|
+
super(`buddy-cli V1 \u76EE\u524D\u53EA\u652F\u6301 macOS\uFF0C\u5F53\u524D\u7CFB\u7EDF\u662F ${platform}`);
|
|
463
470
|
this.platform = platform;
|
|
464
471
|
this.name = "UnsupportedDeveloperPlatformError";
|
|
465
472
|
}
|
|
@@ -482,7 +489,7 @@ import { dirname, join } from "node:path";
|
|
|
482
489
|
import { homedir } from "node:os";
|
|
483
490
|
import { createHash as createHash2 } from "node:crypto";
|
|
484
491
|
import { setTimeout as delay } from "node:timers/promises";
|
|
485
|
-
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli
|
|
492
|
+
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli", "updates");
|
|
486
493
|
var globalUpdateLock = (cache, prefix) => join(cache, "locks", createHash2("sha256").update(prefix).digest("hex"));
|
|
487
494
|
async function withUpdateLock(path, signal, action) {
|
|
488
495
|
await mkdir(dirname(path), { recursive: true, mode: 448 });
|
|
@@ -571,23 +578,22 @@ async function globalInstallation(packageRoot, packageName) {
|
|
|
571
578
|
// apps/cli/src/self-update.ts
|
|
572
579
|
var PACKAGE = "@my-life-buddies/cli";
|
|
573
580
|
var REGISTRY = "https://registry.npmjs.org/";
|
|
574
|
-
var MANUAL_UPDATE = `npm install --global
|
|
581
|
+
var MANUAL_UPDATE = `npm install --global ${PACKAGE}@latest --registry=${REGISTRY} --prefer-online`;
|
|
575
582
|
var execute = promisify(execFile);
|
|
576
583
|
var HELP = `\u7528\u6CD5:
|
|
577
|
-
buddy-cli
|
|
578
|
-
buddy-cli
|
|
579
|
-
buddy-cli
|
|
584
|
+
buddy-cli --version [--json]
|
|
585
|
+
buddy-cli update --check [--json]
|
|
586
|
+
buddy-cli update [--json]
|
|
580
587
|
|
|
581
588
|
--version \u67E5\u770B\u5F53\u524D\u8FD0\u884C\u7684 CLI \u7248\u672C\uFF08\u65E0\u9700\u8054\u7F51\uFF09
|
|
582
|
-
--check \u68C0\u67E5\u516C\u5171 npm \u7684
|
|
589
|
+
--check \u68C0\u67E5\u516C\u5171 npm \u7684 latest \u7248\u672C\uFF0C\u4E0D\u5B89\u88C5
|
|
583
590
|
--json \u8F93\u51FA JSON\uFF0C\u4F9B Coding Agent \u6216\u811A\u672C\u8BFB\u53D6
|
|
584
591
|
|
|
585
592
|
\u65E0\u9700\u767B\u5F55\u642D\u642D\u8D26\u53F7\uFF0C\u4E5F\u65E0\u9700\u8FDB\u5165\u642D\u5B50\u5DE5\u7A0B\u3002
|
|
586
593
|
\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
|
|
587
594
|
\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
|
|
588
595
|
--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
|
|
589
|
-
update \u66F4\u65B0\u5F53\u524D CLI \u6240\u5728\u7684 npm \u5B89\u88C5\u76EE\u5F55\uFF08\u542B
|
|
590
|
-
\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
|
|
596
|
+
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
|
|
591
597
|
\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u6216\u5F53\u524D\u7248\u672C\u66F4\u9AD8\u65F6\u4E0D\u5B89\u88C5\u3001\u4E0D\u964D\u7EA7\u3002
|
|
592
598
|
\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
|
|
593
599
|
\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
|
|
@@ -625,7 +631,7 @@ async function latestVersion(options) {
|
|
|
625
631
|
const timeout = AbortSignal.timeout(1e4);
|
|
626
632
|
const signal = options.signal ? AbortSignal.any([options.signal, timeout]) : timeout;
|
|
627
633
|
try {
|
|
628
|
-
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/
|
|
634
|
+
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/latest`, {
|
|
629
635
|
signal,
|
|
630
636
|
headers: { Accept: "application/json" },
|
|
631
637
|
redirect: "error"
|
|
@@ -633,8 +639,7 @@ async function latestVersion(options) {
|
|
|
633
639
|
if (!response.ok) throw new Error(`npm \u8FD4\u56DE HTTP ${response.status}`);
|
|
634
640
|
const metadata = await response.json();
|
|
635
641
|
if (metadata?.name !== PACKAGE) throw new Error("npm \u8FD4\u56DE\u7684\u5305\u540D\u4E0D\u5339\u914D");
|
|
636
|
-
parseVersion(metadata.version);
|
|
637
|
-
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");
|
|
642
|
+
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");
|
|
638
643
|
return metadata.version;
|
|
639
644
|
} catch (cause) {
|
|
640
645
|
if (options.signal?.aborted) throw new Error("\u64CD\u4F5C\u5DF2\u53D6\u6D88\u3002");
|
|
@@ -643,20 +648,15 @@ async function latestVersion(options) {
|
|
|
643
648
|
}
|
|
644
649
|
}
|
|
645
650
|
async function installUpdate(version, options) {
|
|
646
|
-
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");
|
|
647
651
|
const runNpm = options.runNpm ?? ((args, settings2) => execute("npm", args, { ...settings2, encoding: "utf8", maxBuffer: 4 * 1024 * 1024 }));
|
|
648
652
|
const settings = { cwd: homedir2(), signal: options.signal, timeout: 1e4 };
|
|
649
653
|
const installation = await globalInstallation(options.packageRoot, PACKAGE);
|
|
650
654
|
if (!installation) {
|
|
651
|
-
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
|
|
655
|
+
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");
|
|
652
656
|
}
|
|
653
657
|
const { root: installedRoot, prefix } = installation;
|
|
654
|
-
const manualUpdate = `npm install --global --prefix '${prefix.replace(/'/gu, "'\\''")}' ${PACKAGE}@dev --registry=${REGISTRY} --prefer-online`;
|
|
655
658
|
await withUpdateLock(globalUpdateLock(options.cacheDirectory ?? defaultUpdateCache(), prefix), options.signal, async () => {
|
|
656
659
|
const current = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
657
|
-
if (current.name !== PACKAGE || !/^\d+\.\d+\.\d+-dev\.\d+$/.test(current.version)) {
|
|
658
|
-
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");
|
|
659
|
-
}
|
|
660
660
|
if (current.name === PACKAGE && current.version === version) return;
|
|
661
661
|
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");
|
|
662
662
|
try {
|
|
@@ -673,13 +673,13 @@ async function installUpdate(version, options) {
|
|
|
673
673
|
"--no-fund"
|
|
674
674
|
], { ...settings, timeout: 18e4 }, runNpm);
|
|
675
675
|
} catch (cause) {
|
|
676
|
-
if (options.signal?.aborted) throw new Error("\u66F4\u65B0\u5DF2\u53D6\u6D88\uFF0C\u8BF7\u8FD0\u884C buddy-cli
|
|
676
|
+
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");
|
|
677
677
|
throw new Error(`${cause instanceof Error ? cause.message : "npm \u5B89\u88C5\u672A\u5B8C\u6210\u3002"}
|
|
678
|
-
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${
|
|
678
|
+
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${MANUAL_UPDATE}`);
|
|
679
679
|
}
|
|
680
680
|
const installed = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
681
681
|
if (installed.name !== PACKAGE || installed.version !== version) {
|
|
682
|
-
throw new Error(`npm \u5DF2\u7ED3\u675F\uFF0C\u4F46\u672A\u786E\u8BA4\u5B89\u88C5\u5230 ${version}\u3002\u8BF7\u8FD0\u884C buddy-cli
|
|
682
|
+
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}`);
|
|
683
683
|
}
|
|
684
684
|
});
|
|
685
685
|
}
|
|
@@ -689,13 +689,13 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
689
689
|
const json = args.includes("--json");
|
|
690
690
|
const fail = (message, exitCode) => {
|
|
691
691
|
if (json) io.write(JSON.stringify({ package: PACKAGE, currentVersion: options.version, error: message }));
|
|
692
|
-
else io.writeError(`buddy-cli
|
|
692
|
+
else io.writeError(`buddy-cli: ${message}`);
|
|
693
693
|
return { exitCode };
|
|
694
694
|
};
|
|
695
695
|
const flags = args.slice(1);
|
|
696
696
|
const allowed = versionOnly ? ["--json", "--help", "-h"] : ["--check", "--json", "--help", "-h"];
|
|
697
697
|
if (flags.some((flag) => !allowed.includes(flag)) || new Set(flags).size !== flags.length) {
|
|
698
|
-
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli
|
|
698
|
+
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli update --help \u67E5\u770B\u7528\u6CD5\u3002", 2);
|
|
699
699
|
}
|
|
700
700
|
if (flags.includes("--help") || flags.includes("-h")) {
|
|
701
701
|
if (json) io.write(JSON.stringify({ help: HELP }));
|
|
@@ -708,8 +708,6 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
708
708
|
io.write(json ? JSON.stringify({ package: PACKAGE, version: options.version }) : options.version);
|
|
709
709
|
return { exitCode: 0 };
|
|
710
710
|
}
|
|
711
|
-
const pin = process.env.BUDDY_CLI_PIN_VERSION;
|
|
712
|
-
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");
|
|
713
711
|
const latest = await latestVersion(options);
|
|
714
712
|
const comparison = compareVersions(latest, options.version);
|
|
715
713
|
const check = flags.includes("--check");
|
|
@@ -729,8 +727,8 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
729
727
|
...updated ? { installedVersion: latest } : {}
|
|
730
728
|
}));
|
|
731
729
|
} else if (updated) io.write(`CLI \u5DF2\u66F4\u65B0\uFF1A${options.version} \u2192 ${latest}\u3002`);
|
|
732
|
-
else if (comparison > 0) io.write(`\u53D1\u73B0\u65B0\u7248\u672C\uFF1A${options.version} \u2192 ${latest}\u3002\u8FD0\u884C buddy-cli
|
|
733
|
-
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm
|
|
730
|
+
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`);
|
|
731
|
+
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm latest ${latest}\uFF0C\u65E0\u9700\u66F4\u65B0\u3002`);
|
|
734
732
|
else io.write(`\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\uFF1A${options.version}\u3002`);
|
|
735
733
|
return { exitCode: 0 };
|
|
736
734
|
} catch (cause) {
|
|
@@ -762,7 +760,7 @@ import { promisify as promisify2 } from "node:util";
|
|
|
762
760
|
var PACKAGE2 = "@my-life-buddies/cli";
|
|
763
761
|
var REGISTRY2 = "https://registry.npmjs.org/";
|
|
764
762
|
var execute2 = promisify2(execFile2);
|
|
765
|
-
var HANDOFF_ENV = "
|
|
763
|
+
var HANDOFF_ENV = "BUDDY_CLI_UPDATE_HANDOFF";
|
|
766
764
|
async function installedVersion(root) {
|
|
767
765
|
try {
|
|
768
766
|
const pkg = JSON.parse(await readFile2(join4(root, "package.json"), "utf8"));
|
|
@@ -855,13 +853,6 @@ async function runAutoUpdate(args, io, options) {
|
|
|
855
853
|
if (args[0] === "help" || args[0] === "update" || args[0] === "--version" || args[0] === "-v" || args.includes("--help") || args.includes("-h")) return void 0;
|
|
856
854
|
try {
|
|
857
855
|
const env = { ...options.env ?? process.env };
|
|
858
|
-
const pin = env.BUDDY_CLI_PIN_VERSION;
|
|
859
|
-
if (pin !== void 0) {
|
|
860
|
-
if (!/^\d+\.\d+\.\d+-dev\.\d+$/.test(pin) || pin !== options.version) {
|
|
861
|
-
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`);
|
|
862
|
-
}
|
|
863
|
-
return void 0;
|
|
864
|
-
}
|
|
865
856
|
const handoff = env[HANDOFF_ENV];
|
|
866
857
|
if (handoff !== void 0) {
|
|
867
858
|
delete env[HANDOFF_ENV];
|
|
@@ -995,7 +986,7 @@ try {
|
|
|
995
986
|
process.exitCode = result.exitCode;
|
|
996
987
|
} catch (cause) {
|
|
997
988
|
const message = cause instanceof Error ? cause.message : String(cause);
|
|
998
|
-
terminal.writeError(`buddy-cli
|
|
989
|
+
terminal.writeError(`buddy-cli: ${message}`);
|
|
999
990
|
process.exitCode = 1;
|
|
1000
991
|
} finally {
|
|
1001
992
|
unbindTermination();
|