@my-life-buddies/cli 0.26.2 → 0.26.3
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 +5 -17
- package/dist/bin/core.js +28 -147
- package/dist/bin/core.js.map +3 -3
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -502,27 +502,15 @@ buddy-cli products submit --resume <submissionId>
|
|
|
502
502
|
|
|
503
503
|
提交结果包含准确的审核快照 ID。只有曾上架商品(包括已下架商品)才可独立选择已有版本提交修改;当前线上代码支持本次修改时,可以选择当前已发布版本,之后单独发布修改。首次商品仅可通过此命令恢复原上传的商品提交失败,仍须与关联搭子版本一起发布。
|
|
504
504
|
|
|
505
|
-
###
|
|
505
|
+
### 在后台确认发布
|
|
506
506
|
|
|
507
|
-
|
|
508
|
-
buddy-cli release --from-push <pushId>
|
|
509
|
-
buddy-cli release --from-submission <submissionId>
|
|
510
|
-
buddy-cli release --from-submission <submissionId> --products-only
|
|
511
|
-
buddy-cli release --version <版本> --code-only
|
|
512
|
-
```
|
|
513
|
-
|
|
514
|
-
前两种方式使用原回执中的版本与获批快照。`--products-only` 仅用于曾上架商品的修改,要求目标仍为当前已发布搭子版本;首次商品不能使用此选项,必须随关联搭子版本一起发布。已下架商品发布修改后仍保持下架。只希望更新代码时,明确使用 `--code-only`,商品内容保持原样。读取回执失败或商品提交失败不会被自动当成空商品清单继续发布。也可以到后台“版本与发布”确认本次发布内容。
|
|
507
|
+
CLI 负责上传代码、提交明确选中的商品以及查询或恢复这些操作。上传、审核和构建成功后,在开发者后台“版本与发布”核对本次版本与获批商品快照,再确认发布;CLI 不提供最终发布命令。
|
|
515
508
|
|
|
516
|
-
|
|
517
|
-
buddy-cli release --status <releaseId>
|
|
518
|
-
buddy-cli release --resume <releaseId>
|
|
519
|
-
buddy-cli release --retry <releaseId>
|
|
520
|
-
buddy-cli release --cancel <releaseId>
|
|
521
|
-
```
|
|
509
|
+
首次商品必须随关联搭子版本一起发布。曾上架商品的修改可以在当前线上代码支持时,从后台单独发布;已下架商品发布修改后仍保持下架。只希望更新代码时,在后台明确选择仅发布代码,商品内容保持原样。
|
|
522
510
|
|
|
523
|
-
|
|
511
|
+
发布任务的状态查询、重试和取消也在后台操作。取消阻止本任务后续激活商品,但不回滚已经开始的代码部署。后台显示发布成功后,仍需确认实际服务体验。下架仍在后台操作。
|
|
524
512
|
|
|
525
|
-
|
|
513
|
+
CLI 的上传和商品补提恢复记录按平台、账号、搭子隔离,保存在本机私有操作目录;记录不包含登录凭据,恢复使用当前账号重新鉴权。
|
|
526
514
|
|
|
527
515
|
### 上传前检查
|
|
528
516
|
|
package/dist/bin/core.js
CHANGED
|
@@ -3371,7 +3371,6 @@ var CLI_HELP = `\u642D\u642D Developer Platform CLI
|
|
|
3371
3371
|
preview \u8FDE\u63A5\u5DE5\u7A0B\u5E76\u6253\u5F00\u540E\u53F0\u5F00\u53D1\u8C03\u8BD5
|
|
3372
3372
|
push \u4E0A\u4F20\u7A0B\u5E8F\u5305\uFF0C\u53EF\u7528 --product \u540C\u6B65\u63D0\u4EA4\u5546\u54C1\u5BA1\u6838
|
|
3373
3373
|
products \u4E3A\u5DF2\u6709\u7248\u672C\u8865\u63D0\u5546\u54C1\uFF0C\u6216\u6062\u590D\u539F\u63D0\u5BA1\u8BF7\u6C42
|
|
3374
|
-
release \u4ECE\u660E\u786E\u56DE\u6267\u53D1\u5E03\uFF0C\u67E5\u8BE2\u3001\u6062\u590D\u3001\u91CD\u8BD5\u6216\u53D6\u6D88\u53D1\u5E03
|
|
3375
3374
|
status \u67E5\u770B\u4E91\u7AEF\u7248\u672C\u3001\u8FD0\u884C\u3001\u5BA1\u6838\u548C\u6784\u5EFA\u72B6\u6001
|
|
3376
3375
|
meta \u67E5\u770B\u4E91\u7AEF\u8D44\u6599\uFF1Bmeta update \u4FEE\u6539\u8D44\u6599\u6216\u66FF\u6362\u5934\u50CF
|
|
3377
3376
|
avatar \u65E7\u5934\u50CF\u547D\u4EE4\u517C\u5BB9\u5165\u53E3\uFF0C\u63A8\u8350 meta update --avatar
|
|
@@ -5380,21 +5379,12 @@ function parsePackagePush(value) {
|
|
|
5380
5379
|
if (operationId(p.pushId) !== metadata.pushId) invalid2("\u4E0A\u4F20\u56DE\u6267 ID \u4E0E\u5143\u6570\u636E\u4E0D\u5339\u914D");
|
|
5381
5380
|
return { pushId: metadata.pushId, uploadVersion: p.uploadVersion, status: p.status, metadata, reviewIds: selectedReviewIds(p.reviewIds), failure: p.failure ?? null };
|
|
5382
5381
|
}
|
|
5383
|
-
function parseProductRelease(value) {
|
|
5384
|
-
const r = record(value);
|
|
5385
|
-
if (r.mode !== "with_buddy" && r.mode !== "products_only") invalid2("\u53D1\u5E03\u6A21\u5F0F\u65E0\u6548");
|
|
5386
|
-
if (!["accepted", "activating", "active", "failed", "cancelled"].includes(String(r.status))) invalid2("\u53D1\u5E03\u64CD\u4F5C\u72B6\u6001\u65E0\u6548");
|
|
5387
|
-
if (typeof r.buddyVersion !== "string" || !r.buddyVersion.trim() || /[\u0000-\u001f\u007f]/u.test(r.buddyVersion)) invalid2("\u53D1\u5E03\u7248\u672C\u65E0\u6548");
|
|
5388
|
-
return { releaseId: operationId(r.releaseId), mode: r.mode, buddyVersion: r.buddyVersion, reviewIds: selectedReviewIds(r.reviewIds), status: r.status, ...r.failure === void 0 ? {} : { failure: r.failure } };
|
|
5389
|
-
}
|
|
5390
5382
|
var CloudOperationError = class extends CloudLifecycleError {
|
|
5391
|
-
constructor(code2, message, details, push
|
|
5383
|
+
constructor(code2, message, details, push) {
|
|
5392
5384
|
super(code2, message, details);
|
|
5393
5385
|
this.push = push;
|
|
5394
|
-
this.release = release;
|
|
5395
5386
|
}
|
|
5396
5387
|
push;
|
|
5397
|
-
release;
|
|
5398
5388
|
};
|
|
5399
5389
|
function sameReviewIds(a, b) {
|
|
5400
5390
|
return [...a].sort().join("\0") === [...b].sort().join("\0");
|
|
@@ -5432,7 +5422,7 @@ var OperationStore = class {
|
|
|
5432
5422
|
}
|
|
5433
5423
|
async save(record3) {
|
|
5434
5424
|
const prior = await this.read(record3.id, record3.kind);
|
|
5435
|
-
const input = (r) => r.kind === "push" ? r.metadata :
|
|
5425
|
+
const input = (r) => r.kind === "push" ? r.metadata : { version: r.version, reviews: r.reviews };
|
|
5436
5426
|
if (JSON.stringify(input(prior)) !== JSON.stringify(input(record3))) throw new CloudLifecycleError("INVALID_REQUEST", "\u6062\u590D\u8BB0\u5F55\u7684\u539F\u59CB\u8BF7\u6C42\u4E0D\u80FD\u66F4\u6539");
|
|
5437
5427
|
const temporary = this.path(`${record3.id}_${randomUUID8()}`);
|
|
5438
5428
|
await writeFile8(temporary, JSON.stringify({ identity: this.identity, operation: record3 }), { flag: "wx", mode: 384 });
|
|
@@ -5448,11 +5438,6 @@ var OperationStore = class {
|
|
|
5448
5438
|
if (r.metadata.pushId !== id) throw new Error("push mismatch");
|
|
5449
5439
|
if (r.receipt) parsePackagePush(r.receipt);
|
|
5450
5440
|
}
|
|
5451
|
-
if (r.kind === "release") {
|
|
5452
|
-
parseProductRelease({ ...r.request, status: "accepted" });
|
|
5453
|
-
if (r.request.releaseId !== id) throw new Error("release mismatch");
|
|
5454
|
-
if (r.receipt) parseProductRelease(r.receipt);
|
|
5455
|
-
}
|
|
5456
5441
|
if (r.kind === "submission") {
|
|
5457
5442
|
if (typeof r.version !== "string" || !r.version.trim() || typeof r.confirmed !== "boolean" || r.reviews.length === 0) throw new Error("submission invalid");
|
|
5458
5443
|
parsePushMetadata({ pushId: id, commit: "validate", sourceSha256: "0".repeat(64), productReviews: r.reviews });
|
|
@@ -5477,7 +5462,7 @@ var OperationStore = class {
|
|
|
5477
5462
|
var PRODUCT_HELP = {
|
|
5478
5463
|
push: `\u7528\u6CD5: buddy-cli push --commit <\u6539\u52A8\u8BF4\u660E> [--product <\u5546\u54C1 ID> ...] [--directory <\u76EE\u5F55>]
|
|
5479
5464
|
buddy-cli push --resume <pushId> | --status <pushId> [--directory <\u76EE\u5F55>]
|
|
5480
|
-
\u4E0A\u4F20\u4EE3\u7801\u5E76\u63D0\u4EA4\u660E\u786E\u9009\u4E2D\u7684\u5546\u54C1\uFF1B\u4E0D\u6307\u5B9A --product \u53EA\u4E0A\u4F20\u4EE3\u7801\u3002\
|
|
5465
|
+
\u4E0A\u4F20\u4EE3\u7801\u5E76\u63D0\u4EA4\u660E\u786E\u9009\u4E2D\u7684\u5546\u54C1\uFF1B\u4E0D\u6307\u5B9A --product \u53EA\u4E0A\u4F20\u4EE3\u7801\u3002\u53D1\u5E03\u5728\u5F00\u53D1\u8005\u540E\u53F0\u64CD\u4F5C\u3002
|
|
5481
5466
|
\u5546\u54C1 ID \u793A\u4F8B\uFF1Aprd_12345678\uFF1B\u5DF2\u6709 ps_ \u5546\u54C1 ID \u7EE7\u7EED\u517C\u5BB9\u3002
|
|
5482
5467
|
\u9996\u6B21\u4E0A\u4F20\u5FC5\u987B\u5B89\u88C5 npm latest \u6700\u65B0\u7A33\u5B9A Runtime \u7684\u51C6\u786E\u7248\u672C\uFF1B\u91CD\u8BD5\u56FA\u5B9A\u4F7F\u7528\u539F\u59CB\u5305\u3001\u8349\u7A3F\u7248\u672C\u548C\u5BA1\u6838 ID\u3002
|
|
5483
5468
|
\u7F51\u7EDC\u7ED3\u679C\u672A\u77E5\u65F6\u8BF7\u4F7F\u7528\u8F93\u51FA\u7684 --resume\uFF1B--status \u53EA\u67E5\u8BE2\u3002\u4E0D\u8981\u91CD\u65B0\u4E0A\u4F20\u3002`,
|
|
@@ -5485,13 +5470,7 @@ var PRODUCT_HELP = {
|
|
|
5485
5470
|
buddy-cli products submit --resume <submissionId> [--directory <\u76EE\u5F55>]
|
|
5486
5471
|
\u7528\u4E8E\u5DF2\u4E0A\u4F20\u7248\u672C\u8865\u63D0\u5546\u54C1\uFF1B\u6B63\u5E38 push --product \u5DF2\u81EA\u52A8\u63D0\u5BA1\uFF0C\u65E0\u9700\u91CD\u590D\u6267\u884C\u3002
|
|
5487
5472
|
\u5546\u54C1 ID \u793A\u4F8B\uFF1Aprd_12345678\uFF1B\u5DF2\u6709 ps_ \u5546\u54C1 ID \u7EE7\u7EED\u517C\u5BB9\u3002
|
|
5488
|
-
\u6062\u590D\u4F7F\u7528\u9996\u6B21\u6301\u4E45\u4FDD\u5B58\u7684\u5546\u54C1\u96C6\u5408\u3001\u5BA1\u6838 ID \u548C\u8349\u7A3F\u7248\u672C\u3002
|
|
5489
|
-
release: `\u7528\u6CD5: buddy-cli release (--from-push <pushId> | --from-submission <submissionId>) [--products-only] [--directory <\u76EE\u5F55>]
|
|
5490
|
-
buddy-cli release --version <\u7248\u672C> --code-only [--directory <\u76EE\u5F55>]
|
|
5491
|
-
buddy-cli release (--resume | --status | --retry | --cancel) <releaseId> [--directory <\u76EE\u5F55>]
|
|
5492
|
-
\u53D1\u5E03\u53EA\u91C7\u7528\u6307\u5B9A\u6210\u529F\u56DE\u6267\u4E2D\u7684\u5BA1\u6838\u96C6\u5408\uFF1B\u5546\u54C1\u5931\u8D25\u4E0D\u4F1A\u81EA\u52A8\u964D\u7EA7\u4E3A\u7EAF\u4EE3\u7801\u53D1\u5E03\u3002
|
|
5493
|
-
\u9ED8\u8BA4\u968F\u642D\u5B50\u7248\u672C\u4E00\u8D77\u53D1\u5E03\uFF1B--products-only \u53EA\u6FC0\u6D3B\u5546\u54C1\u5E76\u6838\u5BF9\u5F53\u524D\u7EBF\u4E0A\u7248\u672C\u3002
|
|
5494
|
-
\u4EC5 active \u8868\u793A\u5DF2\u751F\u6548\uFF1Baccepted/activating \u8BF7\u7528 --status \u67E5\u8BE2\u3002`
|
|
5473
|
+
\u6062\u590D\u4F7F\u7528\u9996\u6B21\u6301\u4E45\u4FDD\u5B58\u7684\u5546\u54C1\u96C6\u5408\u3001\u5BA1\u6838 ID \u548C\u8349\u7A3F\u7248\u672C\u3002\u5BA1\u6838\u901A\u8FC7\u540E\u5728\u5F00\u53D1\u8005\u540E\u53F0\u53D1\u5E03\u3002`
|
|
5495
5474
|
};
|
|
5496
5475
|
function parse2(command, args) {
|
|
5497
5476
|
if (command === "products") {
|
|
@@ -5500,15 +5479,11 @@ function parse2(command, args) {
|
|
|
5500
5479
|
}
|
|
5501
5480
|
const values = /* @__PURE__ */ new Map();
|
|
5502
5481
|
const products = [];
|
|
5503
|
-
const allowed = command === "push" ? ["--commit", "--resume", "--status", "--product"] :
|
|
5482
|
+
const allowed = command === "push" ? ["--commit", "--resume", "--status", "--product"] : ["--version", "--resume", "--product"];
|
|
5504
5483
|
for (let i = 0; i < args.length; i++) {
|
|
5505
5484
|
const flag2 = args[i];
|
|
5506
5485
|
if (flag2 !== "--directory" && !allowed.includes(flag2)) throw new CloudCommandUsageError(`\u672A\u77E5\u53C2\u6570 ${flag2}`);
|
|
5507
5486
|
if (flag2 !== "--product" && values.has(flag2)) throw new CloudCommandUsageError(`${flag2} \u4E0D\u80FD\u91CD\u590D`);
|
|
5508
|
-
if (["--code-only", "--products-only"].includes(flag2)) {
|
|
5509
|
-
values.set(flag2, "true");
|
|
5510
|
-
continue;
|
|
5511
|
-
}
|
|
5512
5487
|
const value = args[++i];
|
|
5513
5488
|
if (!value?.trim() || value.startsWith("--") || /[\u0000-\u001f\u007f]/u.test(value)) throw new CloudCommandUsageError(`${flag2} \u7F3A\u5C11\u6709\u6548\u503C`);
|
|
5514
5489
|
if (flag2 === "--product") {
|
|
@@ -5517,12 +5492,12 @@ function parse2(command, args) {
|
|
|
5517
5492
|
} else values.set(flag2, value.trim());
|
|
5518
5493
|
}
|
|
5519
5494
|
if (products.length > 10) throw new CloudCommandUsageError("\u4E00\u6B21\u6700\u591A\u9009\u62E9 10 \u4E2A\u5546\u54C1");
|
|
5520
|
-
const recovery = ["--resume", "--status"
|
|
5495
|
+
const recovery = ["--resume", "--status"].filter((f) => values.has(f));
|
|
5521
5496
|
if (recovery.length && (recovery.length !== 1 || products.length || [...values.keys()].some((f) => f !== "--directory" && !recovery.includes(f)))) throw new CloudCommandUsageError("\u6062\u590D\u6216\u67E5\u8BE2\u547D\u4EE4\u4E0D\u80FD\u540C\u65F6\u66F4\u6539\u539F\u59CB\u8BF7\u6C42");
|
|
5522
5497
|
return { values, products };
|
|
5523
5498
|
}
|
|
5524
5499
|
function required(value) {
|
|
5525
|
-
if (!value) throw new CloudCommandUsageError("\u5E73\u53F0 Adapter \u5C1A\u672A\u652F\u6301\u5546\u54C1\u4E0A\u4F20\u548C\
|
|
5500
|
+
if (!value) throw new CloudCommandUsageError("\u5E73\u53F0 Adapter \u5C1A\u672A\u652F\u6301\u5546\u54C1\u4E0A\u4F20\u548C\u63D0\u5BA1\u534F\u8BAE\uFF0C\u8BF7\u5347\u7EA7 Adapter");
|
|
5526
5501
|
return value;
|
|
5527
5502
|
}
|
|
5528
5503
|
function responseError(message) {
|
|
@@ -5558,10 +5533,10 @@ function showPush(io, push) {
|
|
|
5558
5533
|
if (failureMessage(push.failure)) io.writeError(`\u539F\u56E0\uFF1A${failureMessage(push.failure)}`);
|
|
5559
5534
|
if (push.reviewIds.length) io.write(`\u5546\u54C1\u5BA1\u6838\u7F16\u53F7\uFF1A${push.reviewIds.join(", ")}`);
|
|
5560
5535
|
if (push.status === "completed") {
|
|
5561
|
-
io.write(
|
|
5536
|
+
io.write("\u672C\u6B21 push \u4E0D\u4F1A\u53D1\u5E03\u642D\u5B50\uFF1B\u6784\u5EFA\u6210\u529F\u540E\uFF0C\u8BF7\u5230\u5F00\u53D1\u8005\u540E\u53F0\u201C\u7248\u672C\u4E0E\u53D1\u5E03\u201D\u786E\u8BA4\u4EE3\u7801\u53CA\u6240\u9009\u5546\u54C1\u5BA1\u6838\u7ED3\u679C\u540E\u53D1\u5E03\u3002");
|
|
5562
5537
|
return 0;
|
|
5563
5538
|
}
|
|
5564
|
-
if (push.status === "product_reviews_failed") io.writeError(`\u4EE3\u7801\u5305\u5DF2\u4FDD\u5B58\uFF0C\u5546\u54C1\u672A\u5B8C\u6574\u63D0\u5BA1\u3002\u4FEE\u6B63\u5546\u54C1\u540E\u4F7F\u7528 products submit --version ${push.uploadVersion} --product <\u5546\u54C1 ID> \u8865\u63D0\uFF1B\
|
|
5539
|
+
if (push.status === "product_reviews_failed") io.writeError(`\u4EE3\u7801\u5305\u5DF2\u4FDD\u5B58\uFF0C\u5546\u54C1\u672A\u5B8C\u6574\u63D0\u5BA1\u3002\u4FEE\u6B63\u5546\u54C1\u540E\u4F7F\u7528 buddy-cli products submit --version ${push.uploadVersion} --product <\u5546\u54C1 ID> \u8865\u63D0\uFF1B\u53D1\u5E03\u8BF7\u5230\u5F00\u53D1\u8005\u540E\u53F0\u201C\u7248\u672C\u4E0E\u53D1\u5E03\u201D\u64CD\u4F5C\u3002`);
|
|
5565
5540
|
else io.writeError(`\u4E0A\u4F20\u672A\u5B8C\u6210\uFF0C\u4F7F\u7528 buddy-cli push --resume ${push.pushId} \u6062\u590D\u539F\u8BF7\u6C42\u3002`);
|
|
5566
5541
|
return 1;
|
|
5567
5542
|
}
|
|
@@ -5601,23 +5576,6 @@ async function executePush(record3, sourceBundle, store, client, id, io, options
|
|
|
5601
5576
|
throw cause;
|
|
5602
5577
|
}
|
|
5603
5578
|
}
|
|
5604
|
-
function matchRelease(request, release) {
|
|
5605
|
-
if (request.releaseId !== release.releaseId || request.mode !== release.mode || request.buddyVersion !== release.buddyVersion || !sameReviewIds(request.reviewIds, release.reviewIds)) responseError("\u53D1\u5E03\u56DE\u6267\u4E0E\u56FA\u5B9A\u8BF7\u6C42\u4E0D\u4E00\u81F4");
|
|
5606
|
-
}
|
|
5607
|
-
function showRelease(io, release) {
|
|
5608
|
-
io.write(`\u53D1\u5E03\u7F16\u53F7\uFF1A${release.releaseId}`);
|
|
5609
|
-
io.write(`\u53D1\u5E03\u72B6\u6001\uFF1A${release.status}`);
|
|
5610
|
-
io.write(`\u76EE\u6807\u7248\u672C\uFF1A${release.buddyVersion}`);
|
|
5611
|
-
if (failureMessage(release.failure)) io.writeError(`\u539F\u56E0\uFF1A${failureMessage(release.failure)}`);
|
|
5612
|
-
if (release.status === "active") {
|
|
5613
|
-
io.write("\u53D1\u5E03\u5DF2\u751F\u6548\u3002");
|
|
5614
|
-
return 0;
|
|
5615
|
-
}
|
|
5616
|
-
if (release.status === "failed") io.writeError(`\u53D1\u5E03\u672A\u751F\u6548\u3002\u4FEE\u6B63\u539F\u56E0\u540E buddy-cli release --retry ${release.releaseId}\uFF1B\u653E\u5F03\u5219 --cancel ${release.releaseId}\u3002`);
|
|
5617
|
-
else if (release.status === "cancelled") io.write("\u8BE5\u53D1\u5E03\u5DF2\u53D6\u6D88\u3002");
|
|
5618
|
-
else io.write(`\u53D1\u5E03\u4ECD\u5728\u5904\u7406\uFF0C\u8BF7\u8FD0\u884C buddy-cli release --status ${release.releaseId} \u786E\u8BA4\u662F\u5426\u751F\u6548\u3002`);
|
|
5619
|
-
return 1;
|
|
5620
|
-
}
|
|
5621
5579
|
async function runProductLifecycle(command, args, io, options) {
|
|
5622
5580
|
if (args.length === 1 && ["--help", "-h"].includes(args[0]) || command === "products" && args.length === 2 && args[0] === "submit" && args[1] === "--help") {
|
|
5623
5581
|
io.write(PRODUCT_HELP[command]);
|
|
@@ -5625,7 +5583,7 @@ async function runProductLifecycle(command, args, io, options) {
|
|
|
5625
5583
|
}
|
|
5626
5584
|
const p = parse2(command, args);
|
|
5627
5585
|
const v = p.values;
|
|
5628
|
-
if (options.mode === "local-mock") throw new CloudCommandUsageError("\u672C\u5730\u6A21\u62DF\u6A21\u5F0F\u4E0D\u4F1A\u4F2A\u9020\u6B63\u5F0F push \u6216\
|
|
5586
|
+
if (options.mode === "local-mock") throw new CloudCommandUsageError("\u672C\u5730\u6A21\u62DF\u6A21\u5F0F\u4E0D\u4F1A\u4F2A\u9020\u6B63\u5F0F push \u6216\u5546\u54C1\u63D0\u5BA1\uFF0C\u8BF7\u8FDE\u63A5\u771F\u5B9E MLB Server");
|
|
5629
5587
|
const freshPush = command === "push" && !v.has("--resume") && !v.has("--status");
|
|
5630
5588
|
const root = await (options.resolveProjectRoot ?? (freshPush ? requireBuddyAgentProjectRoot : requireBuddyProjectRoot))(resolve15(options.cwd ?? process.cwd(), v.get("--directory") ?? "."));
|
|
5631
5589
|
const platform = resolvePlatformUrl({ env: options.runtimeUpdate?.env });
|
|
@@ -5666,83 +5624,25 @@ async function runProductLifecycle(command, args, io, options) {
|
|
|
5666
5624
|
io.write(`\u6062\u590D\u7F16\u53F7\uFF1A${pushId}`);
|
|
5667
5625
|
return executePush(record4, bundle, store, client, id, io, options);
|
|
5668
5626
|
}
|
|
5669
|
-
if (command === "products") {
|
|
5670
|
-
let record4;
|
|
5671
|
-
if (v.has("--resume")) record4 = await store.read(v.get("--resume"), "submission");
|
|
5672
|
-
else {
|
|
5673
|
-
const version = v.get("--version");
|
|
5674
|
-
if (!version || !p.products.length) throw new CloudCommandUsageError(PRODUCT_HELP.products);
|
|
5675
|
-
const chosen = await selection(client, id, p.products, io);
|
|
5676
|
-
record4 = { kind: "submission", id: `sub_${randomUUID9()}`, version, reviews: chosen.reviews, confirmed: false };
|
|
5677
|
-
await store.create(record4);
|
|
5678
|
-
}
|
|
5679
|
-
io.write(`\u5546\u54C1\u63D0\u4EA4\u7F16\u53F7\uFF1A${record4.id}`);
|
|
5680
|
-
try {
|
|
5681
|
-
const receipt = await required(client.submitPackageProducts).call(client, { id, version: record4.version, reviews: record4.reviews });
|
|
5682
|
-
if (!sameReviewIds(receipt.reviewIds, record4.reviews.map((r) => r.reviewId))) responseError("\u5E73\u53F0\u672A\u786E\u8BA4\u5B8C\u6574\u5546\u54C1\u5BA1\u6838\u96C6\u5408");
|
|
5683
|
-
await store.save({ ...record4, confirmed: true });
|
|
5684
|
-
io.write(`\u5546\u54C1\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF1A${receipt.reviewIds.join(", ")}`);
|
|
5685
|
-
io.write(`\u5BA1\u6838\u901A\u8FC7\u540E\uFF1Abuddy-cli release --from-submission ${record4.id}`);
|
|
5686
|
-
return { exitCode: 0, buddyId: id, version: record4.version };
|
|
5687
|
-
} catch (cause) {
|
|
5688
|
-
io.writeError(`\u4FDD\u7559\u539F\u8BF7\u6C42\u91CD\u8BD5\uFF1Abuddy-cli products submit --resume ${record4.id}`);
|
|
5689
|
-
throw cause;
|
|
5690
|
-
}
|
|
5691
|
-
}
|
|
5692
|
-
const action = ["--resume", "--status", "--retry", "--cancel"].find((f) => v.has(f));
|
|
5693
5627
|
let record3;
|
|
5694
|
-
if (
|
|
5695
|
-
|
|
5696
|
-
|
|
5697
|
-
|
|
5698
|
-
|
|
5699
|
-
|
|
5700
|
-
}
|
|
5701
|
-
record3 = await store.read(releaseId, "release");
|
|
5702
|
-
} else {
|
|
5703
|
-
const sources = ["--from-push", "--from-submission", "--version"].filter((f) => v.has(f));
|
|
5704
|
-
if (sources.length !== 1 || v.has("--code-only") !== v.has("--version") || v.has("--code-only") && v.has("--products-only")) throw new CloudCommandUsageError(PRODUCT_HELP.release);
|
|
5705
|
-
let version;
|
|
5706
|
-
let reviewIds;
|
|
5707
|
-
if (v.has("--from-push")) {
|
|
5708
|
-
const pushRecord = await store.read(v.get("--from-push"), "push");
|
|
5709
|
-
const receipt = await required(client.getPackagePush).call(client, { id, pushId: pushRecord.id });
|
|
5710
|
-
confirmPush(pushRecord, receipt);
|
|
5711
|
-
await store.save({ ...pushRecord, receipt });
|
|
5712
|
-
if (receipt.status !== "completed" || !receipt.uploadVersion) throw new CloudCommandUsageError("\u6307\u5B9A\u4E0A\u4F20\u5C1A\u672A\u5B8C\u6574\u63D0\u5BA1\uFF0C\u4E0D\u80FD\u81EA\u52A8\u7701\u7565\u5931\u8D25\u5546\u54C1\uFF1B\u8BF7\u8865\u63D0\u6216\u660E\u786E --version <\u7248\u672C> --code-only");
|
|
5713
|
-
version = receipt.uploadVersion;
|
|
5714
|
-
reviewIds = receipt.reviewIds;
|
|
5715
|
-
} else if (v.has("--from-submission")) {
|
|
5716
|
-
const submission = await store.read(v.get("--from-submission"), "submission");
|
|
5717
|
-
if (!submission.confirmed) throw new CloudCommandUsageError(`\u8865\u63D0\u7ED3\u679C\u5C1A\u672A\u786E\u8BA4\uFF0C\u8BF7\u5148 products submit --resume ${submission.id}`);
|
|
5718
|
-
version = submission.version;
|
|
5719
|
-
reviewIds = submission.reviews.map((r) => r.reviewId);
|
|
5720
|
-
} else {
|
|
5721
|
-
version = v.get("--version");
|
|
5722
|
-
reviewIds = [];
|
|
5723
|
-
}
|
|
5724
|
-
if (v.has("--products-only")) {
|
|
5725
|
-
if (!reviewIds.length) throw new CloudCommandUsageError("--products-only \u9700\u8981\u660E\u786E\u7684\u5546\u54C1\u5BA1\u6838\u96C6\u5408");
|
|
5726
|
-
const buddy2 = await client.getBuddy({ id });
|
|
5727
|
-
if (buddy2.id !== id || !buddy2.released || buddy2.version !== version) throw new CloudCommandUsageError("\u4EC5\u5546\u54C1\u53D1\u5E03\u8981\u6C42\u56DE\u6267\u7248\u672C\u4E0E\u5F53\u524D\u5DF2\u53D1\u5E03\u642D\u5B50\u7248\u672C\u4E00\u81F4");
|
|
5728
|
-
}
|
|
5729
|
-
const releaseId = `rel_${randomUUID9()}`;
|
|
5730
|
-
record3 = { kind: "release", id: releaseId, request: { releaseId, mode: v.has("--products-only") ? "products_only" : "with_buddy", buddyVersion: version, reviewIds } };
|
|
5628
|
+
if (v.has("--resume")) record3 = await store.read(v.get("--resume"), "submission");
|
|
5629
|
+
else {
|
|
5630
|
+
const version = v.get("--version");
|
|
5631
|
+
if (!version || !p.products.length) throw new CloudCommandUsageError(PRODUCT_HELP.products);
|
|
5632
|
+
const chosen = await selection(client, id, p.products, io);
|
|
5633
|
+
record3 = { kind: "submission", id: `sub_${randomUUID9()}`, version, reviews: chosen.reviews, confirmed: false };
|
|
5731
5634
|
await store.create(record3);
|
|
5732
5635
|
}
|
|
5733
|
-
io.write(`\
|
|
5636
|
+
io.write(`\u5546\u54C1\u63D0\u4EA4\u7F16\u53F7\uFF1A${record3.id}`);
|
|
5734
5637
|
try {
|
|
5735
|
-
const receipt =
|
|
5736
|
-
|
|
5737
|
-
await store.save({ ...record3,
|
|
5738
|
-
|
|
5638
|
+
const receipt = await required(client.submitPackageProducts).call(client, { id, version: record3.version, reviews: record3.reviews });
|
|
5639
|
+
if (!sameReviewIds(receipt.reviewIds, record3.reviews.map((r) => r.reviewId))) responseError("\u5E73\u53F0\u672A\u786E\u8BA4\u5B8C\u6574\u5546\u54C1\u5BA1\u6838\u96C6\u5408");
|
|
5640
|
+
await store.save({ ...record3, confirmed: true });
|
|
5641
|
+
io.write(`\u5546\u54C1\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF1A${receipt.reviewIds.join(", ")}`);
|
|
5642
|
+
io.write("\u5BA1\u6838\u901A\u8FC7\u540E\uFF0C\u8BF7\u5230\u5F00\u53D1\u8005\u540E\u53F0\u786E\u8BA4\u5E76\u53D1\u5E03\u3002");
|
|
5643
|
+
return { exitCode: 0, buddyId: id, version: record3.version };
|
|
5739
5644
|
} catch (cause) {
|
|
5740
|
-
|
|
5741
|
-
matchRelease(record3.request, cause.release);
|
|
5742
|
-
await store.save({ ...record3, receipt: cause.release });
|
|
5743
|
-
showRelease(io, cause.release);
|
|
5744
|
-
}
|
|
5745
|
-
io.writeError(`\u53D1\u5E03\u7ED3\u679C\u9700\u786E\u8BA4\uFF1Abuddy-cli release --status ${record3.id}\uFF1B\u539F\u8BF7\u6C42\u6062\u590D\uFF1Abuddy-cli release --resume ${record3.id}`);
|
|
5645
|
+
io.writeError(`\u4FDD\u7559\u539F\u8BF7\u6C42\u91CD\u8BD5\uFF1Abuddy-cli products submit --resume ${record3.id}`);
|
|
5746
5646
|
throw cause;
|
|
5747
5647
|
}
|
|
5748
5648
|
}
|
|
@@ -6120,7 +6020,7 @@ function serverError(response, body) {
|
|
|
6120
6020
|
return new CloudOperationError(code2, message, {
|
|
6121
6021
|
httpStatus: response.status,
|
|
6122
6022
|
retryable: response.status === 408 || response.status === 429 || response.status >= 500
|
|
6123
|
-
}, source?.push === void 0 ? void 0 : parsePackagePush(source.push)
|
|
6023
|
+
}, source?.push === void 0 ? void 0 : parsePackagePush(source.push));
|
|
6124
6024
|
}
|
|
6125
6025
|
var HttpDeveloperPlatformClient = class {
|
|
6126
6026
|
#baseUrl;
|
|
@@ -6287,24 +6187,6 @@ var HttpDeveloperPlatformClient = class {
|
|
|
6287
6187
|
const source = object3(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/packages/${encodeURIComponent(request.version)}/product-reviews`, "POST", { json: { reviews: request.reviews } }), "response");
|
|
6288
6188
|
return { reviewIds: selectedReviewIds(source.reviewIds) };
|
|
6289
6189
|
}
|
|
6290
|
-
async createProductRelease(request) {
|
|
6291
|
-
const source = object3(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/product-releases`, "POST", { json: request.release }), "response");
|
|
6292
|
-
return parseProductRelease(source.release);
|
|
6293
|
-
}
|
|
6294
|
-
async getProductRelease(request) {
|
|
6295
|
-
const source = object3(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/product-releases/${encodeURIComponent(request.releaseId)}`, "GET"), "response");
|
|
6296
|
-
const release = parseProductRelease(source.release);
|
|
6297
|
-
if (release.releaseId !== request.releaseId) throw invalid3("\u53D1\u5E03\u56DE\u6267 ID \u4E0D\u5339\u914D");
|
|
6298
|
-
return release;
|
|
6299
|
-
}
|
|
6300
|
-
async retryProductRelease(request) {
|
|
6301
|
-
const source = object3(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/product-releases/${encodeURIComponent(request.releaseId)}/retry`, "POST"), "response");
|
|
6302
|
-
return parseProductRelease(source.release);
|
|
6303
|
-
}
|
|
6304
|
-
async cancelProductRelease(request) {
|
|
6305
|
-
const source = object3(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/product-releases/${encodeURIComponent(request.releaseId)}/cancel`, "POST"), "response");
|
|
6306
|
-
return parseProductRelease(source.release);
|
|
6307
|
-
}
|
|
6308
6190
|
async getPackageBuild(request) {
|
|
6309
6191
|
return parseBuild(await this.#request(`/cli/buddies/${encodeURIComponent(request.id)}/packages/${encodeURIComponent(request.version)}/build`, "GET"));
|
|
6310
6192
|
}
|
|
@@ -6435,7 +6317,6 @@ var HELP = Object.freeze({
|
|
|
6435
6317
|
logout: "\u7528\u6CD5: buddy-cli logout",
|
|
6436
6318
|
push: PRODUCT_HELP.push,
|
|
6437
6319
|
products: PRODUCT_HELP.products,
|
|
6438
|
-
release: PRODUCT_HELP.release,
|
|
6439
6320
|
status: "\u7528\u6CD5: buddy-cli status [--directory <\u9879\u76EE\u76EE\u5F55>]",
|
|
6440
6321
|
meta: `\u7528\u6CD5: buddy-cli meta [--directory <\u9879\u76EE\u76EE\u5F55> | --buddy-id <\u642D\u5B50 ID>]
|
|
6441
6322
|
buddy-cli meta update [--name <\u540D\u79F0>] [--tagline <\u4E00\u53E5\u8BDD\u4ECB\u7ECD>] [--intro <\u5B8C\u6574\u4ECB\u7ECD>] [--avatar <\u56FE\u7247\u6587\u4EF6>] [--directory <\u9879\u76EE\u76EE\u5F55> | --buddy-id <\u642D\u5B50 ID>]
|
|
@@ -6619,7 +6500,7 @@ async function runMeta(parsed, io, options, legacyAvatar = false) {
|
|
|
6619
6500
|
}
|
|
6620
6501
|
async function runCloudCommand(command, args, io, options = {}) {
|
|
6621
6502
|
try {
|
|
6622
|
-
if (command === "push" || command === "products"
|
|
6503
|
+
if (command === "push" || command === "products") return await runProductLifecycle(command, args, io, options);
|
|
6623
6504
|
const parsed = parse3(args, command);
|
|
6624
6505
|
if (parsed.help) {
|
|
6625
6506
|
io.write(HELP[command]);
|
|
@@ -6664,7 +6545,7 @@ async function runCloudCommand(command, args, io, options = {}) {
|
|
|
6664
6545
|
exitCode: cause instanceof CloudCommandUsageError || cause instanceof BuddyProjectContextError ? 2 : 1
|
|
6665
6546
|
};
|
|
6666
6547
|
}
|
|
6667
|
-
if (["push", "products"
|
|
6548
|
+
if (["push", "products"].includes(command)) {
|
|
6668
6549
|
io.writeError(`buddy-cli: ${cause instanceof Error ? cause.message : "\u64CD\u4F5C\u672A\u5B8C\u6210\uFF0C\u8BF7\u6309\u8F93\u51FA\u7F16\u53F7\u67E5\u8BE2\u6216\u6062\u590D"}`);
|
|
6669
6550
|
return { exitCode: 1 };
|
|
6670
6551
|
}
|
|
@@ -8788,7 +8669,7 @@ async function runBuddyCli(args, io, options = {}) {
|
|
|
8788
8669
|
...options.dev
|
|
8789
8670
|
});
|
|
8790
8671
|
}
|
|
8791
|
-
if (command === "login" || command === "logout" || command === "push" || command === "products" || command === "
|
|
8672
|
+
if (command === "login" || command === "logout" || command === "push" || command === "products" || command === "status" || command === "meta" || command === "avatar") {
|
|
8792
8673
|
return await runCloudCommand(command, rest, io, {
|
|
8793
8674
|
cwd: options.cwd,
|
|
8794
8675
|
runtimeUpdate: options.runtimeCatalog,
|