@my-life-buddies/cli 0.24.0 → 0.24.1-dev.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 +118 -73
- package/dist/bin/buddy.js +48 -39
- package/dist/bin/buddy.js.map +2 -2
- package/dist/bin/core.js +508 -522
- package/dist/bin/core.js.map +4 -4
- package/dist/web/app.js +2 -2
- package/package.json +6 -6
- package/resources/agent-template/package-lock.json +5 -4
- package/resources/agent-template/package.json +1 -1
package/dist/bin/buddy.js
CHANGED
|
@@ -68,7 +68,6 @@ function createRuntimeLogForwarder(onLog, secrets) {
|
|
|
68
68
|
// apps/cli/src/platform-host.ts
|
|
69
69
|
import {
|
|
70
70
|
CloudAuthenticator,
|
|
71
|
-
EcsSessionMigrationStore,
|
|
72
71
|
BuddyDevError,
|
|
73
72
|
checkRuntimeUpdate,
|
|
74
73
|
checkProjectGateway,
|
|
@@ -96,8 +95,8 @@ import {
|
|
|
96
95
|
connectPreviewBridge
|
|
97
96
|
} from "./preview.js";
|
|
98
97
|
var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
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>]
|
|
98
|
+
buddy-cli-sit preview [--directory <\u9879\u76EE\u76EE\u5F55>] [--buddy-id <\u642D\u5B50 ID>] [--developer-web <\u540E\u53F0 URL>] [--app-server <App Server URL>] [--no-open]
|
|
99
|
+
buddy-cli-sit preview --local [--directory <\u9879\u76EE\u76EE\u5F55>] [--port <\u672C\u5730\u7AEF\u53E3>]
|
|
101
100
|
|
|
102
101
|
\u8BF4\u660E:
|
|
103
102
|
\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
|
|
@@ -107,15 +106,15 @@ var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
|
107
106
|
--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
|
|
108
107
|
\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
|
|
109
108
|
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
|
|
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 \
|
|
112
|
-
\
|
|
113
|
-
CLI \u7EDF\u4E00\u542F\u52A8\u5E76\u7BA1\u7406\u5DE5\u7A0B\u4E2D\u7684\u5B98\u65B9 Runtime\uFF1B\u6BCF\u6B21\u542F\u52A8\u6216\u91CD\u8F7D\
|
|
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-sit dev stop\u3002\u8BE5\u547D\u4EE4\u4E0D\u91CD\u8FDE\u3001\u4E0D\u91CD\u542F\u3002
|
|
110
|
+
\u672A\u914D\u7F6E\u5730\u5740\u65F6\u8FDE\u63A5 MLB \u6D4B\u8BD5\u73AF\u5883 ${DEFAULT_MLB_TEST_URL}\uFF08HTTPS\uFF09\u3002
|
|
111
|
+
SIT \u5305\u56FA\u5B9A\u8FDE\u63A5 SIT\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
|
|
112
|
+
CLI \u7EDF\u4E00\u542F\u52A8\u5E76\u7BA1\u7406\u5DE5\u7A0B\u4E2D\u7684\u5B98\u65B9 Runtime\uFF1B\u6BCF\u6B21\u542F\u52A8\u6216\u91CD\u8F7D\u68C0\u67E5\u5DE5\u7A0B Runtime \u7684\u51C6\u786E\u7248\u672C\u3001\u5B89\u88C5\u548C\u9501\u6587\u4EF6\u4E0E npm dev \u6700\u65B0\u7248\u672C\u4E00\u81F4\u3002
|
|
114
113
|
\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
|
|
115
|
-
\u8FDE\u63A5\u524D\u81EA\u68C0 .env \u7F51\u5173\uFF1B\
|
|
114
|
+
\u8FDE\u63A5\u524D\u81EA\u68C0 .env \u7F51\u5173\uFF1B\u53D1\u73B0\u5176\u4ED6\u73AF\u5883\u5730\u5740\u65F6\u505C\u6B62\uFF1B\u8BF7\u4F7F\u7528\u5BF9\u5E94 CLI\uFF0C\u8FC1\u79FB\u65F6\u65B0\u5EFA\u8EAB\u4EFD\u4E14\u4E0D\u590D\u5236\u51ED\u636E\u3002
|
|
116
115
|
--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
|
|
117
116
|
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
|
|
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
|
|
117
|
+
SIT \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
|
|
119
118
|
\u6A21\u62DF\u5668\u4F7F\u7528\u5F53\u524D\u5F00\u53D1\u8005\u8D26\u53F7\u8BBF\u95EE <buddyId>-dev \u8C03\u8BD5\u5206\u8EAB\u3002`;
|
|
120
119
|
function valueAfter(args, index, flag) {
|
|
121
120
|
const value = args[index + 1];
|
|
@@ -441,16 +440,10 @@ var BuddyPlatformHost = class {
|
|
|
441
440
|
developerWebUrl,
|
|
442
441
|
openBrowser: this.#openUrl
|
|
443
442
|
}),
|
|
444
|
-
new
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
}),
|
|
449
|
-
new SystemCloudTokenStore({
|
|
450
|
-
account: `developer-session:${createHash("sha256").update("https://47.116.168.81").digest("hex")}`,
|
|
451
|
-
commandRunner: this.#credentialCommandRunner
|
|
452
|
-
})
|
|
453
|
-
)
|
|
443
|
+
new SystemCloudTokenStore({
|
|
444
|
+
account: `developer-session:${createHash("sha256").update(key).digest("hex")}`,
|
|
445
|
+
commandRunner: this.#credentialCommandRunner
|
|
446
|
+
})
|
|
454
447
|
);
|
|
455
448
|
this.#sessions.set(key, session);
|
|
456
449
|
}
|
|
@@ -461,7 +454,7 @@ var BuddyPlatformHost = class {
|
|
|
461
454
|
// apps/cli/src/platform-support.ts
|
|
462
455
|
var UnsupportedDeveloperPlatformError = class extends Error {
|
|
463
456
|
constructor(platform) {
|
|
464
|
-
super(`buddy-cli V1 \u76EE\u524D\u53EA\u652F\u6301 macOS\uFF0C\u5F53\u524D\u7CFB\u7EDF\u662F ${platform}`);
|
|
457
|
+
super(`buddy-cli-sit V1 \u76EE\u524D\u53EA\u652F\u6301 macOS\uFF0C\u5F53\u524D\u7CFB\u7EDF\u662F ${platform}`);
|
|
465
458
|
this.platform = platform;
|
|
466
459
|
this.name = "UnsupportedDeveloperPlatformError";
|
|
467
460
|
}
|
|
@@ -484,7 +477,7 @@ import { dirname, join } from "node:path";
|
|
|
484
477
|
import { homedir } from "node:os";
|
|
485
478
|
import { createHash as createHash2 } from "node:crypto";
|
|
486
479
|
import { setTimeout as delay } from "node:timers/promises";
|
|
487
|
-
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli", "updates");
|
|
480
|
+
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli-sit", "updates");
|
|
488
481
|
var globalUpdateLock = (cache, prefix) => join(cache, "locks", createHash2("sha256").update(prefix).digest("hex"));
|
|
489
482
|
async function withUpdateLock(path, signal, action) {
|
|
490
483
|
await mkdir(dirname(path), { recursive: true, mode: 448 });
|
|
@@ -573,22 +566,23 @@ async function globalInstallation(packageRoot, packageName) {
|
|
|
573
566
|
// apps/cli/src/self-update.ts
|
|
574
567
|
var PACKAGE = "@my-life-buddies/cli";
|
|
575
568
|
var REGISTRY = "https://registry.npmjs.org/";
|
|
576
|
-
var MANUAL_UPDATE = `npm install --global ${PACKAGE}@
|
|
569
|
+
var MANUAL_UPDATE = `npm install --global --prefix "$HOME/.local/share/buddy-cli/sit" ${PACKAGE}@dev --registry=${REGISTRY} --prefer-online`;
|
|
577
570
|
var execute = promisify(execFile);
|
|
578
571
|
var HELP = `\u7528\u6CD5:
|
|
579
|
-
buddy-cli --version [--json]
|
|
580
|
-
buddy-cli update --check [--json]
|
|
581
|
-
buddy-cli update [--json]
|
|
572
|
+
buddy-cli-sit --version [--json]
|
|
573
|
+
buddy-cli-sit update --check [--json]
|
|
574
|
+
buddy-cli-sit update [--json]
|
|
582
575
|
|
|
583
576
|
--version \u67E5\u770B\u5F53\u524D\u8FD0\u884C\u7684 CLI \u7248\u672C\uFF08\u65E0\u9700\u8054\u7F51\uFF09
|
|
584
|
-
--check \u68C0\u67E5\u516C\u5171 npm \u7684
|
|
577
|
+
--check \u68C0\u67E5\u516C\u5171 npm \u7684 dev \u7248\u672C\uFF0C\u4E0D\u5B89\u88C5
|
|
585
578
|
--json \u8F93\u51FA JSON\uFF0C\u4F9B Coding Agent \u6216\u811A\u672C\u8BFB\u53D6
|
|
586
579
|
|
|
587
580
|
\u65E0\u9700\u767B\u5F55\u642D\u642D\u8D26\u53F7\uFF0C\u4E5F\u65E0\u9700\u8FDB\u5165\u642D\u5B50\u5DE5\u7A0B\u3002
|
|
588
581
|
\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
|
|
589
582
|
\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
|
|
590
583
|
--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
|
|
591
|
-
update \u66F4\u65B0\u5F53\u524D CLI \u6240\u5728\u7684 npm \
|
|
584
|
+
update \u66F4\u65B0\u5F53\u524D CLI \u6240\u5728\u7684 npm \u5B89\u88C5\u76EE\u5F55\uFF08\u542B --global --prefix \u81EA\u5B9A\u4E49\u76EE\u5F55\uFF09\uFF0C\u4E0D\u4FEE\u6539\u5176\u4ED6\u5B89\u88C5\u6216\u5DE5\u7A0B Runtime \u4F9D\u8D56\u3002
|
|
585
|
+
\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
|
|
592
586
|
\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u6216\u5F53\u524D\u7248\u672C\u66F4\u9AD8\u65F6\u4E0D\u5B89\u88C5\u3001\u4E0D\u964D\u7EA7\u3002
|
|
593
587
|
\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
|
|
594
588
|
\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
|
|
@@ -626,7 +620,7 @@ async function latestVersion(options) {
|
|
|
626
620
|
const timeout = AbortSignal.timeout(1e4);
|
|
627
621
|
const signal = options.signal ? AbortSignal.any([options.signal, timeout]) : timeout;
|
|
628
622
|
try {
|
|
629
|
-
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/
|
|
623
|
+
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/dev`, {
|
|
630
624
|
signal,
|
|
631
625
|
headers: { Accept: "application/json" },
|
|
632
626
|
redirect: "error"
|
|
@@ -634,7 +628,8 @@ async function latestVersion(options) {
|
|
|
634
628
|
if (!response.ok) throw new Error(`npm \u8FD4\u56DE HTTP ${response.status}`);
|
|
635
629
|
const metadata = await response.json();
|
|
636
630
|
if (metadata?.name !== PACKAGE) throw new Error("npm \u8FD4\u56DE\u7684\u5305\u540D\u4E0D\u5339\u914D");
|
|
637
|
-
|
|
631
|
+
parseVersion(metadata.version);
|
|
632
|
+
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");
|
|
638
633
|
return metadata.version;
|
|
639
634
|
} catch (cause) {
|
|
640
635
|
if (options.signal?.aborted) throw new Error("\u64CD\u4F5C\u5DF2\u53D6\u6D88\u3002");
|
|
@@ -643,15 +638,20 @@ async function latestVersion(options) {
|
|
|
643
638
|
}
|
|
644
639
|
}
|
|
645
640
|
async function installUpdate(version, options) {
|
|
641
|
+
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");
|
|
646
642
|
const runNpm = options.runNpm ?? ((args, settings2) => execute("npm", args, { ...settings2, encoding: "utf8", maxBuffer: 4 * 1024 * 1024 }));
|
|
647
643
|
const settings = { cwd: homedir2(), signal: options.signal, timeout: 1e4 };
|
|
648
644
|
const installation = await globalInstallation(options.packageRoot, PACKAGE);
|
|
649
645
|
if (!installation) {
|
|
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");
|
|
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 SIT \u72EC\u7ACB\u7F13\u5B58\u8FD0\u884C\u65B0\u7248\uFF1B\u5355\u72EC\u66F4\u65B0\u8BF7\u6CBF\u7528\u539F\u6765\u7684\u5B89\u88C5\u65B9\u5F0F\u3002");
|
|
651
647
|
}
|
|
652
648
|
const { root: installedRoot, prefix } = installation;
|
|
649
|
+
const manualUpdate = `npm install --global --prefix '${prefix.replace(/'/gu, "'\\''")}' ${PACKAGE}@dev --registry=${REGISTRY} --prefer-online`;
|
|
653
650
|
await withUpdateLock(globalUpdateLock(options.cacheDirectory ?? defaultUpdateCache(), prefix), options.signal, async () => {
|
|
654
651
|
const current = JSON.parse(await readFile(join3(installedRoot, "package.json"), "utf8"));
|
|
652
|
+
if (current.name !== PACKAGE || !/^\d+\.\d+\.\d+-dev\.\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 \u548C dev \u5B89\u88C5\u5230\u4E0D\u540C\u76EE\u5F55\uFF0C\u518D\u91CD\u65B0\u8FD0\u884C buddy-cli-sit\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 --version \u68C0\u67E5\u5B89\u88C5\u72B6\u6001\u3002");
|
|
671
|
+
if (options.signal?.aborted) throw new Error("\u66F4\u65B0\u5DF2\u53D6\u6D88\uFF0C\u8BF7\u8FD0\u884C buddy-cli-sit --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${manualUpdate}`);
|
|
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 --version \u68C0\u67E5\uFF0C\u5FC5\u8981\u65F6\u91CD\u8BD5\uFF1A${
|
|
677
|
+
throw new Error(`npm \u5DF2\u7ED3\u675F\uFF0C\u4F46\u672A\u786E\u8BA4\u5B89\u88C5\u5230 ${version}\u3002\u8BF7\u8FD0\u884C buddy-cli-sit --version \u68C0\u67E5\uFF0C\u5FC5\u8981\u65F6\u91CD\u8BD5\uFF1A${manualUpdate}`);
|
|
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: ${message}`);
|
|
687
|
+
else io.writeError(`buddy-cli-sit: ${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 update --help \u67E5\u770B\u7528\u6CD5\u3002", 2);
|
|
693
|
+
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli-sit 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,6 +703,8 @@ 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");
|
|
706
708
|
const latest = await latestVersion(options);
|
|
707
709
|
const comparison = compareVersions(latest, options.version);
|
|
708
710
|
const check = flags.includes("--check");
|
|
@@ -722,8 +724,8 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
722
724
|
...updated ? { installedVersion: latest } : {}
|
|
723
725
|
}));
|
|
724
726
|
} else if (updated) io.write(`CLI \u5DF2\u66F4\u65B0\uFF1A${options.version} \u2192 ${latest}\u3002`);
|
|
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
|
|
727
|
+
else if (comparison > 0) io.write(`\u53D1\u73B0\u65B0\u7248\u672C\uFF1A${options.version} \u2192 ${latest}\u3002\u8FD0\u884C buddy-cli-sit update \u66F4\u65B0\u3002`);
|
|
728
|
+
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm dev ${latest}\uFF0C\u65E0\u9700\u66F4\u65B0\u3002`);
|
|
727
729
|
else io.write(`\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\uFF1A${options.version}\u3002`);
|
|
728
730
|
return { exitCode: 0 };
|
|
729
731
|
} catch (cause) {
|
|
@@ -755,7 +757,7 @@ import { promisify as promisify2 } from "node:util";
|
|
|
755
757
|
var PACKAGE2 = "@my-life-buddies/cli";
|
|
756
758
|
var REGISTRY2 = "https://registry.npmjs.org/";
|
|
757
759
|
var execute2 = promisify2(execFile2);
|
|
758
|
-
var HANDOFF_ENV = "
|
|
760
|
+
var HANDOFF_ENV = "BUDDY_CLI_SIT_UPDATE_HANDOFF";
|
|
759
761
|
async function installedVersion(root) {
|
|
760
762
|
try {
|
|
761
763
|
const pkg = JSON.parse(await readFile2(join4(root, "package.json"), "utf8"));
|
|
@@ -848,6 +850,13 @@ async function runAutoUpdate(args, io, options) {
|
|
|
848
850
|
if (args[0] === "help" || args[0] === "update" || args[0] === "--version" || args[0] === "-v" || args.includes("--help") || args.includes("-h")) return void 0;
|
|
849
851
|
try {
|
|
850
852
|
const env = { ...options.env ?? process.env };
|
|
853
|
+
const pin = env.BUDDY_CLI_PIN_VERSION;
|
|
854
|
+
if (pin !== void 0) {
|
|
855
|
+
if (!/^\d+\.\d+\.\d+-dev\.\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
|
+
}
|
|
851
860
|
const handoff = env[HANDOFF_ENV];
|
|
852
861
|
if (handoff !== void 0) {
|
|
853
862
|
delete env[HANDOFF_ENV];
|
|
@@ -981,7 +990,7 @@ try {
|
|
|
981
990
|
process.exitCode = result.exitCode;
|
|
982
991
|
} catch (cause) {
|
|
983
992
|
const message = cause instanceof Error ? cause.message : String(cause);
|
|
984
|
-
terminal.writeError(`buddy-cli: ${message}`);
|
|
993
|
+
terminal.writeError(`buddy-cli-sit: ${message}`);
|
|
985
994
|
process.exitCode = 1;
|
|
986
995
|
} finally {
|
|
987
996
|
unbindTermination();
|