@my-life-buddies/cli 0.26.1 → 0.27.1-dev.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 +118 -87
- package/dist/bin/buddy.js +47 -38
- package/dist/bin/buddy.js.map +2 -2
- package/dist/bin/core.js +372 -408
- 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,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
|
|
@@ -109,12 +108,12 @@ var PREVIEW_COMMAND_HELP = `\u7528\u6CD5:
|
|
|
109
108
|
--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
|
|
110
109
|
\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
|
|
111
110
|
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
|
|
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 \
|
|
114
|
-
\
|
|
115
|
-
CLI \u7EDF\u4E00\u542F\u52A8\u5E76\u7BA1\u7406\u5DE5\u7A0B\u4E2D\u7684\u5B98\u65B9 Runtime\uFF1B\u6BCF\u6B21\u542F\u52A8\u6216\u91CD\u8F7D\
|
|
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-sit dev stop\u3002\u8BE5\u547D\u4EE4\u4E0D\u91CD\u8FDE\u3001\u4E0D\u91CD\u542F\u3002
|
|
112
|
+
\u672A\u914D\u7F6E\u5730\u5740\u65F6\u8FDE\u63A5 MLB \u6D4B\u8BD5\u73AF\u5883 ${DEFAULT_MLB_TEST_URL}\uFF08HTTPS\uFF09\u3002
|
|
113
|
+
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
|
|
114
|
+
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
|
|
116
115
|
\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
|
|
117
|
-
\u8FDE\u63A5\u524D\u81EA\u68C0 .env \u7F51\u5173\uFF1B\
|
|
116
|
+
\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
|
|
118
117
|
--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
|
|
119
118
|
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
|
|
120
119
|
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
|
|
@@ -446,16 +445,10 @@ var BuddyPlatformHost = class {
|
|
|
446
445
|
developerWebUrl,
|
|
447
446
|
openBrowser: this.#openUrl
|
|
448
447
|
}),
|
|
449
|
-
new
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
}),
|
|
454
|
-
new SystemCloudTokenStore({
|
|
455
|
-
account: `developer-session:${createHash("sha256").update("https://47.116.168.81").digest("hex")}`,
|
|
456
|
-
commandRunner: this.#credentialCommandRunner
|
|
457
|
-
})
|
|
458
|
-
)
|
|
448
|
+
new SystemCloudTokenStore({
|
|
449
|
+
account: `developer-session:${createHash("sha256").update(key).digest("hex")}`,
|
|
450
|
+
commandRunner: this.#credentialCommandRunner
|
|
451
|
+
})
|
|
459
452
|
);
|
|
460
453
|
this.#sessions.set(key, session);
|
|
461
454
|
}
|
|
@@ -466,7 +459,7 @@ var BuddyPlatformHost = class {
|
|
|
466
459
|
// apps/cli/src/platform-support.ts
|
|
467
460
|
var UnsupportedDeveloperPlatformError = class extends Error {
|
|
468
461
|
constructor(platform) {
|
|
469
|
-
super(`buddy-cli V1 \u76EE\u524D\u53EA\u652F\u6301 macOS\uFF0C\u5F53\u524D\u7CFB\u7EDF\u662F ${platform}`);
|
|
462
|
+
super(`buddy-cli-sit V1 \u76EE\u524D\u53EA\u652F\u6301 macOS\uFF0C\u5F53\u524D\u7CFB\u7EDF\u662F ${platform}`);
|
|
470
463
|
this.platform = platform;
|
|
471
464
|
this.name = "UnsupportedDeveloperPlatformError";
|
|
472
465
|
}
|
|
@@ -489,7 +482,7 @@ import { dirname, join } from "node:path";
|
|
|
489
482
|
import { homedir } from "node:os";
|
|
490
483
|
import { createHash as createHash2 } from "node:crypto";
|
|
491
484
|
import { setTimeout as delay } from "node:timers/promises";
|
|
492
|
-
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli", "updates");
|
|
485
|
+
var defaultUpdateCache = () => join(homedir(), ".cache", "buddy-cli-sit", "updates");
|
|
493
486
|
var globalUpdateLock = (cache, prefix) => join(cache, "locks", createHash2("sha256").update(prefix).digest("hex"));
|
|
494
487
|
async function withUpdateLock(path, signal, action) {
|
|
495
488
|
await mkdir(dirname(path), { recursive: true, mode: 448 });
|
|
@@ -578,22 +571,23 @@ async function globalInstallation(packageRoot, packageName) {
|
|
|
578
571
|
// apps/cli/src/self-update.ts
|
|
579
572
|
var PACKAGE = "@my-life-buddies/cli";
|
|
580
573
|
var REGISTRY = "https://registry.npmjs.org/";
|
|
581
|
-
var MANUAL_UPDATE = `npm install --global ${PACKAGE}@
|
|
574
|
+
var MANUAL_UPDATE = `npm install --global --prefix "$HOME/.local/share/buddy-cli/sit" ${PACKAGE}@dev --registry=${REGISTRY} --prefer-online`;
|
|
582
575
|
var execute = promisify(execFile);
|
|
583
576
|
var HELP = `\u7528\u6CD5:
|
|
584
|
-
buddy-cli --version [--json]
|
|
585
|
-
buddy-cli update --check [--json]
|
|
586
|
-
buddy-cli update [--json]
|
|
577
|
+
buddy-cli-sit --version [--json]
|
|
578
|
+
buddy-cli-sit update --check [--json]
|
|
579
|
+
buddy-cli-sit update [--json]
|
|
587
580
|
|
|
588
581
|
--version \u67E5\u770B\u5F53\u524D\u8FD0\u884C\u7684 CLI \u7248\u672C\uFF08\u65E0\u9700\u8054\u7F51\uFF09
|
|
589
|
-
--check \u68C0\u67E5\u516C\u5171 npm \u7684
|
|
582
|
+
--check \u68C0\u67E5\u516C\u5171 npm \u7684 dev \u7248\u672C\uFF0C\u4E0D\u5B89\u88C5
|
|
590
583
|
--json \u8F93\u51FA JSON\uFF0C\u4F9B Coding Agent \u6216\u811A\u672C\u8BFB\u53D6
|
|
591
584
|
|
|
592
585
|
\u65E0\u9700\u767B\u5F55\u642D\u642D\u8D26\u53F7\uFF0C\u4E5F\u65E0\u9700\u8FDB\u5165\u642D\u5B50\u5DE5\u7A0B\u3002
|
|
593
586
|
\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
|
|
594
587
|
\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
|
|
595
588
|
--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
|
|
596
|
-
update \u66F4\u65B0\u5F53\u524D CLI \u6240\u5728\u7684 npm \
|
|
589
|
+
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
|
|
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
|
|
597
591
|
\u5DF2\u7ECF\u662F\u6700\u65B0\u7248\u6216\u5F53\u524D\u7248\u672C\u66F4\u9AD8\u65F6\u4E0D\u5B89\u88C5\u3001\u4E0D\u964D\u7EA7\u3002
|
|
598
592
|
\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
|
|
599
593
|
\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
|
|
@@ -631,7 +625,7 @@ async function latestVersion(options) {
|
|
|
631
625
|
const timeout = AbortSignal.timeout(1e4);
|
|
632
626
|
const signal = options.signal ? AbortSignal.any([options.signal, timeout]) : timeout;
|
|
633
627
|
try {
|
|
634
|
-
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/
|
|
628
|
+
const response = await (options.fetch ?? globalThis.fetch)(`${REGISTRY}${encodeURIComponent(PACKAGE)}/dev`, {
|
|
635
629
|
signal,
|
|
636
630
|
headers: { Accept: "application/json" },
|
|
637
631
|
redirect: "error"
|
|
@@ -639,7 +633,8 @@ async function latestVersion(options) {
|
|
|
639
633
|
if (!response.ok) throw new Error(`npm \u8FD4\u56DE HTTP ${response.status}`);
|
|
640
634
|
const metadata = await response.json();
|
|
641
635
|
if (metadata?.name !== PACKAGE) throw new Error("npm \u8FD4\u56DE\u7684\u5305\u540D\u4E0D\u5339\u914D");
|
|
642
|
-
|
|
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");
|
|
643
638
|
return metadata.version;
|
|
644
639
|
} catch (cause) {
|
|
645
640
|
if (options.signal?.aborted) throw new Error("\u64CD\u4F5C\u5DF2\u53D6\u6D88\u3002");
|
|
@@ -648,15 +643,20 @@ async function latestVersion(options) {
|
|
|
648
643
|
}
|
|
649
644
|
}
|
|
650
645
|
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");
|
|
651
647
|
const runNpm = options.runNpm ?? ((args, settings2) => execute("npm", args, { ...settings2, encoding: "utf8", maxBuffer: 4 * 1024 * 1024 }));
|
|
652
648
|
const settings = { cwd: homedir2(), signal: options.signal, timeout: 1e4 };
|
|
653
649
|
const installation = await globalInstallation(options.packageRoot, PACKAGE);
|
|
654
650
|
if (!installation) {
|
|
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");
|
|
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 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");
|
|
656
652
|
}
|
|
657
653
|
const { root: installedRoot, prefix } = installation;
|
|
654
|
+
const manualUpdate = `npm install --global --prefix '${prefix.replace(/'/gu, "'\\''")}' ${PACKAGE}@dev --registry=${REGISTRY} --prefer-online`;
|
|
658
655
|
await withUpdateLock(globalUpdateLock(options.cacheDirectory ?? defaultUpdateCache(), prefix), options.signal, async () => {
|
|
659
656
|
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 --version \u68C0\u67E5\u5B89\u88C5\u72B6\u6001\u3002");
|
|
676
|
+
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");
|
|
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${manualUpdate}`);
|
|
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 --version \u68C0\u67E5\uFF0C\u5FC5\u8981\u65F6\u91CD\u8BD5\uFF1A${
|
|
682
|
+
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}`);
|
|
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: ${message}`);
|
|
692
|
+
else io.writeError(`buddy-cli-sit: ${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 update --help \u67E5\u770B\u7528\u6CD5\u3002", 2);
|
|
698
|
+
return fail("\u53C2\u6570\u65E0\u6548\uFF0C\u8BF7\u8FD0\u884C buddy-cli-sit 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,6 +708,8 @@ 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");
|
|
711
713
|
const latest = await latestVersion(options);
|
|
712
714
|
const comparison = compareVersions(latest, options.version);
|
|
713
715
|
const check = flags.includes("--check");
|
|
@@ -727,8 +729,8 @@ async function runSelfUpdateCommand(args, io, options) {
|
|
|
727
729
|
...updated ? { installedVersion: latest } : {}
|
|
728
730
|
}));
|
|
729
731
|
} 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 update \u66F4\u65B0\u3002`);
|
|
731
|
-
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm
|
|
732
|
+
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`);
|
|
733
|
+
else if (comparison < 0) io.write(`\u5F53\u524D\u7248\u672C ${options.version} \u9AD8\u4E8E npm dev ${latest}\uFF0C\u65E0\u9700\u66F4\u65B0\u3002`);
|
|
732
734
|
else io.write(`\u5F53\u524D\u5DF2\u662F\u6700\u65B0\u7248\uFF1A${options.version}\u3002`);
|
|
733
735
|
return { exitCode: 0 };
|
|
734
736
|
} catch (cause) {
|
|
@@ -760,7 +762,7 @@ import { promisify as promisify2 } from "node:util";
|
|
|
760
762
|
var PACKAGE2 = "@my-life-buddies/cli";
|
|
761
763
|
var REGISTRY2 = "https://registry.npmjs.org/";
|
|
762
764
|
var execute2 = promisify2(execFile2);
|
|
763
|
-
var HANDOFF_ENV = "
|
|
765
|
+
var HANDOFF_ENV = "BUDDY_CLI_SIT_UPDATE_HANDOFF";
|
|
764
766
|
async function installedVersion(root) {
|
|
765
767
|
try {
|
|
766
768
|
const pkg = JSON.parse(await readFile2(join4(root, "package.json"), "utf8"));
|
|
@@ -853,6 +855,13 @@ async function runAutoUpdate(args, io, options) {
|
|
|
853
855
|
if (args[0] === "help" || args[0] === "update" || args[0] === "--version" || args[0] === "-v" || args.includes("--help") || args.includes("-h")) return void 0;
|
|
854
856
|
try {
|
|
855
857
|
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
|
+
}
|
|
856
865
|
const handoff = env[HANDOFF_ENV];
|
|
857
866
|
if (handoff !== void 0) {
|
|
858
867
|
delete env[HANDOFF_ENV];
|
|
@@ -986,7 +995,7 @@ try {
|
|
|
986
995
|
process.exitCode = result.exitCode;
|
|
987
996
|
} catch (cause) {
|
|
988
997
|
const message = cause instanceof Error ? cause.message : String(cause);
|
|
989
|
-
terminal.writeError(`buddy-cli: ${message}`);
|
|
998
|
+
terminal.writeError(`buddy-cli-sit: ${message}`);
|
|
990
999
|
process.exitCode = 1;
|
|
991
1000
|
} finally {
|
|
992
1001
|
unbindTermination();
|