@lark-apaas/fullstack-cli 1.1.22-alpha.6 → 1.1.22-alpha.7

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.
Files changed (3) hide show
  1. package/README.md +41 -3
  2. package/dist/index.js +91 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @lark-apaas/fullstack-cli
2
2
 
3
- > Fullstack 开发工具集 - 文件派生、数据库 Schema 生成、OpenAPI 生成、能力管理
3
+ > Fullstack 开发工具集 - 文件派生、数据库 Schema 生成、OpenAPI 生成、能力管理、构建工具
4
4
 
5
5
  ## 功能
6
6
 
@@ -9,6 +9,7 @@
9
9
  3. **OpenAPI 生成** - 自动生成 API 文档和客户端 SDK
10
10
  4. **Action 插件管理** - 安装、更新、删除 action 插件
11
11
  5. **能力配置管理** - 查看、充血、迁移能力配置
12
+ 6. **构建工具** - 获取 STI 制品上传凭证等构建相关操作
12
13
 
13
14
  ## 安装
14
15
 
@@ -201,7 +202,40 @@ fullstack-cli capability migration --skip-code
201
202
  }
202
203
  ```
203
204
 
204
- ### 7. CLI 命令
205
+ ### 7. 构建工具
206
+
207
+ 获取构建流程所需的 STI 制品上传凭证:
208
+
209
+ ```bash
210
+ # Pipeline 发布场景 - 需要 commit-id
211
+ fullstack-cli build get-token --app-id app_xxx --scene pipeline --commit-id abc123
212
+
213
+ # 静态资源部署场景
214
+ fullstack-cli build get-token --app-id app_xxx --scene static
215
+ ```
216
+
217
+ **参数说明:**
218
+
219
+ | 参数 | 必填 | 说明 |
220
+ |------|------|------|
221
+ | `--app-id <id>` | 是 | 应用 ID |
222
+ | `--scene <scene>` | 是 | 构建场景(`pipeline`、`static`) |
223
+ | `--commit-id <id>` | scene=pipeline 时必填 | Git Commit ID |
224
+
225
+ **输出:** stdout 输出 API 返回的完整 JSON,日志/错误输出到 stderr,便于脚本解析:
226
+
227
+ ```bash
228
+ token_response=$(fullstack-cli build get-token --app-id "$APP_ID" --scene pipeline --commit-id "$COMMIT_ID")
229
+ credential=$(echo "$token_response" | jq -r '.data.accessKeyID')
230
+ ```
231
+
232
+ **环境变量:**
233
+ - `FORCE_AUTHN_INNERAPI_DOMAIN` — API 域名
234
+ - `FORCE_AUTHN_ACCESS_KEY` — Access Key
235
+ - `FORCE_AUTHN_ACCESS_SECRET` — Secret Key
236
+ - `FORCE_FRAMEWORK_CLI_CANARY_ENV` — Canary 环境(可选)
237
+
238
+ ### 8. CLI 命令
205
239
 
206
240
  ```bash
207
241
  # 查看帮助
@@ -223,11 +257,15 @@ fullstack-cli capability --help
223
257
  fullstack-cli capability list
224
258
  fullstack-cli capability migration --dry-run
225
259
 
260
+ # 构建工具
261
+ fullstack-cli build --help
262
+ fullstack-cli build get-token --app-id <id> --scene <scene> [--commit-id <id>]
263
+
226
264
  # 查看版本
227
265
  fullstack-cli --version
