@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.
- package/README.md +41 -3
- package/dist/index.js +91 -1
- 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.
|
|
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
|
-
###
|
|
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
|