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.
Files changed (244) hide show
  1. package/.claude/settings.json +22 -1
  2. package/.cursor/skills/cloudcc-cli-dev/SKILL.md +175 -0
  3. package/.cursor/skills/cloudcc-dev-skill/SKILL.md +71 -0
  4. package/README.md +81 -6
  5. package/bin/cc.js +106 -28
  6. package/bin/index.js +54 -55
  7. package/mcp/cliRunner.js +11 -4
  8. package/mcp/index.js +12 -2
  9. package/mcp/tools/Application Creator/handler.js +1 -1
  10. package/mcp/tools/Approval/handler.js +3 -3
  11. package/mcp/tools/Class Creator/handler.js +2 -2
  12. package/mcp/tools/Class Detail Retriever/handler.js +1 -1
  13. package/mcp/tools/Class Editor Guide/handler.js +1 -1
  14. package/mcp/tools/Class List Retriever/handler.js +1 -1
  15. package/mcp/tools/Class Publisher/handler.js +1 -1
  16. package/mcp/tools/Class Puller/handler.js +1 -1
  17. package/mcp/tools/Client Script Detail Retriever/handler.js +1 -1
  18. package/mcp/tools/Client Script Editor Guide/handler.js +1 -1
  19. package/mcp/tools/Client Script List Retriever/handler.js +1 -1
  20. package/mcp/tools/Client Script Publisher/handler.js +1 -1
  21. package/mcp/tools/Client Script Puller/handler.js +2 -2
  22. package/mcp/tools/CloudCC Development Overview/handler.js +2 -2
  23. package/mcp/tools/Component Creator/handler.js +1 -1
  24. package/mcp/tools/Component Detail Retriever/handler.js +1 -1
  25. package/mcp/tools/Component Editor Guide/handler.js +1 -1
  26. package/mcp/tools/Component List Retriever/handler.js +1 -1
  27. package/mcp/tools/Component Publisher/handler.js +2 -2
  28. package/mcp/tools/Component Puller/handler.js +1 -1
  29. package/mcp/tools/Dev Environment Creator/handler.js +1 -1
  30. package/mcp/tools/Dev Environment Validator/handler.js +1 -1
  31. package/mcp/tools/Developer Key Setup Guide/handler.js +1 -1
  32. package/mcp/tools/JSP Migrator/handler.js +46 -0
  33. package/mcp/tools/Menu Creator/handler.js +1 -1
  34. package/mcp/tools/Object Creator/handler.js +2 -2
  35. package/mcp/tools/Object Fields Creator/handler.js +1 -1
  36. package/mcp/tools/Object Fields Retriever/handler.js +1 -1
  37. package/mcp/tools/Object List Retriever/handler.js +1 -1
  38. package/mcp/tools/Scheduled Class Creator/handler.js +1 -1
  39. package/mcp/tools/Scheduled Class Detail Retriever/handler.js +1 -1
  40. package/mcp/tools/Scheduled Class List Retriever/handler.js +1 -1
  41. package/mcp/tools/Scheduled Class Publisher/handler.js +1 -1
  42. package/mcp/tools/Scheduled Class Puller/handler.js +1 -1
  43. package/mcp/tools/Trigger Creator/handler.js +1 -1
  44. package/mcp/tools/Trigger Detail Retriever/handler.js +1 -1
  45. package/mcp/tools/Trigger Editor Guide/handler.js +1 -1
  46. package/mcp/tools/Trigger List Retriever/handler.js +1 -1
  47. package/mcp/tools/Trigger Publisher/handler.js +1 -1
  48. package/mcp/tools/Trigger Puller/handler.js +1 -1
  49. package/package.json +3 -3
  50. package/src/application/create.js +2 -2
  51. package/src/application/delete.js +2 -2
  52. package/src/application/doc.js +2 -2
  53. package/src/application/docs/devguide.md +25 -25
  54. package/src/application/docs/introduction.md +2 -2
  55. package/src/button/create.js +169 -0
  56. package/src/button/delete.js +35 -0
  57. package/src/button/doc.js +36 -0
  58. package/src/button/docs/devguide.md +133 -0
  59. package/src/button/docs/introduction.md +60 -0
  60. package/src/button/get.js +60 -0
  61. package/src/button/index.js +20 -0
  62. package/src/classes/create.js +1 -1
  63. package/src/classes/delete.js +1 -1
  64. package/src/classes/detail.js +1 -1
  65. package/src/classes/doc.js +2 -2
  66. package/src/classes/docs/devguide.md +21 -21
  67. package/src/classes/docs/introduction.md +0 -20
  68. package/src/classes/get.js +1 -1
  69. package/src/classes/publish.js +1 -1
  70. package/src/classes/pull.js +1 -1
  71. package/src/classes/pullList.js +1 -1
  72. package/src/config/doc.js +2 -2
  73. package/src/config/docs/devguide.md +15 -15
  74. package/src/customPage/create.js +2 -2
  75. package/src/customPage/delete.js +2 -2
  76. package/src/customPage/doc.js +2 -2
  77. package/src/customPage/docs/devguide.md +27 -27
  78. package/src/customPage/get.js +1 -1
  79. package/src/customSetting/create.js +1 -1
  80. package/src/customSetting/delete.js +1 -1
  81. package/src/customSetting/deleteCustomSettingField.js +1 -1
  82. package/src/customSetting/detail.js +1 -1
  83. package/src/customSetting/docs/devguide.md +9 -9
  84. package/src/customSetting/editCustomSettingField.js +1 -1
  85. package/src/customSetting/get.js +1 -1
  86. package/src/customSetting/modify.js +1 -1
  87. package/src/customSetting/saveCustomSettingField.js +1 -1
  88. package/src/fields/delete.js +2 -2
  89. package/src/fields/docs/devguide.md +14 -14
  90. package/src/fields/docs/introduction.md +3 -3
  91. package/src/globalSelectList/create.js +1 -1
  92. package/src/globalSelectList/delete.js +1 -1
  93. package/src/globalSelectList/detail.js +1 -1
  94. package/src/globalSelectList/doc.js +2 -2
  95. package/src/globalSelectList/docs/devguide.md +7 -7
  96. package/src/globalSelectList/get.js +1 -1
  97. package/src/identityProvider/create.js +78 -0
  98. package/src/identityProvider/delete.js +61 -0
  99. package/src/identityProvider/doc.js +46 -0
  100. package/src/identityProvider/docs/devguide.md +107 -0
  101. package/src/identityProvider/docs/introduction.md +31 -0
  102. package/src/identityProvider/download.js +105 -0
  103. package/src/identityProvider/get.js +70 -0
  104. package/src/identityProvider/index.js +12 -0
  105. package/src/menu/create-object.js +2 -2
  106. package/src/menu/create-page.js +2 -2
  107. package/src/menu/create-script.js +2 -2
  108. package/src/menu/create-site.js +2 -2
  109. package/src/menu/create.js +11 -11
  110. package/src/menu/delete.js +2 -2
  111. package/src/menu/doc.js +2 -2
  112. package/src/menu/docs/devguide.md +13 -13
  113. package/src/menu/docs/introduction.md +3 -3
  114. package/src/menu/get.js +1 -1
  115. package/src/object/create.js +2 -2
  116. package/src/object/delete.js +2 -2
  117. package/src/object/docs/devguide.md +11 -11
  118. package/src/pagelayout/create.js +6 -6
  119. package/src/pagelayout/delete.js +4 -4
  120. package/src/pagelayout/doc.js +2 -2
  121. package/src/pagelayout/docs/devguide.md +9 -9
  122. package/src/pagelayout/docs/introduction.md +1 -1
  123. package/src/pagelayout/get.js +4 -4
  124. package/src/permission/add.js +164 -0
  125. package/src/permission/assign.js +84 -0
  126. package/src/permission/docs/devguide.md +238 -0
  127. package/src/permission/docs/introduction.md +200 -0
  128. package/src/permission/get.js +107 -0
  129. package/src/permission/index.js +10 -0
  130. package/src/permission/remove.js +145 -0
  131. package/src/plugin/delete.js +2 -2
  132. package/src/plugin/doc.js +2 -2
  133. package/src/plugin/docs/devguide.md +29 -29
  134. package/src/profile/create.js +5 -5
  135. package/src/profile/delete.js +2 -2
  136. package/src/profile/doc.js +2 -2
  137. package/src/profile/docs/devguide.md +8 -8
  138. package/src/profile/docs/introduction.md +12 -12
  139. package/src/profile/get.js +1 -1
  140. package/src/project/docs/devguide.md +9 -8
  141. package/src/recordType/create.js +1 -1
  142. package/src/recordType/delete.js +1 -1
  143. package/src/recordType/doc.js +2 -2
  144. package/src/recordType/docs/devguide.md +10 -10
  145. package/src/recordType/editInfo.js +1 -1
  146. package/src/recordType/editSave.js +1 -1
  147. package/src/recordType/getList.js +1 -1
  148. package/src/recordType/newInfo.js +1 -1
  149. package/src/recordType/validDelete.js +1 -1
  150. package/src/res.md +1 -1
  151. package/src/role/create.js +6 -6
  152. package/src/role/delete.js +2 -2
  153. package/src/role/doc.js +2 -2
  154. package/src/role/docs/devguide.md +9 -9
  155. package/src/role/docs/introduction.md +13 -13
  156. package/src/role/get.js +1 -1
  157. package/src/scheduleJob/doc.js +1 -1
  158. package/src/scheduleJob/docs/devguide.md +6 -6
  159. package/src/scheduleJob/docs/introduction.md +6 -6
  160. package/src/script/docs/devguide.md +18 -18
  161. package/src/singleSignOn/delete.js +61 -0
  162. package/src/singleSignOn/doc.js +46 -0
  163. package/src/singleSignOn/docs/devguide.md +61 -0
  164. package/src/singleSignOn/docs/introduction.md +3 -0
  165. package/src/singleSignOn/get.js +70 -0
  166. package/src/singleSignOn/index.js +10 -0
  167. package/src/staticResource/count.js +1 -1
  168. package/src/staticResource/create.js +1 -1
  169. package/src/staticResource/delete.js +1 -1
  170. package/src/staticResource/detail.js +1 -1
  171. package/src/staticResource/docs/devguide.md +11 -11
  172. package/src/staticResource/docs/introduction.md +44 -1
  173. package/src/staticResource/get.js +1 -1
  174. package/src/timer/create.js +1 -1
  175. package/src/timer/delete.js +1 -1
  176. package/src/timer/detail.js +1 -1
  177. package/src/timer/doc.js +2 -2
  178. package/src/timer/docs/devguide.md +19 -19
  179. package/src/timer/get.js +1 -1
  180. package/src/timer/publish.js +1 -1
  181. package/src/timer/pull.js +1 -1
  182. package/src/timer/pullList.js +1 -1
  183. package/src/triggers/detail.js +1 -1
  184. package/src/triggers/doc.js +2 -2
  185. package/src/triggers/docs/devguide.md +23 -23
  186. package/src/triggers/get.js +1 -1
  187. package/src/triggers/pullList.js +1 -1
  188. package/src/user/create.js +2 -2
  189. package/src/user/delete.js +2 -2
  190. package/src/user/doc.js +2 -2
  191. package/src/user/docs/devguide.md +13 -13
  192. package/src/user/docs/introduction.md +12 -12
  193. package/src/user/get.js +1 -1
  194. package/src/user/update.js +3 -3
  195. package/src/user/view.js +2 -2
  196. package/src/validationRule/create.js +7 -7
  197. package/src/validationRule/delete.js +2 -2
  198. package/src/validationRule/doc.js +2 -2
  199. package/src/validationRule/docs/devguide.md +7 -7
  200. package/src/validationRule/docs/introduction.md +11 -11
  201. package/src/validationRule/get.js +1 -1
  202. package/src/version/actionHelp.js +25 -0
  203. package/src/version/docs.js +26 -0
  204. package/src/version/doctor.js +25 -0
  205. package/src/version/get.js +1 -1
  206. package/src/version/help.js +48 -0
  207. package/src/version/index.js +9 -2
  208. package/src/version/initHelp.js +13 -0
  209. package/src/version/listModuleCommands.js +241 -0
  210. package/src/version/stats.js +44 -0
  211. package/src/version/uninstall.js +30 -0
  212. package/src/version/update.js +13 -0
  213. package/test/application.cli.test.js +1 -1
  214. package/test/classes.cli.test.js +1 -1
  215. package/test/customSetting.cli.test.js +1 -1
  216. package/test/fields.cli.test.js +2 -2
  217. package/test/globalSelectList.cli.test.js +1 -1
  218. package/test/menu-script.cli.test.js +1 -1
  219. package/test/menu.cli.test.js +1 -1
  220. package/test/object.cli.test.js +1 -1
  221. package/test/plugin.cli.test.js +1 -1
  222. package/test/scheduleJob.cli.test.js +1 -1
  223. package/test/script.cli.test.js +1 -1
  224. package/test/staticResource.cli.test.js +1 -1
  225. package/test/timer.cli.test.js +1 -1
  226. package/test/trigger.cli.test.js +1 -1
  227. package/utils/checkVersion.js +27 -2
  228. package/utils/commandStats.js +94 -0
  229. package/utils/formatReleaseNotes.js +312 -0
  230. package/utils/readmeReleases.js +69 -0
  231. package/.cloudcc-cache.json +0 -54
  232. package/.cursor/skills/cloudcc-cli-dev.zip +0 -0
  233. package/.cursor/skills/cloudcc-dev-usage/SKILL.md +0 -68
  234. package/build/component-cc-cc-dd.common.js +0 -831
  235. package/build/component-cc-cc-dd.common.js.map +0 -1
  236. package/build/component-cc-cc-dd.css +0 -1
  237. package/build/component-cc-cc-dd.umd.js +0 -874
  238. package/build/component-cc-cc-dd.umd.js.map +0 -1
  239. package/build/component-cc-cc-dd.umd.min.js +0 -8
  240. package/build/component-cc-cc-dd.umd.min.js.map +0 -1
  241. package/build/demo.html +0 -1
  242. package/plugins/cc-cc-dd/cc-cc-dd.vue +0 -32
  243. package/plugins/cc-cc-dd/components/HelloWorld.vue +0 -11
  244. package/plugins/cc-cc-dd/config.json +0 -6