228
266
  ```
229
267
 
230
- ### 8. 全局选项
268
+ ### 9. 全局选项
231
269
 
232
270
  #### Canary 环境
233
271
 
package/dist/index.js CHANGED
@@ -3786,6 +3786,9 @@ var capabilityCommandGroup = {
3786
3786
  commands: [listCommand2]
3787
3787
  };
3788
3788
 
3789
+ // src/commands/component/add.handler.ts
3790
+ import { execFile } from "child_process";
3791
+
3789
3792
  // src/commands/component/registry-preparer.ts
3790
3793
  import fs13 from "fs";
3791
3794
  import path11 from "path";
@@ -4015,6 +4018,16 @@ async function executeShadcnAdd(registryItemPath) {
4015
4018
  }
4016
4019
 
4017
4020
  // src/commands/component/add.handler.ts
4021
+ function runActionPluginInit() {
4022
+ return new Promise((resolve) => {
4023
+ execFile("fullstack-cli", ["action-plugin", "init"], { cwd: process.cwd(), stdio: "ignore" }, (error) => {
4024
+ if (error) {
4025
+ debug("action-plugin init \u5931\u8D25: %s", error.message);
4026
+ }
4027
+ resolve();
4028
+ });
4029
+ });
4030
+ }
4018
4031
  function printResult(result) {
4019
4032
  console.log(JSON.stringify(result, null, 2));
4020
4033
  }
@@ -4051,6 +4064,7 @@ async function add(key) {
4051
4064
  errors: [{ message: errorMessage }]
4052
4065
  });
4053
4066
  } finally {
4067
+ await runActionPluginInit();
4054
4068
  cleanupTempDir();
4055
4069
  }
4056
4070
  }
@@ -6825,6 +6839,81 @@ var readLogsCommand = {
6825
6839
  }
6826
6840
  };
6827
6841
 
6842
+ // src/commands/build/types.ts
6843
+ var SCENE_CONFIGS = {
6844
+ pipeline: {
6845
+ name: "pipeline",
6846
+ requiredOptions: ["commitId"],
6847
+ buildRequestBody: (opts) => ({ commitID: opts.commitId })
6848
+ },
6849
+ static: {
6850
+ name: "static",
6851
+ requiredOptions: [],
6852
+ buildRequestBody: () => ({ commitID: "" })
6853
+ }
6854
+ };
6855
+
6856
+ // src/commands/build/api-client.ts
6857
+ async function genArtifactUploadCredential(appId, body) {
6858
+ const client = getHttpClient();
6859
+ const url = `/v1/app/${appId}/pipeline/gen_artifact_upload_credential`;
6860
+ const response = await client.post(url, body);
6861
+ if (!response.ok || response.status !== 200) {
6862
+ throw new Error(
6863
+ `API request failed: ${response.status} ${response.statusText}`
6864
+ );
6865
+ }
6866
+ return response.json();
6867
+ }
6868
+
6869
+ // src/commands/build/get-token.handler.ts
6870
+ async function getToken(options) {
6871
+ try {
6872
+ const sceneConfig = SCENE_CONFIGS[options.scene];
6873
+ if (!sceneConfig) {
6874
+ const available = Object.keys(SCENE_CONFIGS).join(", ");
6875
+ console.error(
6876
+ `[build] Error: invalid scene "${options.scene}". Available scenes: ${available}`
6877
+ );
6878
+ process.exit(1);
6879
+ }
6880
+ for (const key of sceneConfig.requiredOptions) {
6881
+ if (!options[key]) {
6882
+ console.error(
6883
+ `[build] Error: --${camelToKebab(key)} is required for scene "${options.scene}"`
6884
+ );
6885
+ process.exit(1);
6886
+ }
6887
+ }
6888
+ const body = sceneConfig.buildRequestBody(options);
6889
+ const response = await genArtifactUploadCredential(options.appId, body);
6890
+ console.log(JSON.stringify(response));
6891
+ } catch (error) {
6892
+ const message = error instanceof Error ? error.message : String(error);
6893
+ console.error(`[build] Error: ${message}`);
6894
+ process.exit(1);
6895
+ }
6896
+ }
6897
+ function camelToKebab(str) {
6898
+ return str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
6899
+ }
6900
+
6901
+ // src/commands/build/index.ts
6902
+ var getTokenCommand = {
6903
+ name: "get-token",
6904
+ description: "Get artifact upload credential (STI token)",
6905
+ register(program) {
6906
+ program.command(this.name).description(this.description).requiredOption("--app-id <id>", "Application ID").requiredOption("--scene <scene>", "Build scene (pipeline, static)").option("--commit-id <id>", "Git commit ID (required for pipeline scene)").action(async (options) => {
6907
+ await getToken(options);
6908
+ });
6909
+ }
6910
+ };
6911
+ var buildCommandGroup = {
6912
+ name: "build",
6913
+ description: "Build related commands",
6914
+ commands: [getTokenCommand]
6915
+ };
6916
+
6828
6917
  // src/commands/index.ts
6829
6918
  var commands = [
6830
6919
  genDbSchemaCommand,
@@ -6834,7 +6923,8 @@ var commands = [
6834
6923
  capabilityCommandGroup,
6835
6924
  componentCommandGroup,
6836
6925
  migrationCommand,
6837
- readLogsCommand
6926
+ readLogsCommand,
6927
+ buildCommandGroup
6838
6928
  ];
6839
6929
 
6840
6930
  // src/index.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/fullstack-cli",
3
- "version": "1.1.22-alpha.6",
3
+ "version": "1.1.22-alpha.7",
4
4
  "description": "CLI tool for fullstack template management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",