@my-life-buddies/cli 0.28.0-dev.2 → 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 +83 -112
- package/dist/bin/buddy.js +38 -56
- package/dist/bin/buddy.js.map +3 -3
- package/dist/bin/core.js +422 -420
- package/dist/bin/core.js.map +4 -4
- package/package.json +6 -6
- package/resources/brand/README.md +0 -11
- package/resources/brand/login-result.css +0 -25
- package/resources/brand/logo.png +0 -0
- package/resources/brand/tokens.css +0 -100
package/dist/bin/buddy.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
// apps/cli/src/bin/buddy.ts
|
|
4
|
-
import { execFile as execFile3 } from "node:child_process";
|
|
5
|
-
import { promisify as promisify3 } from "node:util";
|
|
6
4
|
import { stdin, stderr, stdout } from "node:process";
|
|
7
5
|
import { createRequire } from "node:module";
|
|
8
6
|
import { dirname as dirname3 } from "node:path";
|
|
@@ -68,6 +66,7 @@ function createRuntimeLogForwarder(onLog, secrets) {
|
|
|
68
66
|
// apps/cli/src/platform-host.ts
|
|
69
67
|
import {
|
|
70
68
|
CloudAuthenticator,
|
|
69
|
+
EcsSessionMigrationStore,
|
|
71
70
|
BuddyDevError,
|
|
72
71
|
checkRuntimeUpdate,
|
|
73
72
|
checkProjectGateway,
|
|
@@ -95,7 +94,7 @@ import {
|
|
|
95
94
|
connectPreviewBridge
|
|
96
95
|
} from "./preview.js";
|
|
97
96
|
var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
98
|
-
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]
|
|
99
98
|
|
|
100
99
|
\u8BF4\u660E:
|
|
101
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
|
|
@@ -106,12 +105,12 @@ var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
|
106
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
|
|
107
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
|
|
108
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
|
|
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
|
-
\u672A\u914D\u7F6E\u5730\u5740\u65F6\u8FDE\u63A5 MLB \
|
|
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\
|
|
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
|
|
113
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
|
|
114
|
-
\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
|
|
115
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
|
|
116
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
|
|
117
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
|
|
@@ -148,7 +147,7 @@ function parsePreviewArguments(args) {
|
|
|
148
147
|
help = true;
|
|
149
148
|
continue;
|
|
150
149
|
}
|
|
151
|
-
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`);
|
|
152
151
|
if (flag === "--no-open") {
|
|
153
152
|
if (noOpen) throw new Error("--no-open \u4E0D\u80FD\u91CD\u590D");
|
|
154
153
|
noOpen = true;
|
|
@@ -424,10 +423,16 @@ var BuddyPlatformHost = class {
|
|
|
424
423
|
developerWebUrl,
|
|
425
424
|
openBrowser: this.#openUrl
|
|
426
425
|
}),
|
|
427
|
-
new
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
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
|
+
)
|
|
431
436
|
);
|
|
432
437
|
this.#sessions.set(key, session);
|
|
433
438
|
}
|
|
@@ -438,7 +443,7 @@ var BuddyPlatformHost = class {
|
|
|
438
443
|
// apps/cli/src/platform-support.ts
|
|
439
444
|
var UnsupportedDeveloperPlatformError = class extends Error {
|
|
440
445
|
constructor(platform) {
|
|
441
|
-
super(`buddy-cli
|
|
446
|
+
super(`buddy-cli V1 \u76EE\u524D\u53EA\u652F\u6301 macOS\uFF0C\u5F53\u524D\u7CFB\u7EDF\u662F ${platform}`);
|
|
442
447
|
this.platform = platform;
|
|
443
448
|
this.name = "UnsupportedDeveloperPlatformError";
|
|
444
449
|
}
|
|
@@ -462,7 +467,7 @@ import { dirname, join } from "node:path";
|
|
|
462
467
|
import { homedir } from "node:os";
|
|
463
468
|
import { createHash as createHash2 } from "node:crypto";
|
|
464
469
|
import { setTimeout as delay } from "node:timers/promises";
|
|
465
|
-
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli
|
|
470
|
+
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli", "updates");
|
|
466
471
|
var globalUpdateLock = (cache, prefix) => join(cache, "locks", createHash2("sha256").update(prefix).digest("hex"));
|
|
467
472
|
async function withUpdateLock(path, signal, action) {
|
|
468
473
|
await mkdir(dirname(path), { recursive: true, mode: 448 });
|
|
@@ -551,23 +556,22 @@ async function globalInstallation(packageRoot, packageName) {
|
|
|
551
556
|
// apps/cli/src/self-update.ts
|
|
552
557
|
var PACKAGE = "@my-life-buddies/cli";
|
|
553
558
|
var REGISTRY = "https://registry.npmjs.org/";
|
|
554
|
-
var MANUAL_UPDATE = `npm install --global
|
|
559
|
+
var MANUAL_UPDATE = `npm install --global ${PACKAGE}@latest --registry=${REGISTRY} --prefer-online`;
|
|
555
560
|
var execute = promisify(execFile);
|
|
556
561
|
var HELP = `\u7528\u6CD5:
|
|
557
|
-
buddy-cli
|
|
558
|
-
buddy-cli
|
|
559
|
-
buddy-cli
|
|
562
|
+
buddy-cli --version [--json]
|
|
563
|
+
buddy-cli update --check [--json]
|
|
564
|
+
buddy-cli update [--json]
|
|
560
565
|
|
|
561
566
|
--version \u67E5\u770B\u5F53\u524D\u8FD0\u884C\u7684 CLI \u7248\u672C\uFF08\u65E0\u9700\u8054\u7F51\uFF09
|
|
562
|
-
--check \u68C0\u67E5\u516C\u5171 npm \u7684
|
|
567
|
+
--check \u68C0\u67E5\u516C\u5171 npm \u7684 latest \u7248\u672C\uFF0C\u4E0D\u5B89\u88C5
|
|
563
568
|
--json \u8F93\u51FA JSON\uFF0C\u4F9B Coding Agent \u6216\u811A\u672C\u8BFB\u53D6
|
|
564
569
|
|
|
565
570
|
\u65E0\u9700\u767B\u5F55\u642D\u642D\u8D26\u53F7\uFF0C\u4E5F\u65E0\u9700\u8FDB\u5165\u642D\u5B50\u5DE5\u7A0B\u3002
|
|
566
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
|
|
567
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
|
|
568
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
|
|
569
|
-
update \u66F4\u65B0\u5F53\u524D CLI \u6240\u5728\u7684 npm \u5B89\u88C5\u76EE\u5F55\uFF08\u542B
|
|
570
|
-
\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
|
|
571
575
|
\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u6216\u5F53\u524D\u7248\u672C\u66F4\u9AD8\u65F6\u4E0D\u5B89\u88C5\u3001\u4E0D\u964D\u7EA7\u3002
|
|
572
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
|
|
573
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
|
|
@@ -605,10 +609,9 @@ async function latestVersion(options) {
|
|
|
605
609
|
const timeout = AbortSignal.timeout(1e4);
|
|
606
610
|
const signal = options.signal ? AbortSignal.any([options.signal, timeout]) : timeout;
|
|
607
611
|
try {
|
|
608
|
-
const metadata = await npmPackageManifest(PACKAGE, "
|
|
612
|
+
const metadata = await npmPackageManifest(PACKAGE, "latest", { fetch: options.fetch, signal });
|
|
609
613
|
if (metadata?.name !== PACKAGE) throw new Error("npm \u8FD4\u56DE\u7684\u5305\u540D\u4E0D\u5339\u914D");
|
|
610
|
-
parseVersion(metadata.version);
|
|
611
|
-
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");
|
|
612
615
|
return metadata.version;
|
|
613
616
|
} catch (cause) {
|
|
614
617
|
if (options.signal?.aborted) throw new Error("\u64CD\u4F5C\u5DF2\u53D6\u6D88\u3002");
|
|
@@ -617,20 +620,15 @@ async function latestVersion(options) {
|
|
|
617
620
|
}
|
|
618
621
|
}
|
|
619
622
|
async function installUpdate(version, options) {
|
|
620
|
-
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");
|
|
621
623
|
const runNpm = options.runNpm ?? ((args, settings2) => execute("npm", args, { ...settings2, encoding: "utf8", maxBuffer: 4 * 1024 * 1024 }));
|
|
622
624
|
const settings = { cwd: homedir2(), signal: options.signal, timeout: 1e4 };
|
|
623
625
|
const installation = await globalInstallation(options.packageRoot, PACKAGE);
|
|
624
626
|
if (!installation) {
|
|
625
|
-
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");
|
|
626
628
|
}
|
|
627
629
|
const { root: installedRoot, prefix } = installation;
|
|
628
|
-
const manualUpdate = `npm install --global --prefix '${prefix.replace(/'/gu, "'\\''")}' ${PACKAGE}@dev --registry=${REGISTRY} --prefer-online`;
|
|
629
630
|
await withUpdateLock(globalUpdateLock(options.cacheDirectory ?? defaultUpdateCache(), prefix), options.signal, async () => {
|
|
630
631
|
const current = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
631
|
-
if (current.name !== PACKAGE || !/^\d+\.\d+\.\d+-dev\.\d+$/.test(current.version)) {
|
|
632
|
-
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");
|
|
633
|
-
}
|
|
634
632
|
if (current.name === PACKAGE && current.version === version) return;
|
|
635
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");
|
|
636
634
|
try {
|
|
@@ -647,13 +645,13 @@ async function installUpdate(version, options) {
|
|
|
647
645
|
"--no-fund"
|
|
648
646
|
], { ...settings, timeout: 18e4 }, runNpm);
|
|
649
647
|
} catch (cause) {
|
|
650
|
-
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");
|
|
651
649
|
throw new Error(`${cause instanceof Error ? cause.message : "npm \u5B89\u88C5\u672A\u5B8C\u6210\u3002"}
|
|
652
|
-
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${
|
|
650
|
+
\u4E5F\u53EF\u624B\u52A8\u5B89\u88C5\uFF1A${MANUAL_UPDATE}`);
|
|
653
651
|
}
|
|
654
652
|
const installed = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
655
653
|
if (installed.name !== PACKAGE || installed.version !== version) {
|
|
656
|
-
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}`);
|
|
657
655
|
}
|
|
658
656
|
});
|
|
659
657
|
}
|
|
@@ -663,13 +661,13 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
663
661
|
const json = args.includes("--json");
|
|
664
662
|
const fail = (message, exitCode) => {
|
|
665
663
|
if (json) io.write(JSON.stringify({ package: PACKAGE, currentVersion: options.version, error: message }));
|
|
666
|
-
else io.writeError(`buddy-cli
|
|
664
|
+
else io.writeError(`buddy-cli: ${message}`);
|
|
667
665
|
return { exitCode };
|
|
668
666
|
};
|
|
669
667
|
const flags = args.slice(1);
|
|
670
668
|
const allowed = versionOnly ? ["--json", "--help", "-h"] : ["--check", "--json", "--help", "-h"];
|
|
671
669
|
if (flags.some((flag) => !allowed.includes(flag)) || new Set(flags).size !== flags.length) {
|
|
672
|
-
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);
|
|
673
671
|
}
|
|
674
672
|
if (flags.includes("--help") || flags.includes("-h")) {
|
|
675
673
|
if (json) io.write(JSON.stringify({ help: HELP }));
|
|
@@ -682,8 +680,6 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
682
680
|
io.write(json ? JSON.stringify({ package: PACKAGE, version: options.version }) : options.version);
|
|
683
681
|
return { exitCode: 0 };
|
|
684
682
|
}
|
|
685
|
-
const pin = process.env.BUDDY_CLI_PIN_VERSION;
|
|
686
|
-
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");
|
|
687
683
|
const latest = await latestVersion(options);
|
|
688
684
|
const comparison = compareVersions(latest, options.version);
|
|
689
685
|
const check = flags.includes("--check");
|
|
@@ -703,8 +699,8 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
703
699
|
...updated ? { installedVersion: latest } : {}
|
|
704
700
|
}));
|
|
705
701
|
} else if (updated) io.write(`CLI \u5DF2\u66F4\u65B0\uFF1A${options.version} \u2192 ${latest}\u3002`);
|
|
706
|
-
else if (comparison > 0) io.write(`\u53D1\u73B0\u65B0\u7248\u672C\uFF1A${options.version} \u2192 ${latest}\u3002\u8FD0\u884C buddy-cli
|
|
707
|
-
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`);
|
|
708
704
|
else io.write(`\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\uFF1A${options.version}\u3002`);
|
|
709
705
|
return { exitCode: 0 };
|
|
710
706
|
} catch (cause) {
|
|
@@ -736,7 +732,7 @@ import { promisify as promisify2 } from "node:util";
|
|
|
736
732
|
var PACKAGE2 = "@my-life-buddies/cli";
|
|
737
733
|
var REGISTRY2 = "https://registry.npmjs.org/";
|
|
738
734
|
var execute2 = promisify2(execFile2);
|
|
739
|
-
var HANDOFF_ENV = "
|
|
735
|
+
var HANDOFF_ENV = "BUDDY_CLI_UPDATE_HANDOFF";
|
|
740
736
|
async function installedVersion(root) {
|
|
741
737
|
try {
|
|
742
738
|
const pkg = JSON.parse(await readFile2(join4(root, "package.json"), "utf8"));
|
|
@@ -829,13 +825,6 @@ async function runAutoUpdate(args, io, options) {
|
|
|
829
825
|
if (args[0] === "help" || args[0] === "update" || args[0] === "--version" || args[0] === "-v" || args.includes("--help") || args.includes("-h")) return void 0;
|
|
830
826
|
try {
|
|
831
827
|
const env = { ...options.env ?? process.env };
|
|
832
|
-
const pin = env.BUDDY_CLI_PIN_VERSION;
|
|
833
|
-
if (pin !== void 0) {
|
|
834
|
-
if (!/^\d+\.\d+\.\d+-dev\.\d+$/.test(pin) || pin !== options.version) {
|
|
835
|
-
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`);
|
|
836
|
-
}
|
|
837
|
-
return void 0;
|
|
838
|
-
}
|
|
839
828
|
const handoff = env[HANDOFF_ENV];
|
|
840
829
|
if (handoff !== void 0) {
|
|
841
830
|
delete env[HANDOFF_ENV];
|
|
@@ -874,13 +863,6 @@ var TerminalIO = class {
|
|
|
874
863
|
stderr.write(`${message}
|
|
875
864
|
`);
|
|
876
865
|
}
|
|
877
|
-
async openMetaPreview(path) {
|
|
878
|
-
try {
|
|
879
|
-
await promisify3(execFile3)("open", [path]);
|
|
880
|
-
} catch {
|
|
881
|
-
this.write(`\u8BF7\u6253\u5F00\u672C\u5730\u5934\u50CF\u9884\u89C8\u540E\u518D\u786E\u8BA4\uFF1A${path}`);
|
|
882
|
-
}
|
|
883
|
-
}
|
|
884
866
|
async select(question, choices, options = {}) {
|
|
885
867
|
while (true) {
|
|
886
868
|
this.write(`
|
|
@@ -969,7 +951,7 @@ try {
|
|
|
969
951
|
process.exitCode = result.exitCode;
|
|
970
952
|
} catch (cause) {
|
|
971
953
|
const message = cause instanceof Error ? cause.message : String(cause);
|
|
972
|
-
terminal.writeError(`buddy-cli
|
|
954
|
+
terminal.writeError(`buddy-cli: ${message}`);
|
|
973
955
|
process.exitCode = 1;
|
|
974
956
|
} finally {
|
|
975
957
|
unbindTermination();
|