@@ -0,0 +1,105 @@
1
+ const chalk = require("chalk");
2
+ const fs = require("fs");
3
+ const path = require("path");
4
+ const axios = require("axios");
5
+ const https = require("https");
6
+ const { getPackageJson } = require("../../utils/config");
7
+ const { postClass } = require("../../utils/http");
8
+
9
+ const httpsAgent = new https.Agent({
10
+ rejectUnauthorized: false,
11
+ });
12
+
13
+ /**
14
+ * 下载身份提供商证书
15
+ * 接口: /LoginHistory/getExportReportURL 获取下载链接,然后下载文件
16
+ * 用法:cloudcc download identityProvider <projectPath> [savePath]
17
+ */
18
+ async function download(argvs) {
19
+ try {
20
+ const projectPath = argvs[2] || process.cwd();
21
+ const savePath = argvs[3] || process.cwd();
22
+
23
+ const config = await getPackageJson(projectPath);
24
+ if (!config || !config.accessToken) {
25
+ console.error();
26
+ console.error(chalk.red("Error: 配置未找到或 accessToken 缺失"));
27
+ console.error();
28
+ throw new Error("配置未找到或 accessToken 缺失");
29
+ }
30
+
31
+ console.error();
32
+ console.error(chalk.green("Downloading certificate, please wait..."));
33
+ console.error();
34
+
35
+ // 确保证书保存目录存在
36
+ if (!fs.existsSync(savePath)) {
37
+ fs.mkdirSync(savePath, { recursive: true });
38
+ }
39
+
40
+ // 第一步:调用接口获取下载 URL
41
+ const result = await postClass(
42
+ config.setupSvc + "/api/LoginHistory/getExportReportURL",
43
+ {},
44
+ config.accessToken
45
+ );
46
+
47
+ if (result && result.result && result.data) {
48
+ const downloadUrl = result.data;
49
+
50
+ console.error(chalk.gray(`Got download URL: ${downloadUrl}`));
51
+ console.error(chalk.gray(`Downloading file...`));
52
+ console.error();
53
+
54
+ // 第二步:根据返回的 URL 下载文件
55
+ const response = await axios({
56
+ method: 'get',
57
+ url: downloadUrl,
58
+ httpsAgent: httpsAgent,
59
+ responseType: 'arraybuffer',
60
+ timeout: 120000
61
+ });
62
+
63
+ // 尝试从响应头获取文件名
64
+ let filename = "identity-provider.crt";
65
+ const contentDisposition = response.headers['content-disposition'];
66
+ if (contentDisposition) {
67
+ const match = contentDisposition.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/);
68
+ if (match && match[1]) {
69
+ filename = match[1].replace(/['"]/g, '');
70
+ }
71
+ }
72
+
73
+ // 如果 URL 中包含文件名,也尝试从中提取
74
+ const urlPath = new URL(downloadUrl).pathname;
75
+ const urlFilename = urlPath.split('/').pop();
76
+ if (urlFilename && urlFilename.includes('.')) {
77
+ filename = urlFilename;
78
+ }
79
+
80
+ const filePath = path.join(savePath, filename);
81
+ fs.writeFileSync(filePath, response.data);
82
+
83
+ console.error();
84
+ console.error(chalk.green("Success! Certificate downloaded."));
85
+ console.error(chalk.gray(`Saved to: ${filePath}`));
86
+ console.error();
87
+
88
+ return {
89
+ result: true,
90
+ filePath: filePath,
91
+ filename: filename,
92
+ downloadUrl: downloadUrl
93
+ };
94
+ }
95
+
96
+ const msg = result && (result.returnInfo || result.message) ? (result.returnInfo || result.message) : "Unknown error";
97
+ throw new Error("Get download URL failed: " + msg);
98
+ } catch (error) {
99
+ console.error();
100
+ console.error(chalk.red("证书下载失败:"), error.message || error);
101
+ throw error;
102
+ }
103
+ }
104
+
105
+ module.exports = download;
@@ -0,0 +1,70 @@
1
+ const { postClass } = require("../../utils/http");
2
+ const { getPackageJson } = require("../../utils/config");
3
+ const chalk = require("chalk");
4
+
5
+ /**
6
+ * 查询身份提供商列表
7
+ * 接口: /samlSp/queryList
8
+ * 用法:cloudcc get identityProvider <projectPath> [encodedCondJson]
9
+ */
10
+ async function get(argvs, isMcp = false) {
11
+ const projectPath = argvs[2] || process.cwd();
12
+ const condArg = argvs[3];
13
+
14
+ let body = {};
15
+ if (condArg) {
16
+ try {
17
+ body = JSON.parse(decodeURI(condArg));
18
+ } catch (e) {
19
+ try {
20
+ body = JSON.parse(condArg);
21
+ } catch (e2) {
22
+ throw new Error("Get IdentityProvider Failed: encodedCondJson 解析失败,请传 encodeURI(JSON.stringify(...))");
23
+ }
24
+ }
25
+ }
26
+
27
+ const config = await getPackageJson(projectPath);
28
+
29
+ const res = await postClass(
30
+ config.setupSvc + "/api/samlSp/queryList",
31
+ {
32
+ start: 0,
33
+ limit: 30,
34
+ keyword: "",
35
+ ...body
36
+ },
37
+ config.accessToken
38
+ );
39
+
40
+ if (res && res.result) {
41
+ const data = res.data;
42
+ let rawList = [];
43
+ if (Array.isArray(data)) {
44
+ rawList = data;
45
+ } else if (data && Array.isArray(data.list)) {
46
+ rawList = data.list;
47
+ } else if (data && Array.isArray(data.data)) {
48
+ rawList = data.data;
49
+ } else if (data && typeof data === "object") {
50
+ rawList = Object.keys(data)
51
+ .filter((key) => /list$/i.test(key) && Array.isArray(data[key]))
52
+ .flatMap((key) =>
53
+ data[key].map((item) => ({
54
+ ...item,
55
+ __group: key
56
+ }))
57
+ );
58
+ }
59
+
60
+ if (!isMcp) {
61
+ console.log(JSON.stringify(rawList, null, 2));
62
+ }
63
+ return rawList;
64
+ }
65
+
66
+ const msg = res && (res.returnInfo || res.message) ? (res.returnInfo || res.message) : "Unknown error";
67
+ throw new Error("Get IdentityProvider Failed: " + msg);
68
+ }
69
+
70
+ module.exports = get;
@@ -0,0 +1,12 @@
1
+ const cc = {}
2
+ cc.create = require("./create")
3
+ cc.delete = require("./delete")
4
+ cc.get = require("./get")
5
+ cc.download = require("./download")
6
+ cc.doc = require("./doc")
7
+
8
+ function main(action, argvs) {
9
+ cc[action](argvs)
10
+ }
11
+
12
+ module.exports = main;
@@ -12,7 +12,7 @@ const { buildCommonMenuFields } = require('./common');
12
12
  */
13
13
  async function createObjectMenu(argvs) {
14
14
  try {
15
- // 命令行参数格式:cc create menu object <path> <objectId> <tabName>
15
+ // 命令行参数格式:cloudcc create menu object <path> <objectId> <tabName>
16
16
  // argvs: ['create', 'menu', 'object', '.', 'objectId', 'tabName', ...]
17
17
  let path = argvs[3]; // 路径 (argvs[3])
18
18
  let objectId = argvs[4]; // 对象ID (p1)
@@ -24,7 +24,7 @@ async function createObjectMenu(argvs) {
24
24
  if (!objectId || !tabName) {
25
25
  console.error();
26
26
  console.error(chalk.red('Error: 缺少必需参数'));
27
- console.error('用法: cc create menu object <path> <objectId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]');
27
+ console.error('用法: cloudcc create menu object <path> <objectId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]');
28
28
  console.error();
29
29
  throw new Error('缺少必需参数: objectId 和 tabName');
30
30
  }
@@ -12,7 +12,7 @@ const { validatePname, formatPname } = require('./validator');
12
12
  */
13
13
  async function createPageMenu(argvs) {
14
14
  try {
15
- // 命令行参数格式:cc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]
15
+ // 命令行参数格式:cloudcc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]
16
16
  // argvs: ['create', 'menu', 'page', '.', 'contract-assistant', '标签名', '菜单名称', ...]
17
17
  let path = argvs[3]; // 路径 (argvs[3])
18
18
  let pageApi = argvs[4]; // 自定义页面 pageApi,例如 contract-assistant
@@ -32,7 +32,7 @@ async function createPageMenu(argvs) {
32
32
  if (!pageApi || !tabName || !pname) {
33
33
  console.error();
34
34
  console.error(chalk.red('Error: 缺少必需参数'));
35
- console.error('用法: cc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]');
35
+ console.error('用法: cloudcc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]');
36
36
  console.error();
37
37
  throw new Error('缺少必需参数: pageApi、tabName 和 pname');
38
38
  }
@@ -12,7 +12,7 @@ const { validatePname } = require('./validator');
12
12
  */
13
13
  async function createScriptMenu(argvs) {
14
14
  try {
15
- // 命令行参数格式:cc create menu script <path> <tabName> <pname> [functioncode] [tabStyle] [mobileimg] [cloudccservicetab]
15
+ // 命令行参数格式:cloudcc create menu script <path> <tabName> <pname> [functioncode] [tabStyle] [mobileimg] [cloudccservicetab]
16
16
  // argvs: ['create', 'menu', 'script', '.', 'tabName', 'pname', 'functioncode', ...]
17
17
  let path = argvs[3]; // 路径 (argvs[3])
18
18
  let tabName = argvs[4]; // 标签名称(显示名称)
@@ -25,7 +25,7 @@ async function createScriptMenu(argvs) {
25
25
  if (!tabName || !pname) {
26
26
  console.error();
27
27
  console.error(chalk.red('Error: 缺少必需参数'));
28
- console.error('用法: cc create menu script <path> <tabName> <pname> [functioncode] [tabStyle] [mobileimg] [cloudccservicetab]');
28
+ console.error('用法: cloudcc create menu script <path> <tabName> <pname> [functioncode] [tabStyle] [mobileimg] [cloudccservicetab]');
29
29
  console.error();
30
30
  console.error('参数说明:');
31
31
  console.error(' path - 项目路径,"." 表示当前目录');
@@ -11,7 +11,7 @@ const { buildCommonMenuFields } = require('./common');
11
11
  */
12
12
  async function createSiteMenu(argvs) {
13
13
  try {
14
- // 命令行参数格式:cc create menu site <path> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
14
+ // 命令行参数格式:cloudcc create menu site <path> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
15
15
  // argvs: ['create', 'menu', 'site', '.', 'siteId', 'tabName', ...]
16
16
  let path = argvs[3]; // 路径 (argvs[3])
17
17
  let siteId = argvs[4]; // 站点ID (p1)
@@ -23,7 +23,7 @@ async function createSiteMenu(argvs) {
23
23
  if (!siteId || !tabName) {
24
24
  console.error();
25
25
  console.error(chalk.red('Error: 缺少必需参数'));
26
- console.error('用法: cc create menu site <path> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]');
26
+ console.error('用法: cloudcc create menu site <path> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]');
27
27
  console.error();
28
28
  throw new Error('缺少必需参数: siteId 和 tabName');
29
29
  }
@@ -8,14 +8,14 @@ const createSiteMenu = require('./create-site');
8
8
  * 创建自定义菜单(标签页)
9
9
  * 支持类型:object(自定义对象)、page(自定义页面)、script(自定义脚本)、site(站点)
10
10
  * 命令格式:
11
- * - object/script/site: cc create menu <type> <path> <resourceId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
12
- * - page: cc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]
11
+ * - object/script/site: cloudcc create menu <type> <path> <resourceId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
12
+ * - page: cloudcc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]
13
13
  * @param {Array} argvs - 命令行参数数组
14
14
  * @returns {Promise<Object>} 创建结果
15
15
  */
16
16
  async function create(argvs) {
17
17
  try {
18
- // 命令行参数格式:cc create menu <type> <path> <resourceId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
18
+ // 命令行参数格式:cloudcc create menu <type> <path> <resourceId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
19
19
  // argvs: ['create', 'menu', 'object', '.', 'resourceId', 'tabName', ...]
20
20
  // type: object, page, script, site
21
21
  let menuType = argvs[2]; // 菜单类型 (argvs[2])
@@ -27,15 +27,15 @@ async function create(argvs) {
27
27
  console.error(chalk.red('Error: 无效的菜单类型'));
28
28
  console.error(`支持的菜单类型: ${validTypes.join(', ')}`);
29
29
  console.error('用法:');
30
- console.error(' cc create menu object <path> <objectId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]');
31
- console.error(' cc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]');
32
- console.error(' cc create menu script <path> <scriptId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]');
33
- console.error(' cc create menu site <path> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]');
30
+ console.error(' cloudcc create menu object <path> <objectId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]');
31
+ console.error(' cloudcc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]');
32
+ console.error(' cloudcc create menu script <path> <scriptId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]');
33
+ console.error(' cloudcc create menu site <path> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]');
34
34
  console.error('示例:');
35
- console.error(' cc create menu object . <objectId> "我的对象菜单"');
36
- console.error(' cc create menu page . contract-assistant "我的页面标签" my_page_menu');
37
- console.error(' cc create menu script . <scriptId> "我的脚本菜单"');
38
- console.error(' cc create menu site . <siteId> "我的站点菜单"');
35
+ console.error(' cloudcc create menu object . <objectId> "我的对象菜单"');
36
+ console.error(' cloudcc create menu page . contract-assistant "我的页面标签" my_page_menu');
37
+ console.error(' cloudcc create menu script . <scriptId> "我的脚本菜单"');
38
+ console.error(' cloudcc create menu site . <siteId> "我的站点菜单"');
39
39
  console.error();
40
40
  throw new Error(`无效的菜单类型: ${menuType}`);
41
41
  }
@@ -4,7 +4,7 @@ const { getPackageJson } = require("../../utils/config");
4
4
 
5
5
  /**
6
6
  * 删除自定义菜单(标签页)
7
- * 用法:cc delete menu <projectPath> <tabId>
7
+ * 用法:cloudcc delete menu <projectPath> <tabId>
8
8
  */
9
9
  async function remove(argvs) {
10
10
  try {
@@ -14,7 +14,7 @@ async function remove(argvs) {
14
14
  if (!tabId) {
15
15
  console.error();
16
16
  console.error(chalk.red("Error: 缺少菜单 ID"));
17
- console.error(chalk.yellow("用法: cc delete menu <projectPath> <tabId>"));
17
+ console.error(chalk.yellow("用法: cloudcc delete menu <projectPath> <tabId>"));
18
18
  console.error();
19
19
  throw new Error("缺少必需参数: tabId");
20
20
  }
package/src/menu/doc.js CHANGED
@@ -32,14 +32,14 @@ function getDevGuideDoc() {
32
32
  }
33
33
 
34
34
  /**
35
- * cc doc menu <introduction|devguide>
35
+ * cloudcc doc menu <introduction|devguide>
36
36
  * @param {string[]} argvs [doc, type, introduction|devguide, ...]
37
37
  */
38
38
  function doc(argvs) {
39
39
  const subType = argvs[2];
40
40
  const key = String(subType || "").trim().toLowerCase();
41
41
  if (!key) {
42
- throw new Error("cc doc menu 需要子命令:introduction 或 devguide");
42
+ throw new Error("cloudcc doc menu 需要子命令:introduction 或 devguide");
43
43
  }
44
44
  if (key === "introduction") {
45
45
  const content = getIntroductionDoc();
@@ -16,7 +16,7 @@
16
16
  ### 创建自定义对象菜单
17
17
 
18
18
  ```bash
19
- cc create menu object <path> <objectId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
19
+ cloudcc create menu object <path> <objectId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
20
20
  ```
21
21
 
22
22
  **参数说明:**
@@ -33,13 +33,13 @@ cc create menu object <path> <objectId> <tabName> [tabStyle] [mobileimg] [cloudc
33
33
  **示例:**
34
34
 
35
35
  ```bash
36
- cc create menu object . a0F9D000000XXXXUAI "客户管理"
36
+ cloudcc create menu object . a0F9D000000XXXXUAI "客户管理"
37
37
  ```
38
38
 
39
39
  ### 创建自定义页面菜单
40
40
 
41
41
  ```bash
42
- cc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]
42
+ cloudcc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [cloudccservicetab] [mobileurl]
43
43
  ```
44
44
 
45
45
  **参数说明:**
@@ -56,13 +56,13 @@ cc create menu page <path> <pageApi> <tabName> <pname> [tabStyle] [mobileimg] [c
56
56
  **示例:**
57
57
 
58
58
  ```bash
59
- cc create menu page . contract-assistant "合同助手" contract_menu
59
+ cloudcc create menu page . contract-assistant "合同助手" contract_menu
60
60
  ```
61
61
 
62
62
  ### 创建自定义脚本菜单
63
63
 
64
64
  ```bash
65
- cc create menu script <path> <tabName> <pname> [functioncode] [tabStyle] [mobileimg] [cloudccservicetab]
65
+ cloudcc create menu script <path> <tabName> <pname> [functioncode] [tabStyle] [mobileimg] [cloudccservicetab]
66
66
  ```
67
67
 
68
68
  **参数说明:**
@@ -77,13 +77,13 @@ cc create menu script <path> <tabName> <pname> [functioncode] [tabStyle] [mobile
77
77
  **示例:**
78
78
 
79
79
  ```bash
80
- cc create menu script . "数据导入工具" data_import_menu "ccc.alert('Hello World');"
80
+ cloudcc create menu script . "数据导入工具" data_import_menu "ccc.alert('Hello World');"
81
81
  ```
82
82
 
83
83
  ### 创建站点菜单
84
84
 
85
85
  ```bash
86
- cc create menu site <path> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
86
+ cloudcc create menu site <path> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccservicetab]
87
87
  ```
88
88
 
89
89
  **参数说明:**
@@ -97,33 +97,33 @@ cc create menu site <path> <siteId> <tabName> [tabStyle] [mobileimg] [cloudccser
97
97
  **示例:**
98
98
 
99
99
  ```bash
100
- cc create menu site . a0H9D000000XXXXUAI "合作伙伴门户"
100
+ cloudcc create menu site . a0H9D000000XXXXUAI "合作伙伴门户"
101
101
  ```
102
102
 
103
103
  ### 查询菜单列表
104
104
 
105
105
  ```bash
106
- cc get menu <projectPath> [encodedCondJson]
106
+ cloudcc get menu <projectPath> [encodedCondJson]
107
107
  ```
108
108
 
109
109
  **示例:**
110
110
 
111
111
  ```bash
112
112
  # 查询所有菜单
113
- cc get menu .
113
+ cloudcc get menu .
114
114
 
115
115
  # 带查询条件
116
- cc get menu . '%7B%22type%22%3A%22page%22%7D'
116
+ cloudcc get menu . '%7B%22type%22%3A%22page%22%7D'
117
117
  ```
118
118
 
119
119
  ### 删除菜单
120
120
 
121
121
  ```bash
122
- cc delete menu <projectPath> <tabId>
122
+ cloudcc delete menu <projectPath> <tabId>
123
123
  ```
124
124
 
125
125
  **示例:**
126
126
 
127
127
  ```bash
128
- cc delete menu . a0I9D000000XXXXUAI
128
+ cloudcc delete menu . a0I9D000000XXXXUAI
129
129
  ```
@@ -44,7 +44,7 @@
44
44
  5. 选择要加入的应用程序(决定菜单出现在哪个应用)
45
45
  6. 保存并验证显示效果
46
46
 
47
- 在 `cloudcc-cli` 中,你主要通过 `cc create menu ...` 完成第 2-3
47
+ 在 `cloudcc-cli` 中,你主要通过 `cloudcc create menu ...` 完成第 2-3
48
48
  步;权限与应用归属建议在创建后补充核验。
49
49
 
50
50
  ---
@@ -94,6 +94,6 @@
94
94
  ## 9. 相关文档与命令
95
95
 
96
96
  ```bash
97
- cc doc menu introduction
98
- cc doc menu devguide
97
+ cloudcc doc menu introduction
98
+ cloudcc doc menu devguide
99
99
  ```
package/src/menu/get.js CHANGED
@@ -3,7 +3,7 @@ const { getPackageJson } = require("../../utils/config");
3
3
 
4
4
  /**
5
5
  * 查询自定义菜单(标签页)列表
6
- * 用法:cc get menu <projectPath> [encodedCondJson]
6
+ * 用法:cloudcc get menu <projectPath> [encodedCondJson]
7
7
  */
8
8
  async function get(argvs, isMcp = false) {
9
9
  const projectPath = argvs[2] || process.cwd();
@@ -20,8 +20,8 @@ async function create(argvs) {
20
20
  try {
21
21
  let path = argvs[2];
22
22
  // 兼容两种调用方式:
23
- // 1) cc object create <path> <nameLabel> <label>
24
- // 2) cc object create <path> <label> (此时自动生成 nameLabel)
23
+ // 1) cloudcc object create <path> <nameLabel> <label>
24
+ // 2) cloudcc object create <path> <label> (此时自动生成 nameLabel)
25
25
  let label = argvs[3];
26
26
  let nameLabel = argvs[4];
27
27
  if (nameLabel == undefined) {
@@ -4,7 +4,7 @@ const { getPackageJson } = require("../../utils/config");
4
4
 
5
5
  /**
6
6
  * 删除自定义对象
7
- * 用法:cc delete object <projectPath> <objid>
7
+ * 用法:cloudcc delete object <projectPath> <objid>
8
8
  */
9
9
  async function remove(argvs) {
10
10
  const projectPath = argvs[2] || process.cwd();
@@ -13,7 +13,7 @@ async function remove(argvs) {
13
13
  if (!objid) {
14
14
  console.error();
15
15
  console.error(chalk.red("Error: objid is required"));
16
- console.error(chalk.yellow("Usage: cc delete object <projectPath> <objid>"));
16
+ console.error(chalk.yellow("Usage: cloudcc delete object <projectPath> <objid>"));
17
17
  console.error();
18
18
  return;
19
19
  }
@@ -7,8 +7,8 @@
7
7
  可通过以下命令读取文档:
8
8
 
9
9
  ```bash
10
- cc doc object introduction
11
- cc doc object devguide
10
+ cloudcc doc object introduction
11
+ cloudcc doc object devguide
12
12
  ```
13
13
 
14
14
  ---
@@ -16,9 +16,9 @@ cc doc object devguide
16
16
  ## 2. 当前支持的命令
17
17
 
18
18
  ```bash
19
- cc get object <projectPath> [type]
20
- cc create object <projectPath> <label> [nameLabel]
21
- cc delete object <projectPath> <objid>
19
+ cloudcc get object <projectPath> [type]
20
+ cloudcc create object <projectPath> <label> [nameLabel]
21
+ cloudcc delete object <projectPath> <objid>
22
22
  ```
23
23
 
24
24
  说明:
@@ -35,7 +35,7 @@ cc delete object <projectPath> <objid>
35
35
  ### 3.1 查询全部对象
36
36
 
37
37
  ```bash
38
- cc get object <projectPath>
38
+ cloudcc get object <projectPath>
39
39
  ```
40
40
 
41
41
  返回标准对象和自定义对象的合并列表。
@@ -43,8 +43,8 @@ cc get object <projectPath>
43
43
  ### 3.2 按类型查询
44
44
 
45
45
  ```bash
46
- cc get object <projectPath> standard
47
- cc get object <projectPath> custom
46
+ cloudcc get object <projectPath> standard
47
+ cloudcc get object <projectPath> custom
48
48
  ```
49
49
 
50
50
  常见含义:
@@ -59,7 +59,7 @@ cc get object <projectPath> custom
59
59
  ### 4.1 基本命令
60
60
 
61
61
  ```bash
62
- cc create object <projectPath> <label>
62
+ cloudcc create object <projectPath> <label>
63
63
  ```
64
64
 
65
65
 
@@ -79,7 +79,7 @@ cc create object <projectPath> <label>
79
79
  ### 5.1 基本命令
80
80
 
81
81
  ```bash
82
- cc delete object <projectPath> <objid>
82
+ cloudcc delete object <projectPath> <objid>
83
83
  ```
84
84
 
85
85
  删除前建议:
@@ -91,7 +91,7 @@ cc delete object <projectPath> <objid>
91
91
 
92
92
  ## 6. 开发前检查
93
93
 
94
- - 已完成 `cc doc project devguide` 中的环境准备
94
+ - 已完成 `cloudcc doc project devguide` 中的环境准备
95
95
  - 项目根目录存在可用的 `cloudcc-cli.config.js`
96
96
  - 当前环境密钥配置正确
97
97
  - 已确认对象名称、API 名称、角色权限需求
@@ -57,13 +57,13 @@ async function cloneLayout(config, objId, layoutName, sourceLayoutId, isCloneDyn
57
57
 
58
58
  /**
59
59
  * 创建页面布局
60
- * 用法:cc create pagelayout <projectPath> <objId> <layoutName> [sourceLayoutId] [isCloneDynamic]
60
+ * 用法:cloudcc create pagelayout <projectPath> <objId> <layoutName> [sourceLayoutId] [isCloneDynamic]
61
61
  * @param {Array} argvs - 命令行参数数组
62
62
  * @returns {Promise<Object>} 创建结果
63
63
  */
64
64
  async function create(argvs) {
65
65
  try {
66
- // 命令行参数格式:cc create pagelayout <projectPath> <objId> <layoutName> [sourceLayoutId] [isCloneDynamic]
66
+ // 命令行参数格式:cloudcc create pagelayout <projectPath> <objId> <layoutName> [sourceLayoutId] [isCloneDynamic]
67
67
  const projectPath = argvs[2] || process.cwd();
68
68
  const objId = argvs[3];
69
69
  const layoutName = argvs[4];
@@ -73,10 +73,10 @@ async function create(argvs) {
73
73
  if (!objId) {
74
74
  console.error();
75
75
  console.error(chalk.red("Error: 缺少对象 ID"));
76
- console.error("用法: cc create pagelayout <projectPath> <objId> <layoutName> [sourceLayoutId] [isCloneDynamic]");
76
+ console.error("用法: cloudcc create pagelayout <projectPath> <objId> <layoutName> [sourceLayoutId] [isCloneDynamic]");
77
77
  console.error("示例:");
78
- console.error(' cc create pagelayout . 20267D1465464C5OB6m5 "课程表2"');
79
- console.error(" cc create pagelayout . 20267D1465464C5OB6m5 \"课程表2\" add20261DA7347CZPAUz");
78
+ console.error(' cloudcc create pagelayout . 20267D1465464C5OB6m5 "课程表2"');
79
+ console.error(" cloudcc create pagelayout . 20267D1465464C5OB6m5 \"课程表2\" add20261DA7347CZPAUz");
80
80
  console.error();
81
81
  throw new Error("缺少必需参数: objId");
82
82
  }
@@ -84,7 +84,7 @@ async function create(argvs) {
84
84
  if (!layoutName) {
85
85
  console.error();
86
86
  console.error(chalk.red("Error: 缺少页面布局名称"));
87
- console.error("用法: cc create pagelayout <projectPath> <objId> <layoutName> [sourceLayoutId] [isCloneDynamic]");
87
+ console.error("用法: cloudcc create pagelayout <projectPath> <objId> <layoutName> [sourceLayoutId] [isCloneDynamic]");
88
88
  console.error();
89
89
  throw new Error("缺少必需参数: layoutName");
90
90
  }
@@ -4,22 +4,22 @@ const chalk = require("chalk");
4
4
 
5
5
  /**
6
6
  * 删除页面布局
7
- * 用法:cc delete pagelayout <projectPath> <layoutId>
7
+ * 用法:cloudcc delete pagelayout <projectPath> <layoutId>
8
8
  * @param {Array} argvs - 命令行参数数组
9
9
  * @returns {Promise<Object>} 删除结果
10
10
  */
11
11
  async function deleteLayout(argvs) {
12
12
  try {
13
- // 命令行参数格式:cc delete pagelayout <projectPath> <layoutId>
13
+ // 命令行参数格式:cloudcc delete pagelayout <projectPath> <layoutId>
14
14
  const projectPath = argvs[2] || process.cwd();
15
15
  const layoutId = argvs[3];
16
16
 
17
17
  if (!layoutId) {
18
18
  console.error();
19
19
  console.error(chalk.red("Error: 缺少页面布局 ID"));
20
- console.error("用法: cc delete pagelayout <projectPath> <layoutId>");
20
+ console.error("用法: cloudcc delete pagelayout <projectPath> <layoutId>");
21
21
  console.error("示例:");
22
- console.error(" cc delete pagelayout . add202610BD89F09XyGT");
22
+ console.error(" cloudcc delete pagelayout . add202610BD89F09XyGT");
23
23
  console.error();
24
24
  throw new Error("缺少必需参数: layoutId");
25
25
  }
@@ -21,14 +21,14 @@ function getDevGuideDoc() {
21
21
  }
22
22
 
23
23
  /**
24
- * cc doc pagelayout <introduction|devguide>
24
+ * cloudcc doc pagelayout <introduction|devguide>
25
25
  * @param {string[]} argvs [doc, type, introduction|devguide, ...]
26
26
  */
27
27
  function doc(argvs) {
28
28
  const subType = argvs[2];
29
29
  const key = String(subType || "").trim().toLowerCase();
30
30
  if (!key) {
31
- throw new Error("cc doc pagelayout 需要子命令:introduction 或 devguide");
31
+ throw new Error("cloudcc doc pagelayout 需要子命令:introduction 或 devguide");
32
32
  }
33
33
  if (key === "introduction") {
34
34
  const content = getIntroductionDoc();