@my-life-buddies/cli 0.25.0-dev.0 → 0.25.1
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 -103
- package/dist/bin/buddy.js +41 -48
- package/dist/bin/buddy.js.map +2 -2
- package/dist/bin/core.js +399 -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,17 @@ 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
|
|
121
|
+
409 \u51B2\u7A81\u9700\u91CD\u8BFB\u6838\u5BF9\uFF0C\u4E0D\u81EA\u52A8\u8986\u76D6\uFF1B\u771F\u673A\u7F16\u8F91\u4F9D\u8D56\u76EE\u6807 App \u6865\u63A5\u5E76\u5355\u72EC\u9A8C\u6536\uFF0C\u540E\u53F0\u901A\u8FC7\u4E0D\u4EE3\u8868\u624B\u673A\u7AEF\u652F\u6301\u3002
|
|
122
|
+
\u5F53\u524D Creator \u53EA\u8BFB\u539F\u578B\u7684\u9650\u5236\u4E0D\u4EE3\u8868\u5E73\u53F0\u7EDF\u4E00\u7981\u6B62\u7F16\u8F91\uFF1B\u8BB0\u5F55\u7F16\u8F91\u4E0D\u7B49\u4E8E\u591A\u4EBA\u5B9E\u65F6\u540C\u6B65\u3001\u73A9\u5BB6\u8BA4\u8BC1\u6216\u73A9\u5BB6\u79C1\u6709\u6570\u636E\u9694\u79BB\u3002
|
|
120
123
|
\u6A21\u62DF\u5668\u4F7F\u7528\u5F53\u524D\u5F00\u53D1\u8005\u8D26\u53F7\u8BBF\u95EE <buddyId>-dev \u8C03\u8BD5\u5206\u8EAB\u3002`;
|
|
121
124
|
function valueAfter(args, index, flag) {
|
|
122
125
|
const value = args[index + 1];
|
|
@@ -443,10 +446,16 @@ var BuddyPlatformHost = class {
|
|
|
443
446
|
developerWebUrl,
|
|
444
447
|
openBrowser: this.#openUrl
|
|
445
448
|
}),
|
|
446
|
-
new
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
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
|
+
)
|
|
450
459
|
);
|
|
451
460
|
this.#sessions.set(key, session);
|
|
452
461
|
}
|
|
@@ -457,7 +466,7 @@ var BuddyPlatformHost = class {
|
|
|
457
466
|
// apps/cli/src/platform-support.ts
|
|
458
467
|
var UnsupportedDeveloperPlatformError = class extends Error {
|
|
459
468
|
constructor(platform) {
|
|
460
|
-
super(`buddy-cli
|
|
469
|
+
super(`buddy-cli V1 \u76EE\u524D\u53EA\u652F\u6301 macOS\uFF0C\u5F53\u524D\u7CFB\u7EDF\u662F ${platform}`);
|
|
461
470
|
this.platform = platform;
|
|
462
471
|
this.name = "UnsupportedDeveloperPlatformError";
|
|
463
472
|
}
|
|
@@ -480,7 +489,7 @@ import { dirname, join } from "node:path";
|
|
|
480
489
|
import { homedir } from "node:os";
|
|
481
490
|
import { createHash as createHash2 } from "node:crypto";
|
|
482
491
|
import { setTimeout as delay } from "node:timers/promises";
|
|
483
|
-
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli
|
|
492
|
+
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli", "updates");
|
|
484
493
|
var globalUpdateLock = (cache, prefix) => join(cache, "locks", createHash2("sha256").update(prefix).digest("hex"));
|
|
485
494
|
async function withUpdateLock(path, signal, action) {
|
|
486
495
|
await mkdir(dirname(path), { recursive: true, mode: 448 });
|
|
@@ -569,23 +578,22 @@ async function globalInstallation(packageRoot, packageName) {
|
|
|
569
578
|
// apps/cli/src/self-update.ts
|
|
570
579
|
var PACKAGE = "@my-life-buddies/cli";
|
|
571
580
|
var REGISTRY = "https://registry.npmjs.org/";
|
|
572
|
-
var MANUAL_UPDATE = `npm install --global
|
|
581
|
+
var MANUAL_UPDATE = `npm install --global ${PACKAGE}@latest --registry=${REGISTRY} --prefer-online`;
|
|
573
582
|
var execute = promisify(execFile);
|
|
574
583
|
var HELP = `\u7528\u6CD5:
|
|
575
|
-
buddy-cli
|
|
576
|
-
buddy-cli
|
|
577
|
-
buddy-cli
|
|
584
|
+
buddy-cli --version [--json]
|
|
585
|
+
buddy-cli update --check [--json]
|
|
586
|
+
buddy-cli update [--json]
|
|
578
587
|
|
|
579
588
|
--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
|
|
589
|
+
--check \u68C0\u67E5\u516C\u5171 npm \u7684 latest \u7248\u672C\uFF0C\u4E0D\u5B89\u88C5
|
|
581
590
|
--json \u8F93\u51FA JSON\uFF0C\u4F9B Coding Agent \u6216\u811A\u672C\u8BFB\u53D6
|
|
582
591
|
|
|
583
592
|
\u65E0\u9700\u767B\u5F55\u642D\u642D\u8D26\u53F7\uFF0C\u4E5F\u65E0\u9700\u8FDB\u5165\u642D\u5B50\u5DE5\u7A0B\u3002
|
|
584
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
|
|
585
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
|
|
586
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
|
|
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
|
|
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
|
|
589
597
|
\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u6216\u5F53\u524D\u7248\u672C\u66F4\u9AD8\u65F6\u4E0D\u5B89\u88C5\u3001\u4E0D\u964D\u7EA7\u3002
|
|
590
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
|
|
591
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
|
|
@@ -623,7 +631,7 @@ async function latestVersion(options) {
|
|
|
623
631
|
const timeout = AbortSignal.timeout(1e4);
|
|
624
632
|
const signal = options.signal ? AbortSignal.any([options.signal, timeout]) : timeout;
|
|
625
633
|
try {
|
|
626
|
-
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/
|
|
634
|
+
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/latest`, {
|
|
627
635
|
signal,
|
|
628
636
|
headers: { Accept: "application/json" },
|
|
629
637
|
redirect: "error"
|
|
@@ -631,8 +639,7 @@ async function latestVersion(options) {
|
|
|
631
639
|
if (!response.ok) throw new Error(`npm \u8FD4\u56DE HTTP ${response.status}`);
|
|
632
640
|
const metadata = await response.json();
|
|
633
641
|
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");
|
|
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");
|
|
636
643
|
return metadata.version;
|
|
637
644
|
} catch (cause) {
|
|
638
645
|
if (options.signal?.aborted) throw new Error("\u64CD\u4F5C\u5DF2\u53D6\u6D88\u3002");
|
|
@@ -641,20 +648,15 @@ async function latestVersion(options) {
|
|
|
641
648
|
}
|
|
642
649
|
}
|
|
643
650
|
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
651
|
const runNpm = options.runNpm ?? ((args, settings2) => execute("npm", args, { ...settings2, encoding: "utf8", maxBuffer: 4 * 1024 * 1024 }));
|
|
646
652
|
const settings = { cwd: homedir2(), signal: options.signal, timeout: 1e4 };
|
|
647
653
|
const installation = await globalInstallation(options.packageRoot, PACKAGE);
|
|
648
654
|
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
|
|
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");
|
|
650
656
|
}
|
|
651
657
|
const { root: installedRoot, prefix } = installation;
|
|
652
|
-
const manualUpdate = `npm install --global --prefix '${prefix.replace(/'/gu, "'\\''")}' ${PACKAGE}@dev --registry=${REGISTRY} --prefer-online`;
|
|
653
658
|
await withUpdateLock(globalUpdateLock(options.cacheDirectory ?? defaultUpdateCache(), prefix), options.signal, async () => {
|
|
654
659
|
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
660
|
if (current.name === PACKAGE && current.version === version) return;
|
|
659
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");
|
|
660
662
|
try {
|
|
@@ -671,13 +673,13 @@ async function installUpdate(version, options) {
|
|
|
671
673
|
"--no-fund"
|
|
672
674
|
], { ...settings, timeout: 18e4 }, runNpm);
|
|
673
675
|
} catch (cause) {
|
|
674
|
-
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");
|
|
675
677
|
throw new Error(`${cause instanceof Error ? cause.message : "npm \u5B89\u88C5\u672A\u5B8C\u6210\u3002"}
|
|
676
|
-
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${
|
|
678
|
+
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${MANUAL_UPDATE}`);
|
|
677
679
|
}
|
|
678
680
|
const installed = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
679
681
|
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
|
|
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}`);
|
|
681
683
|
}
|
|
682
684
|
});
|
|
683
685
|
}
|
|
@@ -687,13 +689,13 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
687
689
|
const json = args.includes("--json");
|
|
688
690
|
const fail = (message, exitCode) => {
|
|
689
691
|
if (json) io.write(JSON.stringify({ package: PACKAGE, currentVersion: options.version, error: message }));
|
|
690
|
-
else io.writeError(`buddy-cli
|
|
692
|
+
else io.writeError(`buddy-cli: ${message}`);
|
|
691
693
|
return { exitCode };
|
|
692
694
|
};
|
|
693
695
|
const flags = args.slice(1);
|
|
694
696
|
const allowed = versionOnly ? ["--json", "--help", "-h"] : ["--check", "--json", "--help", "-h"];
|
|
695
697
|
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
|
|
698
|
+
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli update --help \u67E5\u770B\u7528\u6CD5\u3002", 2);
|
|
697
699
|
}
|
|
698
700
|
if (flags.includes("--help") || flags.includes("-h")) {
|
|
699
701
|
if (json) io.write(JSON.stringify({ help: HELP }));
|
|
@@ -706,8 +708,6 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
706
708
|
io.write(json ? JSON.stringify({ package: PACKAGE, version: options.version }) : options.version);
|
|
707
709
|
return { exitCode: 0 };
|
|
708
710
|
}
|
|
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
711
|
const latest = await latestVersion(options);
|
|
712
712
|
const comparison = compareVersions(latest, options.version);
|
|
713
713
|
const check = flags.includes("--check");
|
|
@@ -727,8 +727,8 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
727
727
|
...updated ? { installedVersion: latest } : {}
|
|
728
728
|
}));
|
|
729
729
|
} 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
|
|
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`);
|
|
732
732
|
else io.write(`\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\uFF1A${options.version}\u3002`);
|
|
733
733
|
return { exitCode: 0 };
|
|
734
734
|
} catch (cause) {
|
|
@@ -760,7 +760,7 @@ import { promisify as promisify2 } from "node:util";
|
|
|
760
760
|
var PACKAGE2 = "@my-life-buddies/cli";
|
|
761
761
|
var REGISTRY2 = "https://registry.npmjs.org/";
|
|
762
762
|
var execute2 = promisify2(execFile2);
|
|
763
|
-
var HANDOFF_ENV = "
|
|
763
|
+
var HANDOFF_ENV = "BUDDY_CLI_UPDATE_HANDOFF";
|
|
764
764
|
async function installedVersion(root) {
|
|
765
765
|
try {
|
|
766
766
|
const pkg = JSON.parse(await readFile2(join4(root, "package.json"), "utf8"));
|
|
@@ -853,13 +853,6 @@ async function runAutoUpdate(args, io, options) {
|
|
|
853
853
|
if (args[0] === "help" || args[0] === "update" || args[0] === "--version" || args[0] === "-v" || args.includes("--help") || args.includes("-h")) return void 0;
|
|
854
854
|
try {
|
|
855
855
|
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
856
|
const handoff = env[HANDOFF_ENV];
|
|
864
857
|
if (handoff !== void 0) {
|
|
865
858
|
delete env[HANDOFF_ENV];
|
|
@@ -993,7 +986,7 @@ try {
|
|
|
993
986
|
process.exitCode = result.exitCode;
|
|
994
987
|
} catch (cause) {
|
|
995
988
|
const message = cause instanceof Error ? cause.message : String(cause);
|
|
996
|
-
terminal.writeError(`buddy-cli
|
|
989
|
+
terminal.writeError(`buddy-cli: ${message}`);
|
|
997
990
|
process.exitCode = 1;
|
|
998
991
|
} finally {
|
|
999
992
|
unbindTermination();
|