cloudcc-cli 2.3.4 → 2.3.6
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/.claude/settings.json +22 -1
- package/.cursor/skills/cloudcc-cli-dev/SKILL.md +175 -0
- package/.cursor/skills/cloudcc-dev-skill/SKILL.md +71 -0
- package/README.md +81 -6
- package/bin/cc.js +106 -28
- package/bin/index.js +54 -55
- package/mcp/cliRunner.js +11 -4
- package/mcp/index.js +12 -2
- package/mcp/tools/Application Creator/handler.js +1 -1
- package/mcp/tools/Approval/handler.js +3 -3
- package/mcp/tools/Class Creator/handler.js +2 -2
- package/mcp/tools/Class Detail Retriever/handler.js +1 -1
- package/mcp/tools/Class Editor Guide/handler.js +1 -1
- package/mcp/tools/Class List Retriever/handler.js +1 -1
- package/mcp/tools/Class Publisher/handler.js +1 -1
- package/mcp/tools/Class Puller/handler.js +1 -1
- package/mcp/tools/Client Script Detail Retriever/handler.js +1 -1
- package/mcp/tools/Client Script Editor Guide/handler.js +1 -1
- package/mcp/tools/Client Script List Retriever/handler.js +1 -1
- package/mcp/tools/Client Script Publisher/handler.js +1 -1
- package/mcp/tools/Client Script Puller/handler.js +2 -2
- package/mcp/tools/CloudCC Development Overview/handler.js +2 -2
- package/mcp/tools/Component Creator/handler.js +1 -1
- package/mcp/tools/Component Detail Retriever/handler.js +1 -1
- package/mcp/tools/Component Editor Guide/handler.js +1 -1
- package/mcp/tools/Component List Retriever/handler.js +1 -1
- package/mcp/tools/Component Publisher/handler.js +2 -2
- package/mcp/tools/Component Puller/handler.js +1 -1
- package/mcp/tools/Dev Environment Creator/handler.js +1 -1
- package/mcp/tools/Dev Environment Validator/handler.js +1 -1
- package/mcp/tools/Developer Key Setup Guide/handler.js +1 -1
- package/mcp/tools/JSP Migrator/handler.js +46 -0
- package/mcp/tools/Menu Creator/handler.js +1 -1
- package/mcp/tools/Object Creator/handler.js +2 -2
- package/mcp/tools/Object Fields Creator/handler.js +1 -1
- package/mcp/tools/Object Fields Retriever/handler.js +1 -1
- package/mcp/tools/Object List Retriever/handler.js +1 -1
- package/mcp/tools/Scheduled Class Creator/handler.js +1 -1
- package/mcp/tools/Scheduled Class Detail Retriever/handler.js +1 -1
- package/mcp/tools/Scheduled Class List Retriever/handler.js +1 -1
- package/mcp/tools/Scheduled Class Publisher/handler.js +1 -1
- package/mcp/tools/Scheduled Class Puller/handler.js +1 -1
- package/mcp/tools/Trigger Creator/handler.js +1 -1
- package/mcp/tools/Trigger Detail Retriever/handler.js +1 -1
- package/mcp/tools/Trigger Editor Guide/handler.js +1 -1
- package/mcp/tools/Trigger List Retriever/handler.js +1 -1
- package/mcp/tools/Trigger Publisher/handler.js +1 -1
- package/mcp/tools/Trigger Puller/handler.js +1 -1
- package/package.json +3 -3
- package/src/application/create.js +2 -2
- package/src/application/delete.js +2 -2
- package/src/application/doc.js +2 -2
- package/src/application/docs/devguide.md +25 -25
- package/src/application/docs/introduction.md +2 -2
- package/src/button/create.js +169 -0
- package/src/button/delete.js +35 -0
- package/src/button/doc.js +36 -0
- package/src/button/docs/devguide.md +133 -0
- package/src/button/docs/introduction.md +60 -0
- package/src/button/get.js +60 -0
- package/src/button/index.js +20 -0
- package/src/classes/create.js +1 -1
- package/src/classes/delete.js +1 -1
- package/src/classes/detail.js +1 -1
- package/src/classes/doc.js +2 -2
- package/src/classes/docs/devguide.md +21 -21
- package/src/classes/docs/introduction.md +0 -20
- package/src/classes/get.js +1 -1
- package/src/classes/publish.js +1 -1
- package/src/classes/pull.js +1 -1
- package/src/classes/pullList.js +1 -1
- package/src/config/doc.js +2 -2
- package/src/config/docs/devguide.md +15 -15
- package/src/customPage/create.js +2 -2
- package/src/customPage/delete.js +2 -2
- package/src/customPage/doc.js +2 -2
- package/src/customPage/docs/devguide.md +27 -27
- package/src/customPage/get.js +1 -1
- package/src/customSetting/create.js +1 -1
- package/src/customSetting/delete.js +1 -1
- package/src/customSetting/deleteCustomSettingField.js +1 -1
- package/src/customSetting/detail.js +1 -1
- package/src/customSetting/docs/devguide.md +9 -9
- package/src/customSetting/editCustomSettingField.js +1 -1
- package/src/customSetting/get.js +1 -1
- package/src/customSetting/modify.js +1 -1
- package/src/customSetting/saveCustomSettingField.js +1 -1
- package/src/fields/delete.js +2 -2
- package/src/fields/docs/devguide.md +14 -14
- package/src/fields/docs/introduction.md +3 -3
- package/src/globalSelectList/create.js +1 -1
- package/src/globalSelectList/delete.js +1 -1
- package/src/globalSelectList/detail.js +1 -1
- package/src/globalSelectList/doc.js +2 -2
- package/src/globalSelectList/docs/devguide.md +7 -7
- package/src/globalSelectList/get.js +1 -1
- package/src/identityProvider/create.js +78 -0
- package/src/identityProvider/delete.js +61 -0
- package/src/identityProvider/doc.js +46 -0
- package/src/identityProvider/docs/devguide.md +107 -0
- package/src/identityProvider/docs/introduction.md +31 -0
- package/src/identityProvider/download.js +105 -0
- package/src/identityProvider/get.js +70 -0
- package/src/identityProvider/index.js +12 -0
- package/src/menu/create-object.js +2 -2
- package/src/menu/create-page.js +2 -2
- package/src/menu/create-script.js +2 -2
- package/src/menu/create-site.js +2 -2
- package/src/menu/create.js +11 -11
- package/src/menu/delete.js +2 -2
- package/src/menu/doc.js +2 -2
- package/src/menu/docs/devguide.md +13 -13
- package/src/menu/docs/introduction.md +3 -3
- package/src/menu/get.js +1 -1
- package/src/object/create.js +2 -2
- package/src/object/delete.js +2 -2
- package/src/object/docs/devguide.md +11 -11
- package/src/pagelayout/create.js +6 -6
- package/src/pagelayout/delete.js +4 -4
- package/src/pagelayout/doc.js +2 -2
- package/src/pagelayout/docs/devguide.md +9 -9
- package/src/pagelayout/docs/introduction.md +1 -1
- package/src/pagelayout/get.js +4 -4
- package/src/permission/add.js +164 -0
- package/src/permission/assign.js +84 -0
- package/src/permission/docs/devguide.md +238 -0
- package/src/permission/docs/introduction.md +200 -0
- package/src/permission/get.js +107 -0
- package/src/permission/index.js +10 -0
- package/src/permission/remove.js +145 -0
- package/src/plugin/delete.js +2 -2
- package/src/plugin/doc.js +2 -2
- package/src/plugin/docs/devguide.md +29 -29
- package/src/profile/create.js +5 -5
- package/src/profile/delete.js +2 -2
- package/src/profile/doc.js +2 -2
- package/src/profile/docs/devguide.md +8 -8
- package/src/profile/docs/introduction.md +12 -12
- package/src/profile/get.js +1 -1
- package/src/project/docs/devguide.md +9 -8
- package/src/recordType/create.js +1 -1
- package/src/recordType/delete.js +1 -1
- package/src/recordType/doc.js +2 -2
- package/src/recordType/docs/devguide.md +10 -10
- package/src/recordType/editInfo.js +1 -1
- package/src/recordType/editSave.js +1 -1
- package/src/recordType/getList.js +1 -1
- package/src/recordType/newInfo.js +1 -1
- package/src/recordType/validDelete.js +1 -1
- package/src/res.md +1 -1
- package/src/role/create.js +6 -6
- package/src/role/delete.js +2 -2
- package/src/role/doc.js +2 -2
- package/src/role/docs/devguide.md +9 -9
- package/src/role/docs/introduction.md +13 -13
- package/src/role/get.js +1 -1
- package/src/scheduleJob/doc.js +1 -1
- package/src/scheduleJob/docs/devguide.md +6 -6
- package/src/scheduleJob/docs/introduction.md +6 -6
- package/src/script/docs/devguide.md +18 -18
- package/src/singleSignOn/delete.js +61 -0
- package/src/singleSignOn/doc.js +46 -0
- package/src/singleSignOn/docs/devguide.md +61 -0
- package/src/singleSignOn/docs/introduction.md +3 -0
- package/src/singleSignOn/get.js +70 -0
- package/src/singleSignOn/index.js +10 -0
- package/src/staticResource/count.js +1 -1
- package/src/staticResource/create.js +1 -1
- package/src/staticResource/delete.js +1 -1
- package/src/staticResource/detail.js +1 -1
- package/src/staticResource/docs/devguide.md +11 -11
- package/src/staticResource/docs/introduction.md +44 -1
- package/src/staticResource/get.js +1 -1
- package/src/timer/create.js +1 -1
- package/src/timer/delete.js +1 -1
- package/src/timer/detail.js +1 -1
- package/src/timer/doc.js +2 -2
- package/src/timer/docs/devguide.md +19 -19
- package/src/timer/get.js +1 -1
- package/src/timer/publish.js +1 -1
- package/src/timer/pull.js +1 -1
- package/src/timer/pullList.js +1 -1
- package/src/triggers/detail.js +1 -1
- package/src/triggers/doc.js +2 -2
- package/src/triggers/docs/devguide.md +23 -23
- package/src/triggers/get.js +1 -1
- package/src/triggers/pullList.js +1 -1
- package/src/user/create.js +2 -2
- package/src/user/delete.js +2 -2
- package/src/user/doc.js +2 -2
- package/src/user/docs/devguide.md +13 -13
- package/src/user/docs/introduction.md +12 -12
- package/src/user/get.js +1 -1
- package/src/user/update.js +3 -3
- package/src/user/view.js +2 -2
- package/src/validationRule/create.js +7 -7
- package/src/validationRule/delete.js +2 -2
- package/src/validationRule/doc.js +2 -2
- package/src/validationRule/docs/devguide.md +7 -7
- package/src/validationRule/docs/introduction.md +11 -11
- package/src/validationRule/get.js +1 -1
- package/src/version/actionHelp.js +25 -0
- package/src/version/docs.js +26 -0
- package/src/version/doctor.js +25 -0
- package/src/version/get.js +1 -1
- package/src/version/help.js +48 -0
- package/src/version/index.js +9 -2
- package/src/version/initHelp.js +13 -0
- package/src/version/listModuleCommands.js +241 -0
- package/src/version/stats.js +44 -0
- package/src/version/uninstall.js +30 -0
- package/src/version/update.js +13 -0
- package/test/application.cli.test.js +1 -1
- package/test/classes.cli.test.js +1 -1
- package/test/customSetting.cli.test.js +1 -1
- package/test/fields.cli.test.js +2 -2
- package/test/globalSelectList.cli.test.js +1 -1
- package/test/menu-script.cli.test.js +1 -1
- package/test/menu.cli.test.js +1 -1
- package/test/object.cli.test.js +1 -1
- package/test/plugin.cli.test.js +1 -1
- package/test/scheduleJob.cli.test.js +1 -1
- package/test/script.cli.test.js +1 -1
- package/test/staticResource.cli.test.js +1 -1
- package/test/timer.cli.test.js +1 -1
- package/test/trigger.cli.test.js +1 -1
- package/utils/checkVersion.js +27 -2
- package/utils/commandStats.js +94 -0
- package/utils/formatReleaseNotes.js +312 -0
- package/utils/readmeReleases.js +69 -0
- package/.cloudcc-cache.json +0 -54
- package/.cursor/skills/cloudcc-cli-dev.zip +0 -0
- package/.cursor/skills/cloudcc-dev-usage/SKILL.md +0 -68
- package/build/component-cc-cc-dd.common.js +0 -831
- package/build/component-cc-cc-dd.common.js.map +0 -1
- package/build/component-cc-cc-dd.css +0 -1
- package/build/component-cc-cc-dd.umd.js +0 -874
- package/build/component-cc-cc-dd.umd.js.map +0 -1
- package/build/component-cc-cc-dd.umd.min.js +0 -8
- package/build/component-cc-cc-dd.umd.min.js.map +0 -1
- package/build/demo.html +0 -1
- package/plugins/cc-cc-dd/cc-cc-dd.vue +0 -32
- package/plugins/cc-cc-dd/components/HelloWorld.vue +0 -11
- package/plugins/cc-cc-dd/config.json +0 -6
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
### 创建验证规则
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
|
|
16
|
+
cloudcc create validationRule <path> <objectPrefix> [ruleName] [ruleContent] [errorMessage]
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
**参数说明:**
|
|
@@ -30,16 +30,16 @@ cc create validationRule <path> <objectPrefix> [ruleName] [ruleContent] [errorMe
|
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
32
|
# 交互式输入所有信息
|
|
33
|
-
|
|
33
|
+
cloudcc create validationRule . "b00"
|
|
34
34
|
|
|
35
35
|
# 非交互式创建
|
|
36
|
-
|
|
36
|
+
cloudcc create validationRule . "b00" "规则1" "Batch_Size__c__f==5" "数量必须是5"
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
### 查询验证规则列表
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
|
|
42
|
+
cloudcc get validationRule <projectPath> <objectPrefix>
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
**参数说明:**
|
|
@@ -53,13 +53,13 @@ cc get validationRule <projectPath> <objectPrefix>
|
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
55
|
# 获取对象 b00 的所有验证规则
|
|
56
|
-
|
|
56
|
+
cloudcc get validationRule . "b00"
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
### 删除验证规则
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
|
|
62
|
+
cloudcc delete validationRule <projectPath> <ruleId>
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
**参数说明:**
|
|
@@ -72,5 +72,5 @@ cc delete validationRule <projectPath> <ruleId>
|
|
|
72
72
|
**示例:**
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
|
|
75
|
+
cloudcc delete validationRule . 202689E55795D38oAQlN
|
|
76
76
|
```
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
创建一个新的 CloudCC 验证规则。
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
|
|
26
|
+
cloudcc create validationRule <path> <objectPrefix> [ruleName] [ruleContent] [errorMessage]
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
**参数说明:**
|
|
@@ -40,10 +40,10 @@ cc create validationRule <path> <objectPrefix> [ruleName] [ruleContent] [errorMe
|
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
42
|
# 交互式输入所有信息
|
|
43
|
-
|
|
43
|
+
cloudcc create validationRule . "b00"
|
|
44
44
|
|
|
45
45
|
# 非交互式创建
|
|
46
|
-
|
|
46
|
+
cloudcc create validationRule . "b00" "规则1" "Batch_Size__c__f==5" "数量必须是5"
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
---
|
|
@@ -53,7 +53,7 @@ cc create validationRule . "b00" "规则1" "Batch_Size__c__f==5" "数量必须
|
|
|
53
53
|
获取指定对象的所有验证规则列表。
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
|
-
|
|
56
|
+
cloudcc get validationRule <projectPath> <objectPrefix>
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
**参数说明:**
|
|
@@ -67,7 +67,7 @@ cc get validationRule <projectPath> <objectPrefix>
|
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
69
|
# 获取对象 b00 的所有验证规则
|
|
70
|
-
|
|
70
|
+
cloudcc get validationRule . "b00"
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
---
|
|
@@ -77,7 +77,7 @@ cc get validationRule . "b00"
|
|
|
77
77
|
删除指定的验证规则。
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
|
-
|
|
80
|
+
cloudcc delete validationRule <projectPath> <ruleId>
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
**参数说明:**
|
|
@@ -91,7 +91,7 @@ cc delete validationRule <projectPath> <ruleId>
|
|
|
91
91
|
|
|
92
92
|
```bash
|
|
93
93
|
# 删除指定规则
|
|
94
|
-
|
|
94
|
+
cloudcc delete validationRule . 202689E55795D38oAQlN
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
---
|
|
@@ -105,16 +105,16 @@ cc delete validationRule . 202689E55795D38oAQlN
|
|
|
105
105
|
cat cloudcc-cli.config.js
|
|
106
106
|
|
|
107
107
|
# 2. 查询对象现有的验证规则
|
|
108
|
-
|
|
108
|
+
cloudcc get validationRule . "b00"
|
|
109
109
|
|
|
110
110
|
# 3. 创建新验证规则
|
|
111
|
-
|
|
111
|
+
cloudcc create validationRule . "b00"
|
|
112
112
|
|
|
113
113
|
# 4. 验证规则创建成功
|
|
114
|
-
|
|
114
|
+
cloudcc get validationRule . "b00"
|
|
115
115
|
|
|
116
116
|
# 5. 如需删除
|
|
117
|
-
#
|
|
117
|
+
# cloudcc delete validationRule . <ruleId>
|
|
118
118
|
```
|
|
119
119
|
|
|
120
120
|
---
|
|
@@ -3,7 +3,7 @@ const { getPackageJson } = require("../../utils/config");
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* 查询验证规则列表
|
|
6
|
-
* 用法:
|
|
6
|
+
* 用法:cloudcc get validationRule <projectPath> <objectPrefix>
|
|
7
7
|
* 接口:POST /api/validateRule/queryByPrefix
|
|
8
8
|
* 参数:{ prefix: "b00" }
|
|
9
9
|
*/
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const chalk = require("chalk")
|
|
2
|
+
const { getResourcesForAction } = require("./listModuleCommands")
|
|
3
|
+
|
|
4
|
+
function actionHelp(argvs) {
|
|
5
|
+
const action = argvs[0]
|
|
6
|
+
const list = getResourcesForAction(action)
|
|
7
|
+
console.error()
|
|
8
|
+
if (list.length === 0) {
|
|
9
|
+
console.error(chalk.yellow(`没有 resource 支持 action「${action}」。`))
|
|
10
|
+
console.error(chalk.gray("运行 ") + chalk.green("cloudcc --help") + chalk.gray(" 查看全部命令。"))
|
|
11
|
+
console.error()
|
|
12
|
+
return
|
|
13
|
+
}
|
|
14
|
+
console.error(chalk.bold.cyan(`cloudcc ${action}`) + chalk.gray(" <resource> [args...]"))
|
|
15
|
+
console.error()
|
|
16
|
+
console.error(chalk.yellow("可用的 resource:"))
|
|
17
|
+
for (const r of list) {
|
|
18
|
+
console.error(" " + chalk.green(r))
|
|
19
|
+
}
|
|
20
|
+
console.error()
|
|
21
|
+
console.error(chalk.gray("示例:") + chalk.green(`cloudcc ${action} ${list[0]}`) + chalk.gray(" <后续参数见各模块文档>"))
|
|
22
|
+
console.error()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
module.exports = actionHelp
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const { spawn } = require("child_process")
|
|
2
|
+
const chalk = require("chalk")
|
|
3
|
+
|
|
4
|
+
const HELP_CENTER = "https://help.cloudcc.cn/"
|
|
5
|
+
|
|
6
|
+
function docs() {
|
|
7
|
+
const url = HELP_CENTER
|
|
8
|
+
try {
|
|
9
|
+
if (process.platform === "win32") {
|
|
10
|
+
spawn("cmd", ["/c", "start", "", url], { detached: true, stdio: "ignore" }).unref()
|
|
11
|
+
} else if (process.platform === "darwin") {
|
|
12
|
+
spawn("open", [url], { detached: true, stdio: "ignore" }).unref()
|
|
13
|
+
} else {
|
|
14
|
+
spawn("xdg-open", [url], { detached: true, stdio: "ignore" }).unref()
|
|
15
|
+
}
|
|
16
|
+
console.error()
|
|
17
|
+
console.error(chalk.green("已在浏览器打开:") + chalk.cyan(url))
|
|
18
|
+
console.error()
|
|
19
|
+
} catch (e) {
|
|
20
|
+
console.error()
|
|
21
|
+
console.error(chalk.yellow("无法自动打开浏览器,请手动访问:"), chalk.cyan(url))
|
|
22
|
+
console.error()
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
module.exports = docs
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const fs = require("fs")
|
|
2
|
+
const path = require("path")
|
|
3
|
+
const chalk = require("chalk")
|
|
4
|
+
const pkg = require("../../package.json")
|
|
5
|
+
|
|
6
|
+
function doctor() {
|
|
7
|
+
console.error()
|
|
8
|
+
console.error(chalk.bold.cyan("cloudcc doctor") + chalk.gray(" — 环境自检"))
|
|
9
|
+
console.error()
|
|
10
|
+
console.error(chalk.green("✓") + " Node " + process.version)
|
|
11
|
+
console.error(chalk.green("✓") + " cloudcc-cli v" + pkg.version)
|
|
12
|
+
|
|
13
|
+
const cwd = process.cwd()
|
|
14
|
+
const configPath = path.join(cwd, "cloudcc-cli.config.js")
|
|
15
|
+
if (fs.existsSync(configPath)) {
|
|
16
|
+
console.error(chalk.green("✓") + " 当前目录存在 cloudcc-cli.config.js")
|
|
17
|
+
} else {
|
|
18
|
+
console.error(
|
|
19
|
+
chalk.yellow("○") + " 当前目录未找到 cloudcc-cli.config.js(若在本目录开发 CloudCC 项目,请先初始化或放入配置)"
|
|
20
|
+
)
|
|
21
|
+
}
|
|
22
|
+
console.error()
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
module.exports = doctor
|
package/src/version/get.js
CHANGED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const chalk = require("chalk")
|
|
2
|
+
const pkg = require("../../package.json")
|
|
3
|
+
const { getModuleGroups, describeActionLine } = require("./listModuleCommands")
|
|
4
|
+
|
|
5
|
+
function help() {
|
|
6
|
+
console.error()
|
|
7
|
+
console.error(chalk.bold.cyan("cloudcc-cli (cc / cloudcc)") + chalk.gray(` v${pkg.version}`))
|
|
8
|
+
console.error(chalk.dim(" 与系统 C 编译器 cc 冲突时请使用 cloudcc"))
|
|
9
|
+
console.error()
|
|
10
|
+
console.error(chalk.yellow("Usage:"))
|
|
11
|
+
console.error(" " + chalk.green("cc") + " / " + chalk.green("cloudcc") + " <action> <resource> [args...]")
|
|
12
|
+
console.error()
|
|
13
|
+
console.error(chalk.yellow("Global:"))
|
|
14
|
+
console.error(" " + chalk.green("cloudcc --help") + ", " + chalk.green("-h") + ", " + chalk.green("cloudcc help") + " 显示本帮助")
|
|
15
|
+
console.error(" " + chalk.green("cloudcc --version") + ", " + chalk.green("-v") + " 打印版本号")
|
|
16
|
+
console.error(" " + chalk.green("cloudcc update") + " 升级全局 cloudcc-cli")
|
|
17
|
+
console.error(" " + chalk.green("cloudcc uninstall") + " 卸载全局 cloudcc-cli")
|
|
18
|
+
console.error(" " + chalk.green("cloudcc doctor") + " 环境自检(Node、配置、CLI 版本)")
|
|
19
|
+
console.error(" " + chalk.green("cloudcc docs") + " 在浏览器打开 CloudCC 帮助中心")
|
|
20
|
+
console.error(" " + chalk.green("cloudcc stats") + " 查看本地命令调用统计(默认开启," + chalk.gray("CLOUDCC_CLI_STATS=0") + " 可关闭)")
|
|
21
|
+
console.error(" " + chalk.green("cloudcc init") + " [项目名] 等同于 cloudcc create project")
|
|
22
|
+
console.error(" " + chalk.green("cloudcc <action> -h") + " 查看该 action 下可用的 resource")
|
|
23
|
+
console.error()
|
|
24
|
+
console.error(chalk.yellow("模块 (resource)"))
|
|
25
|
+
console.error()
|
|
26
|
+
|
|
27
|
+
const groups = getModuleGroups()
|
|
28
|
+
for (const { resources, actions } of groups) {
|
|
29
|
+
const title = resources.join(" / ")
|
|
30
|
+
console.error(chalk.bold.white(" " + title))
|
|
31
|
+
const ex = resources[0]
|
|
32
|
+
for (const a of actions) {
|
|
33
|
+
const cmd = "cloudcc " + a + " " + ex
|
|
34
|
+
const note = describeActionLine(ex, a)
|
|
35
|
+
console.error(" " + chalk.green(cmd) + " " + chalk.gray(note))
|
|
36
|
+
}
|
|
37
|
+
console.error()
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
console.error(chalk.yellow("Examples:"))
|
|
41
|
+
console.error(" " + chalk.gray("cloudcc doc object introduction"))
|
|
42
|
+
console.error(" " + chalk.gray("cloudcc get object Account"))
|
|
43
|
+
console.error()
|
|
44
|
+
console.error(chalk.gray("Developer docs: https://help.cloudcc.cn/"))
|
|
45
|
+
console.error()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
module.exports = help
|
package/src/version/index.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
const cc = {}
|
|
2
2
|
cc.get = require("./get")
|
|
3
|
+
cc.help = require("./help")
|
|
4
|
+
cc.update = require("./update")
|
|
5
|
+
cc.uninstall = require("./uninstall")
|
|
3
6
|
|
|
4
7
|
function Version(action, argvs) {
|
|
5
|
-
cc[action]
|
|
8
|
+
const fn = cc[action]
|
|
9
|
+
if (!fn) {
|
|
10
|
+
throw new Error(`version: unsupported action ${action}`)
|
|
11
|
+
}
|
|
12
|
+
return Promise.resolve(fn(argvs))
|
|
6
13
|
}
|
|
7
14
|
|
|
8
|
-
module.exports = Version
|
|
15
|
+
module.exports = Version
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const chalk = require("chalk")
|
|
2
|
+
|
|
3
|
+
function initHelp() {
|
|
4
|
+
console.error()
|
|
5
|
+
console.error(chalk.bold.cyan("cloudcc init") + chalk.gray(" — 与 ") + chalk.green("cloudcc create project") + chalk.gray(" 相同"))
|
|
6
|
+
console.error()
|
|
7
|
+
console.error(chalk.yellow("用法:"))
|
|
8
|
+
console.error(" " + chalk.green("cloudcc init") + " [项目名]")
|
|
9
|
+
console.error(chalk.gray(" 不传项目名时进入交互式创建。"))
|
|
10
|
+
console.error()
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
module.exports = initHelp
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
const fs = require("fs")
|
|
2
|
+
const path = require("path")
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 与 bin/index.js 中 modules 的 key 顺序、以及各 require 路径一致。
|
|
6
|
+
* schedule 与 timer 均指向 src/timer。
|
|
7
|
+
*/
|
|
8
|
+
const MODULE_KEYS_ORDER = [
|
|
9
|
+
"project",
|
|
10
|
+
"plugin",
|
|
11
|
+
"classes",
|
|
12
|
+
"customSetting",
|
|
13
|
+
"globalSelectList",
|
|
14
|
+
"button",
|
|
15
|
+
"staticResource",
|
|
16
|
+
"customPage",
|
|
17
|
+
"schedule",
|
|
18
|
+
"triggers",
|
|
19
|
+
"timer",
|
|
20
|
+
"script",
|
|
21
|
+
"token",
|
|
22
|
+
"object",
|
|
23
|
+
"recordType",
|
|
24
|
+
"config",
|
|
25
|
+
"version",
|
|
26
|
+
"brief",
|
|
27
|
+
"fields",
|
|
28
|
+
"menu",
|
|
29
|
+
"application",
|
|
30
|
+
"scheduleJob",
|
|
31
|
+
"profile",
|
|
32
|
+
"user",
|
|
33
|
+
"role",
|
|
34
|
+
"identityProvider",
|
|
35
|
+
"singleSignOn",
|
|
36
|
+
"pagelayout",
|
|
37
|
+
"validationRule",
|
|
38
|
+
"permission",
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* 各 resource 一句话说明(供 --help 展示)。与自动解析的 action 列表互补,不替代 `cloudcc doc <resource> introduction`。
|
|
43
|
+
*/
|
|
44
|
+
const MODULE_HINT = {
|
|
45
|
+
project: "创建/初始化 CloudCC 开发项目。",
|
|
46
|
+
plugin: "自定义组件:创建、发布、拉取、删除与文档。",
|
|
47
|
+
classes: "自定义类:服务端 Java 业务逻辑,与平台同步,可供按钮、触发器、定时类等调用。",
|
|
48
|
+
customSetting: "自定义设置:查询、创建、字段维护等。",
|
|
49
|
+
globalSelectList: "全局选项列表。",
|
|
50
|
+
button: "自定义按钮。",
|
|
51
|
+
staticResource: "静态资源上传与管理。",
|
|
52
|
+
customPage: "自定义页面。",
|
|
53
|
+
schedule: "定时类(Scheduled Class):与平台同步 Java 与配置(resource 亦可用 timer)。",
|
|
54
|
+
triggers: "触发器:本地 Java 与平台同步。",
|
|
55
|
+
script: "客户端脚本:创建、发布、拉取等。",
|
|
56
|
+
token: "访问令牌/凭证。",
|
|
57
|
+
object: "标准对象与自定义对象。",
|
|
58
|
+
recordType: "记录类型。",
|
|
59
|
+
config: "配置与切换。",
|
|
60
|
+
version: "版本信息、帮助与全局安装维护(非业务资源)。",
|
|
61
|
+
brief: "摘要/概要信息。",
|
|
62
|
+
fields: "对象字段。",
|
|
63
|
+
menu: "菜单。",
|
|
64
|
+
application: "应用。",
|
|
65
|
+
scheduleJob: "计划任务(平台侧任务)。",
|
|
66
|
+
profile: "简档。",
|
|
67
|
+
user: "用户。",
|
|
68
|
+
role: "角色。",
|
|
69
|
+
identityProvider: "身份提供商(IdP)。",
|
|
70
|
+
singleSignOn: "单点登录(SSO)配置。",
|
|
71
|
+
pagelayout: "页面布局。",
|
|
72
|
+
validationRule: "验证规则。",
|
|
73
|
+
permission: "权限:分配、查询、增删等。",
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const MODULE_FOLDER = {
|
|
77
|
+
project: "project",
|
|
78
|
+
plugin: "plugin",
|
|
79
|
+
classes: "classes",
|
|
80
|
+
customSetting: "customSetting",
|
|
81
|
+
globalSelectList: "globalSelectList",
|
|
82
|
+
button: "button",
|
|
83
|
+
staticResource: "staticResource",
|
|
84
|
+
customPage: "customPage",
|
|
85
|
+
schedule: "timer",
|
|
86
|
+
triggers: "triggers",
|
|
87
|
+
timer: "timer",
|
|
88
|
+
script: "script",
|
|
89
|
+
token: "token",
|
|
90
|
+
object: "object",
|
|
91
|
+
recordType: "recordType",
|
|
92
|
+
config: "config",
|
|
93
|
+
version: "version",
|
|
94
|
+
brief: "brief",
|
|
95
|
+
fields: "fields",
|
|
96
|
+
menu: "menu",
|
|
97
|
+
application: "application",
|
|
98
|
+
scheduleJob: "scheduleJob",
|
|
99
|
+
profile: "profile",
|
|
100
|
+
user: "user",
|
|
101
|
+
role: "role",
|
|
102
|
+
identityProvider: "identityProvider",
|
|
103
|
+
singleSignOn: "singleSignOn",
|
|
104
|
+
pagelayout: "pagelayout",
|
|
105
|
+
validationRule: "validationRule",
|
|
106
|
+
permission: "permission",
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function extractActions(indexFilePath) {
|
|
110
|
+
const src = fs.readFileSync(indexFilePath, "utf8")
|
|
111
|
+
const actions = new Set()
|
|
112
|
+
const re = /^\s*cc\.(\w+)\s*=/gm
|
|
113
|
+
let m
|
|
114
|
+
while ((m = re.exec(src))) {
|
|
115
|
+
actions.add(m[1])
|
|
116
|
+
}
|
|
117
|
+
return Array.from(actions).sort()
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* 按 index.js 文件合并资源名(如 timer 与 schedule),顺序与 MODULE_KEYS_ORDER 一致。
|
|
122
|
+
*/
|
|
123
|
+
function getModuleGroups() {
|
|
124
|
+
const seen = new Map()
|
|
125
|
+
for (const key of MODULE_KEYS_ORDER) {
|
|
126
|
+
const folder = MODULE_FOLDER[key]
|
|
127
|
+
const abs = path.join(__dirname, "..", folder, "index.js")
|
|
128
|
+
if (!seen.has(abs)) {
|
|
129
|
+
seen.set(abs, { resources: [], indexPath: abs })
|
|
130
|
+
}
|
|
131
|
+
seen.get(abs).resources.push(key)
|
|
132
|
+
}
|
|
133
|
+
return Array.from(seen.values()).map((g) => ({
|
|
134
|
+
resources: g.resources,
|
|
135
|
+
actions: extractActions(g.indexPath),
|
|
136
|
+
hint: describeModuleGroup(g.resources),
|
|
137
|
+
}))
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
function describeModuleGroup(resources) {
|
|
141
|
+
const sorted = [...resources].sort()
|
|
142
|
+
if (sorted.length === 2 && sorted[0] === "schedule" && sorted[1] === "timer") {
|
|
143
|
+
return "定时类(Scheduled Class):与平台同步 Java 与配置(resource 可用 schedule 或 timer)。"
|
|
144
|
+
}
|
|
145
|
+
const r0 = resources[0]
|
|
146
|
+
return MODULE_HINT[r0] || ""
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/** resource 中文名,用于拼「创建 xxx」等行内说明 */
|
|
150
|
+
const RESOURCE_CN = {
|
|
151
|
+
project: "项目",
|
|
152
|
+
plugin: "自定义组件",
|
|
153
|
+
classes: "自定义类",
|
|
154
|
+
customSetting: "自定义设置",
|
|
155
|
+
globalSelectList: "全局选项列表",
|
|
156
|
+
button: "自定义按钮",
|
|
157
|
+
staticResource: "静态资源",
|
|
158
|
+
customPage: "自定义页面",
|
|
159
|
+
schedule: "定时类",
|
|
160
|
+
timer: "定时类",
|
|
161
|
+
triggers: "触发器",
|
|
162
|
+
script: "客户端脚本",
|
|
163
|
+
token: "访问令牌",
|
|
164
|
+
object: "对象",
|
|
165
|
+
recordType: "记录类型",
|
|
166
|
+
config: "配置",
|
|
167
|
+
version: "版本",
|
|
168
|
+
brief: "摘要",
|
|
169
|
+
fields: "字段",
|
|
170
|
+
menu: "菜单",
|
|
171
|
+
application: "应用",
|
|
172
|
+
scheduleJob: "计划任务",
|
|
173
|
+
profile: "简档",
|
|
174
|
+
user: "用户",
|
|
175
|
+
role: "角色",
|
|
176
|
+
identityProvider: "身份提供商",
|
|
177
|
+
singleSignOn: "单点登录",
|
|
178
|
+
pagelayout: "页面布局",
|
|
179
|
+
validationRule: "验证规则",
|
|
180
|
+
permission: "权限",
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* 单行命令说明(替代行尾「…」),与 cloudcc <action> <resource> 对应。
|
|
185
|
+
*/
|
|
186
|
+
function describeActionLine(resource, action) {
|
|
187
|
+
const n = RESOURCE_CN[resource] || resource
|
|
188
|
+
const line = {
|
|
189
|
+
create: () => `创建${n}`,
|
|
190
|
+
get: () => `查询${n}`,
|
|
191
|
+
delete: () => `删除${n}`,
|
|
192
|
+
doc: () => `查看${n}文档(子命令如 introduction、devguide)`,
|
|
193
|
+
publish: () => `将本地${n}发布到平台`,
|
|
194
|
+
pull: () => `从平台拉取${n}到本地`,
|
|
195
|
+
pullList: () => `按列表批量拉取${n}`,
|
|
196
|
+
detail: () => `查看${n}详情`,
|
|
197
|
+
assign: () => `分配${n}`,
|
|
198
|
+
add: () => `添加${n}`,
|
|
199
|
+
remove: () => `移除${n}`,
|
|
200
|
+
update: () => (resource === "version" ? "升级全局 cloudcc-cli" : `更新${n}`),
|
|
201
|
+
view: () => `查看${n}信息`,
|
|
202
|
+
use: () => `切换使用的${n}`,
|
|
203
|
+
count: () => `统计${n}数量`,
|
|
204
|
+
modify: () => `修改${n}`,
|
|
205
|
+
download: () => `下载${n}相关文件`,
|
|
206
|
+
getList: () => `获取${n}列表`,
|
|
207
|
+
newInfo: () => `获取新建${n}所需信息`,
|
|
208
|
+
editInfo: () => `获取编辑${n}前信息`,
|
|
209
|
+
editSave: () => `保存${n}编辑`,
|
|
210
|
+
validDelete: () => `校验${n}是否可删除`,
|
|
211
|
+
deleteCustomSettingField: () => `删除自定义设置中的字段`,
|
|
212
|
+
editCustomSettingField: () => `编辑自定义设置字段`,
|
|
213
|
+
saveCustomSettingField: () => `保存自定义设置字段`,
|
|
214
|
+
help: () => (resource === "version" ? "(内部)帮助" : `查看 ${n} 帮助`),
|
|
215
|
+
uninstall: () => (resource === "version" ? "卸载全局 cloudcc-cli" : `卸载 ${n}`),
|
|
216
|
+
}
|
|
217
|
+
if (line[action]) {
|
|
218
|
+
return line[action]()
|
|
219
|
+
}
|
|
220
|
+
return `${action} · ${n}`
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* 返回支持给定 action 的所有 resource 名(去重、排序)。
|
|
225
|
+
*/
|
|
226
|
+
function getResourcesForAction(actionName) {
|
|
227
|
+
const groups = getModuleGroups()
|
|
228
|
+
const out = new Set()
|
|
229
|
+
for (const g of groups) {
|
|
230
|
+
if (g.actions.includes(actionName)) {
|
|
231
|
+
g.resources.forEach((r) => out.add(r))
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return Array.from(out).sort((a, b) => a.localeCompare(b))
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
module.exports = {
|
|
238
|
+
getModuleGroups,
|
|
239
|
+
describeActionLine,
|
|
240
|
+
getResourcesForAction,
|
|
241
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
const chalk = require("chalk")
|
|
2
|
+
const {
|
|
3
|
+
readStats,
|
|
4
|
+
isEnabled,
|
|
5
|
+
statsFilePath,
|
|
6
|
+
} = require("../../utils/commandStats")
|
|
7
|
+
|
|
8
|
+
function stats() {
|
|
9
|
+
const data = readStats()
|
|
10
|
+
const entries = Object.entries(data.counts || {}).sort((a, b) => b[1] - a[1])
|
|
11
|
+
|
|
12
|
+
console.error()
|
|
13
|
+
console.error(chalk.bold.cyan("cloudcc command statistics"))
|
|
14
|
+
console.error(chalk.gray("File: ") + chalk.dim(statsFilePath()))
|
|
15
|
+
console.error(
|
|
16
|
+
chalk.gray("Recording: ") +
|
|
17
|
+
(isEnabled()
|
|
18
|
+
? chalk.green("ON")
|
|
19
|
+
: chalk.yellow("OFF — remove CLOUDCC_CLI_STATS or set 1/true to record again"))
|
|
20
|
+
)
|
|
21
|
+
if (data.updatedAt) {
|
|
22
|
+
console.error(chalk.gray("Last update: ") + chalk.dim(data.updatedAt))
|
|
23
|
+
}
|
|
24
|
+
console.error()
|
|
25
|
+
|
|
26
|
+
if (entries.length === 0) {
|
|
27
|
+
console.error(chalk.dim(" (no data yet)"))
|
|
28
|
+
console.error()
|
|
29
|
+
return
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
console.error(chalk.gray(" command → count"))
|
|
33
|
+
for (const [key, n] of entries) {
|
|
34
|
+
console.error(
|
|
35
|
+
" " +
|
|
36
|
+
chalk.green(key) +
|
|
37
|
+
chalk.gray(" → ") +
|
|
38
|
+
chalk.bold.white(String(n))
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
console.error()
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
module.exports = stats
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const chalk = require("chalk")
|
|
2
|
+
const inquirer = require("inquirer")
|
|
3
|
+
const exec = require("child_process").execSync
|
|
4
|
+
|
|
5
|
+
async function uninstall() {
|
|
6
|
+
const { confirm } = await inquirer.prompt([
|
|
7
|
+
{
|
|
8
|
+
type: "confirm",
|
|
9
|
+
name: "confirm",
|
|
10
|
+
default: false,
|
|
11
|
+
message: "Uninstall global package cloudcc-cli?",
|
|
12
|
+
},
|
|
13
|
+
])
|
|
14
|
+
if (!confirm) {
|
|
15
|
+
console.error(chalk.yellow("Cancelled."))
|
|
16
|
+
return
|
|
17
|
+
}
|
|
18
|
+
const os = process.platform
|
|
19
|
+
const prefix = os === "darwin" ? "sudo " : ""
|
|
20
|
+
try {
|
|
21
|
+
console.error(chalk.green("Uninstalling..."))
|
|
22
|
+
exec(`${prefix}npm uninstall -g cloudcc-cli`, { stdio: "inherit" })
|
|
23
|
+
console.error(chalk.green("Done."))
|
|
24
|
+
} catch (e) {
|
|
25
|
+
console.error(chalk.red("Uninstall failed."), e.message || e)
|
|
26
|
+
process.exitCode = 1
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
module.exports = uninstall
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const chalk = require("chalk")
|
|
2
|
+
const { checkNpmVersion, update } = require("../../utils/checkVersion")
|
|
3
|
+
|
|
4
|
+
function runUpdate() {
|
|
5
|
+
const onlineVersion = checkNpmVersion()
|
|
6
|
+
if (!onlineVersion) {
|
|
7
|
+
console.error(chalk.green("\ncloudcc-cli is already up to date.\n"))
|
|
8
|
+
return
|
|
9
|
+
}
|
|
10
|
+
update(onlineVersion)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
module.exports = runUpdate
|
|
@@ -12,7 +12,7 @@ function quoteArg(value) {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
async function runCc(args) {
|
|
15
|
-
const cmd = `npx --prefix "${repoRoot}"
|
|
15
|
+
const cmd = `npx --prefix "${repoRoot}" cloudcc ${args.map(quoteArg).join(" ")}`;
|
|
16
16
|
return execAsync(cmd, { cwd: repoRoot });
|
|
17
17
|
}
|
|
18
18
|
|
package/test/classes.cli.test.js
CHANGED
|
@@ -13,7 +13,7 @@ function quoteArg(value) {
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
async function runCc(args) {
|
|
16
|
-
const cmd = `npx --prefix "${repoRoot}"
|
|
16
|
+
const cmd = `npx --prefix "${repoRoot}" cloudcc ${args.map(quoteArg).join(" ")}`;
|
|
17
17
|
return execAsync(cmd, { cwd: repoRoot });
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -12,7 +12,7 @@ function quoteArg(value) {
|
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
async function runCc(args) {
|
|
15
|
-
const cmd = `npx --prefix "${repoRoot}"
|
|
15
|
+
const cmd = `npx --prefix "${repoRoot}" cloudcc ${args.map(quoteArg).join(" ")}`;
|
|
16
16
|
return execAsync(cmd, { cwd: repoRoot });
|
|
17
17
|
}
|
|
18
18
|
|