@my-life-buddies/cli 0.28.0-dev.3 → 0.28.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 +79 -110
- package/dist/bin/buddy.js +38 -47
- package/dist/bin/buddy.js.map +2 -2
- package/dist/bin/core.js +399 -358
- package/dist/bin/core.js.map +4 -4
- package/package.json +6 -6
package/dist/bin/buddy.js
CHANGED
|
@@ -66,6 +66,7 @@ function createRuntimeLogForwarder(onLog, secrets) {
|
|
|
66
66
|
// apps/cli/src/platform-host.ts
|
|
67
67
|
import {
|
|
68
68
|
CloudAuthenticator,
|
|
69
|
+
EcsSessionMigrationStore,
|
|
69
70
|
BuddyDevError,
|
|
70
71
|
checkRuntimeUpdate,
|
|
71
72
|
checkProjectGateway,
|
|
@@ -93,7 +94,7 @@ import {
|
|
|
93
94
|
connectPreviewBridge
|
|
94
95
|
} from "./preview.js";
|
|
95
96
|
var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
96
|
-
buddy-cli
|
|
97
|
+
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]
|
|
97
98
|
|
|
98
99
|
\u8BF4\u660E:
|
|
99
100
|
\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
|
|
@@ -104,12 +105,12 @@ var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
|
104
105
|
\u8C03\u8BD5\u9875\u9762\u7531\u521B\u9020\u8005\u540E\u53F0\u63D0\u4F9B\uFF1BCLI \u53EA\u8FDE\u63A5\u548C\u8FD0\u884C\u672C\u5730\u5DE5\u7A0B\uFF0C\u4E0D\u63D0\u4F9B\u72EC\u7ACB\u672C\u5730\u7F51\u9875\u3002
|
|
105
106
|
\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
|
|
106
107
|
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
|
|
107
|
-
\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
|
|
108
|
-
\u672A\u914D\u7F6E\u5730\u5740\u65F6\u8FDE\u63A5 MLB \
|
|
109
|
-
|
|
110
|
-
CLI \u7EDF\u4E00\u542F\u52A8\u5E76\u7BA1\u7406\u5DE5\u7A0B\u4E2D\u7684\u5B98\u65B9 Runtime\uFF1B\u6BCF\u6B21\u542F\u52A8\u6216\u91CD\u8F7D\
|
|
108
|
+
\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
|
|
109
|
+
\u672A\u914D\u7F6E\u5730\u5740\u65F6\u8FDE\u63A5 MLB \u6B63\u5F0F\u73AF\u5883 ${DEFAULT_MLB_TEST_URL}\uFF08HTTPS\uFF09\u3002
|
|
110
|
+
\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
|
|
111
|
+
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
|
|
111
112
|
\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
|
|
112
|
-
\u8FDE\u63A5\u524D\u81EA\u68C0 .env \u7F51\u5173\uFF1B\
|
|
113
|
+
\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
|
|
113
114
|
--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
|
|
114
115
|
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
|
|
115
116
|
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
|
|
@@ -146,7 +147,7 @@ function parsePreviewArguments(args) {
|
|
|
146
147
|
help = true;
|
|
147
148
|
continue;
|
|
148
149
|
}
|
|
149
|
-
if (flag === "--local" || flag === "--port") throw new Error(`${flag} \u5DF2\u505C\u7528\uFF1B\u8BF7\u8FD0\u884C buddy-cli
|
|
150
|
+
if (flag === "--local" || flag === "--port") throw new Error(`${flag} \u5DF2\u505C\u7528\uFF1B\u8BF7\u8FD0\u884C buddy-cli preview\uFF0C\u5728\u521B\u9020\u8005\u540E\u53F0\u5F00\u53D1\u8C03\u8BD5\u3002`);
|
|
150
151
|
if (flag === "--no-open") {
|
|
151
152
|
if (noOpen) throw new Error("--no-open \u4E0D\u80FD\u91CD\u590D");
|
|
152
153
|
noOpen = true;
|
|
@@ -422,10 +423,16 @@ var BuddyPlatformHost = class {
|
|
|
422
423
|
developerWebUrl,
|
|
423
424
|
openBrowser: this.#openUrl
|
|
424
425
|
}),
|
|
425
|
-
new
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
426
|
+
new EcsSessionMigrationStore(
|
|
427
|
+
new SystemCloudTokenStore({
|
|
428
|
+
account: `developer-session:${createHash("sha256").update(key).digest("hex")}`,
|
|
429
|
+
commandRunner: this.#credentialCommandRunner
|
|
430
|
+
}),
|
|
431
|
+
new SystemCloudTokenStore({
|
|
432
|
+
account: `developer-session:${createHash("sha256").update("https://47.116.168.81").digest("hex")}`,
|
|
433
|
+
commandRunner: this.#credentialCommandRunner
|
|
434
|
+
})
|
|
435
|
+
)
|
|
429
436
|
);
|
|
430
437
|
this.#sessions.set(key, session);
|
|
431
438
|
}
|
|
@@ -436,7 +443,7 @@ var BuddyPlatformHost = class {
|
|
|
436
443
|
// apps/cli/src/platform-support.ts
|
|
437
444
|
var UnsupportedDeveloperPlatformError = class extends Error {
|
|
438
445
|
constructor(platform) {
|
|
439
|
-
super(`buddy-cli
|
|
446
|
+
super(`buddy-cli V1 \u76EE\u524D\u53EA\u652F\u6301 macOS\uFF0C\u5F53\u524D\u7CFB\u7EDF\u662F ${platform}`);
|
|
440
447
|
this.platform = platform;
|
|
441
448
|
this.name = "UnsupportedDeveloperPlatformError";
|
|
442
449
|
}
|
|
@@ -460,7 +467,7 @@ import { dirname, join } from "node:path";
|
|
|
460
467
|
import { homedir } from "node:os";
|
|
461
468
|
import { createHash as createHash2 } from "node:crypto";
|
|
462
469
|
import { setTimeout as delay } from "node:timers/promises";
|
|
463
|
-
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli
|
|
470
|
+
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli", "updates");
|
|
464
471
|
var globalUpdateLock = (cache, prefix) => join(cache, "locks", createHash2("sha256").update(prefix).digest("hex"));
|
|
465
472
|
async function withUpdateLock(path, signal, action) {
|
|
466
473
|
await mkdir(dirname(path), { recursive: true, mode: 448 });
|
|
@@ -549,23 +556,22 @@ async function globalInstallation(packageRoot, packageName) {
|
|
|
549
556
|
// apps/cli/src/self-update.ts
|
|
550
557
|
var PACKAGE = "@my-life-buddies/cli";
|
|
551
558
|
var REGISTRY = "https://registry.npmjs.org/";
|
|
552
|
-
var MANUAL_UPDATE = `npm install --global
|
|
559
|
+
var MANUAL_UPDATE = `npm install --global ${PACKAGE}@latest --registry=${REGISTRY} --prefer-online`;
|
|
553
560
|
var execute = promisify(execFile);
|
|
554
561
|
var HELP = `\u7528\u6CD5:
|
|
555
|
-
buddy-cli
|
|
556
|
-
buddy-cli
|
|
557
|
-
buddy-cli
|
|
562
|
+
buddy-cli --version [--json]
|
|
563
|
+
buddy-cli update --check [--json]
|
|
564
|
+
buddy-cli update [--json]
|
|
558
565
|
|
|
559
566
|
--version \u67E5\u770B\u5F53\u524D\u8FD0\u884C\u7684 CLI \u7248\u672C\uFF08\u65E0\u9700\u8054\u7F51\uFF09
|
|
560
|
-
--check \u68C0\u67E5\u516C\u5171 npm \u7684
|
|
567
|
+
--check \u68C0\u67E5\u516C\u5171 npm \u7684 latest \u7248\u672C\uFF0C\u4E0D\u5B89\u88C5
|
|
561
568
|
--json \u8F93\u51FA JSON\uFF0C\u4F9B Coding Agent \u6216\u811A\u672C\u8BFB\u53D6
|
|
562
569
|
|
|
563
570
|
\u65E0\u9700\u767B\u5F55\u642D\u642D\u8D26\u53F7\uFF0C\u4E5F\u65E0\u9700\u8FDB\u5165\u642D\u5B50\u5DE5\u7A0B\u3002
|
|
564
571
|
\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
|
|
565
572
|
\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
|
|
566
573
|
--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
|
|
567
|
-
update \u66F4\u65B0\u5F53\u524D CLI \u6240\u5728\u7684 npm \u5B89\u88C5\u76EE\u5F55\uFF08\u542B
|
|
568
|
-
\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
|
|
574
|
+
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
|
|
569
575
|
\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u6216\u5F53\u524D\u7248\u672C\u66F4\u9AD8\u65F6\u4E0D\u5B89\u88C5\u3001\u4E0D\u964D\u7EA7\u3002
|
|
570
576
|
\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
|
|
571
577
|
\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
|
|
@@ -603,10 +609,9 @@ async function latestVersion(options) {
|
|
|
603
609
|
const timeout = AbortSignal.timeout(1e4);
|
|
604
610
|
const signal = options.signal ? AbortSignal.any([options.signal, timeout]) : timeout;
|
|
605
611
|
try {
|
|
606
|
-
const metadata = await npmPackageManifest(PACKAGE, "
|
|
612
|
+
const metadata = await npmPackageManifest(PACKAGE, "latest", { fetch: options.fetch, signal });
|
|
607
613
|
if (metadata?.name !== PACKAGE) throw new Error("npm \u8FD4\u56DE\u7684\u5305\u540D\u4E0D\u5339\u914D");
|
|
608
|
-
parseVersion(metadata.version);
|
|
609
|
-
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");
|
|
614
|
+
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");
|
|
610
615
|
return metadata.version;
|
|
611
616
|
} catch (cause) {
|
|
612
617
|
if (options.signal?.aborted) throw new Error("\u64CD\u4F5C\u5DF2\u53D6\u6D88\u3002");
|
|
@@ -615,20 +620,15 @@ async function latestVersion(options) {
|
|
|
615
620
|
}
|
|
616
621
|
}
|
|
617
622
|
async function installUpdate(version, options) {
|
|
618
|
-
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");
|
|
619
623
|
const runNpm = options.runNpm ?? ((args, settings2) => execute("npm", args, { ...settings2, encoding: "utf8", maxBuffer: 4 * 1024 * 1024 }));
|
|
620
624
|
const settings = { cwd: homedir2(), signal: options.signal, timeout: 1e4 };
|
|
621
625
|
const installation = await globalInstallation(options.packageRoot, PACKAGE);
|
|
622
626
|
if (!installation) {
|
|
623
|
-
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
|
|
627
|
+
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");
|
|
624
628
|
}
|
|
625
629
|
const { root: installedRoot, prefix } = installation;
|
|
626
|
-
const manualUpdate = `npm install --global --prefix '${prefix.replace(/'/gu, "'\\''")}' ${PACKAGE}@dev --registry=${REGISTRY} --prefer-online`;
|
|
627
630
|
await withUpdateLock(globalUpdateLock(options.cacheDirectory ?? defaultUpdateCache(), prefix), options.signal, async () => {
|
|
628
631
|
const current = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
629
|
-
if (current.name !== PACKAGE || !/^\d+\.\d+\.\d+-dev\.\d+$/.test(current.version)) {
|
|
630
|
-
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");
|
|
631
|
-
}
|
|
632
632
|
if (current.name === PACKAGE && current.version === version) return;
|
|
633
633
|
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");
|
|
634
634
|
try {
|
|
@@ -645,13 +645,13 @@ async function installUpdate(version, options) {
|
|
|
645
645
|
"--no-fund"
|
|
646
646
|
], { ...settings, timeout: 18e4 }, runNpm);
|
|
647
647
|
} catch (cause) {
|
|
648
|
-
if (options.signal?.aborted) throw new Error("\u66F4\u65B0\u5DF2\u53D6\u6D88\uFF0C\u8BF7\u8FD0\u884C buddy-cli
|
|
648
|
+
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");
|
|
649
649
|
throw new Error(`${cause instanceof Error ? cause.message : "npm \u5B89\u88C5\u672A\u5B8C\u6210\u3002"}
|
|
650
|
-
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${
|
|
650
|
+
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${MANUAL_UPDATE}`);
|
|
651
651
|
}
|
|
652
652
|
const installed = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
653
653
|
if (installed.name !== PACKAGE || installed.version !== version) {
|
|
654
|
-
throw new Error(`npm \u5DF2\u7ED3\u675F\uFF0C\u4F46\u672A\u786E\u8BA4\u5B89\u88C5\u5230 ${version}\u3002\u8BF7\u8FD0\u884C buddy-cli
|
|
654
|
+
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}`);
|
|
655
655
|
}
|
|
656
656
|
});
|
|
657
657
|
}
|
|
@@ -661,13 +661,13 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
661
661
|
const json = args.includes("--json");
|
|
662
662
|
const fail = (message, exitCode) => {
|
|
663
663
|
if (json) io.write(JSON.stringify({ package: PACKAGE, currentVersion: options.version, error: message }));
|
|
664
|
-
else io.writeError(`buddy-cli
|
|
664
|
+
else io.writeError(`buddy-cli: ${message}`);
|
|
665
665
|
return { exitCode };
|
|
666
666
|
};
|
|
667
667
|
const flags = args.slice(1);
|
|
668
668
|
const allowed = versionOnly ? ["--json", "--help", "-h"] : ["--check", "--json", "--help", "-h"];
|
|
669
669
|
if (flags.some((flag) => !allowed.includes(flag)) || new Set(flags).size !== flags.length) {
|
|
670
|
-
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli
|
|
670
|
+
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli update --help \u67E5\u770B\u7528\u6CD5\u3002", 2);
|
|
671
671
|
}
|
|
672
672
|
if (flags.includes("--help") || flags.includes("-h")) {
|
|
673
673
|
if (json) io.write(JSON.stringify({ help: HELP }));
|
|
@@ -680,8 +680,6 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
680
680
|
io.write(json ? JSON.stringify({ package: PACKAGE, version: options.version }) : options.version);
|
|
681
681
|
return { exitCode: 0 };
|
|
682
682
|
}
|
|
683
|
-
const pin = process.env.BUDDY_CLI_PIN_VERSION;
|
|
684
|
-
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");
|
|
685
683
|
const latest = await latestVersion(options);
|
|
686
684
|
const comparison = compareVersions(latest, options.version);
|
|
687
685
|
const check = flags.includes("--check");
|
|
@@ -701,8 +699,8 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
701
699
|
...updated ? { installedVersion: latest } : {}
|
|
702
700
|
}));
|
|
703
701
|
} else if (updated) io.write(`CLI \u5DF2\u66F4\u65B0\uFF1A${options.version} \u2192 ${latest}\u3002`);
|
|
704
|
-
else if (comparison > 0) io.write(`\u53D1\u73B0\u65B0\u7248\u672C\uFF1A${options.version} \u2192 ${latest}\u3002\u8FD0\u884C buddy-cli
|
|
705
|
-
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm
|
|
702
|
+
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`);
|
|
703
|
+
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm latest ${latest}\uFF0C\u65E0\u9700\u66F4\u65B0\u3002`);
|
|
706
704
|
else io.write(`\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\uFF1A${options.version}\u3002`);
|
|
707
705
|
return { exitCode: 0 };
|
|
708
706
|
} catch (cause) {
|
|
@@ -734,7 +732,7 @@ import { promisify as promisify2 } from "node:util";
|
|
|
734
732
|
var PACKAGE2 = "@my-life-buddies/cli";
|
|
735
733
|
var REGISTRY2 = "https://registry.npmjs.org/";
|
|
736
734
|
var execute2 = promisify2(execFile2);
|
|
737
|
-
var HANDOFF_ENV = "
|
|
735
|
+
var HANDOFF_ENV = "BUDDY_CLI_UPDATE_HANDOFF";
|
|
738
736
|
async function installedVersion(root) {
|
|
739
737
|
try {
|
|
740
738
|
const pkg = JSON.parse(await readFile2(join4(root, "package.json"), "utf8"));
|
|
@@ -827,13 +825,6 @@ async function runAutoUpdate(args, io, options) {
|
|
|
827
825
|
if (args[0] === "help" || args[0] === "update" || args[0] === "--version" || args[0] === "-v" || args.includes("--help") || args.includes("-h")) return void 0;
|
|
828
826
|
try {
|
|
829
827
|
const env = { ...options.env ?? process.env };
|
|
830
|
-
const pin = env.BUDDY_CLI_PIN_VERSION;
|
|
831
|
-
if (pin !== void 0) {
|
|
832
|
-
if (!/^\d+\.\d+\.\d+-dev\.\d+$/.test(pin) || pin !== options.version) {
|
|
833
|
-
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`);
|
|
834
|
-
}
|
|
835
|
-
return void 0;
|
|
836
|
-
}
|
|
837
828
|
const handoff = env[HANDOFF_ENV];
|
|
838
829
|
if (handoff !== void 0) {
|
|
839
830
|
delete env[HANDOFF_ENV];
|
|
@@ -960,7 +951,7 @@ try {
|
|
|
960
951
|
process.exitCode = result.exitCode;
|
|
961
952
|
} catch (cause) {
|
|
962
953
|
const message = cause instanceof Error ? cause.message : String(cause);
|
|
963
|
-
terminal.writeError(`buddy-cli
|
|
954
|
+
terminal.writeError(`buddy-cli: ${message}`);
|
|
964
955
|
process.exitCode = 1;
|
|
965
956
|
} finally {
|
|
966
957
|
unbindTermination();
|