cloudcc-cli 2.2.3 → 2.2.4

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 (174) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/README.md +35 -0
  3. package/bin/cc.js +11 -36
  4. package/bin/index.js +33 -0
  5. package/bin/mcp-svc.js +13 -0
  6. package/java/com/cloudcc/core/TriggerInvoker.java +17 -1
  7. package/package.json +3 -2
  8. package/pom.xml +1 -0
  9. package/prompt/DevelopmentEnvironmentConstruction.ts +133 -0
  10. package/prompt/ccdk.ts +1190 -0
  11. package/prompt/ccprompt.ts +8 -0
  12. package/prompt/cloudccdev.ts +109 -0
  13. package/prompt/index.ts +52 -0
  14. package/prompt/objectInfo.ts +94 -0
  15. package/prompt/objectList.ts +25 -0
  16. package/prompt/openapi.ts +310 -0
  17. package/prompt/system.ts +14 -0
  18. package/prompt/vscodeExtension.ts +27 -0
  19. package/src/approval/approve.js +105 -0
  20. package/src/approval/get.js +245 -0
  21. package/src/approval/index.js +11 -0
  22. package/src/approval/reject.js +105 -0
  23. package/src/brief/get.js +51 -0
  24. package/src/brief/index.js +7 -0
  25. package/src/config/get.js +1 -1
  26. package/src/fields/create.js +204 -0
  27. package/src/fields/fields/A.js +23 -0
  28. package/src/fields/fields/AD.js +25 -0
  29. package/src/fields/fields/B.js +28 -0
  30. package/src/fields/fields/C.js +28 -0
  31. package/src/fields/fields/D.js +27 -0
  32. package/src/fields/fields/E.js +28 -0
  33. package/src/fields/fields/ENC.js +28 -0
  34. package/src/fields/fields/ENCD.js +28 -0
  35. package/src/fields/fields/F.js +27 -0
  36. package/src/fields/fields/FL.js +25 -0
  37. package/src/fields/fields/H.js +27 -0
  38. package/src/fields/fields/IMG.js +27 -0
  39. package/src/fields/fields/J.js +26 -0
  40. package/src/fields/fields/L.js +32 -0
  41. package/src/fields/fields/LT.js +28 -0
  42. package/src/fields/fields/M.js +29 -0
  43. package/src/fields/fields/MR.js +24 -0
  44. package/src/fields/fields/N.js +30 -0
  45. package/src/fields/fields/P.js +28 -0
  46. package/src/fields/fields/Q.js +35 -0
  47. package/src/fields/fields/S.js +30 -0
  48. package/src/fields/fields/SCORE.js +24 -0
  49. package/src/fields/fields/T.js +27 -0
  50. package/src/fields/fields/U.js +28 -0
  51. package/src/fields/fields/X.js +28 -0
  52. package/src/fields/fields/Y.js +33 -0
  53. package/src/fields/get.js +36 -0
  54. package/src/fields/index.js +9 -0
  55. package/src/mcp/MCP/345/234/272/346/231/257/346/250/241/346/213/237.md +8 -0
  56. package/src/mcp/index-sse-svc.js +126 -0
  57. package/src/mcp/index-streamable-svc.js +180 -0
  58. package/src/mcp/index.js +519 -115
  59. package/src/mcp/readme.md +75 -70
  60. package/src/mcp/tools/Approval/handler.js +349 -0
  61. package/src/mcp/tools/Class Creator/handler.js +37 -0
  62. package/src/mcp/tools/Class Detail Retriever/handler.js +33 -0
  63. package/src/mcp/tools/Class Detail Retriever/prompt.js +37 -0
  64. package/src/mcp/tools/Class Editor Guide/handler.js +72 -0
  65. package/src/mcp/tools/Class Editor Guide/prompt.js +468 -0
  66. package/src/mcp/tools/Class List Retriever/handler.js +36 -0
  67. package/src/mcp/tools/Class Publisher/handler.js +29 -0
  68. package/src/mcp/tools/Class Publisher/prompt.js +40 -0
  69. package/src/mcp/tools/Class Puller/handler.js +86 -0
  70. package/src/mcp/tools/Class Puller/prompt.js +49 -0
  71. package/src/mcp/tools/Client Script Creator/handler.js +179 -0
  72. package/src/mcp/tools/Client Script Detail Retriever/handler.js +53 -0
  73. package/src/mcp/tools/Client Script Editor Guide/handler.js +633 -0
  74. package/src/mcp/tools/Client Script List Retriever/handler.js +68 -0
  75. package/src/mcp/tools/Client Script Publisher/handler.js +54 -0
  76. package/src/mcp/tools/Client Script Puller/handler.js +73 -0
  77. package/src/mcp/tools/CloudCC Development Overview/handler.js +48 -0
  78. package/src/mcp/tools/CloudCC Development Overview/prompt.js +870 -0
  79. package/src/mcp/tools/Component Creator/handler.js +44 -0
  80. package/src/mcp/tools/Component Detail Retriever/handler.js +38 -0
  81. package/src/mcp/tools/Component Editor Guide/handler.js +76 -0
  82. package/src/mcp/tools/Component Editor Guide/prompt.js +519 -0
  83. package/src/mcp/tools/Component List Retriever/handler.js +43 -0
  84. package/src/mcp/tools/Component Publisher/handler.js +18 -0
  85. package/src/mcp/tools/Component Puller/handler.js +63 -0
  86. package/src/mcp/tools/{dev-env/fetcher.js → Dev Environment Creator/fetcher.js } +8 -8
  87. package/src/mcp/tools/{dev-env/prompt.js → Dev Environment Creator/prompt.js } +19 -2
  88. package/src/mcp/tools/Dev Environment Validator/handler.js +88 -0
  89. package/src/mcp/tools/Dev Environment Validator/prompt.js +193 -0
  90. package/src/mcp/tools/{key-guide/fetcher.js → Developer Key Setup Guide/fetcher.js } +7 -7
  91. package/src/mcp/tools/{key-guide/prompt.js → Developer Key Setup Guide/prompt.js } +3 -3
  92. package/src/mcp/tools/Object Creator/handler.js +34 -0
  93. package/src/mcp/tools/Object Fields Creator/handler.js +64 -0
  94. package/src/mcp/tools/Object Fields Retriever/handler.js +37 -0
  95. package/src/mcp/tools/Object Fields Retriever/prompt.js +10 -0
  96. package/src/mcp/tools/Object List Retriever/handler.js +43 -0
  97. package/src/mcp/tools/Object List Retriever/prompt.js +10 -0
  98. package/src/mcp/tools/Scheduled Class Creator/handler.js +37 -0
  99. package/src/mcp/tools/Scheduled Class Detail Retriever/handler.js +34 -0
  100. package/src/mcp/tools/Scheduled Class List Retriever/handler.js +52 -0
  101. package/src/mcp/tools/Scheduled Class Publisher/handler.js +30 -0
  102. package/src/mcp/tools/Scheduled Class Puller/handler.js +92 -0
  103. package/src/mcp/tools/Trigger Creator/handler.js +53 -0
  104. package/src/mcp/tools/Trigger Detail Retriever/handler.js +33 -0
  105. package/src/mcp/tools/Trigger Editor Guide/handler.js +58 -0
  106. package/src/mcp/tools/Trigger List Retriever/handler.js +49 -0
  107. package/src/mcp/tools/Trigger Publisher/handler.js +34 -0
  108. package/src/mcp/tools/Trigger Puller/handler.js +40 -0
  109. package/src/mcp/tools/ccdk/fetcher.js +3 -3
  110. package/src/mcp/tools/ccdk/prompt.js +2 -2
  111. package/src/mcp/tools/index.js +23 -0
  112. package/src/object/create.js +105 -0
  113. package/src/object/get.js +43 -4
  114. package/src/object/index.js +2 -1
  115. package/src/plugin/create1.js +8 -7
  116. package/src/plugin/detail.js +91 -0
  117. package/src/plugin/get.js +79 -0
  118. package/src/plugin/index.js +4 -1
  119. package/src/plugin/publish.js +13 -13
  120. package/src/plugin/publish1.js +30 -22
  121. package/src/plugin/pull.js +173 -0
  122. package/src/project/create.js +9 -9
  123. package/src/project/create1.js +31 -17
  124. package/src/recordType/get.js +4 -2
  125. package/src/script/create.js +7 -7
  126. package/src/script/detail.js +95 -0
  127. package/src/script/get.js +4 -2
  128. package/src/script/index.js +1 -0
  129. package/src/script/publish.js +14 -14
  130. package/src/script/pull.js +12 -12
  131. package/src/script/pullList.js +5 -3
  132. package/src/timer/create.js +7 -7
  133. package/src/timer/detail.js +84 -0
  134. package/src/timer/get.js +6 -3
  135. package/src/timer/publish.js +7 -7
  136. package/src/timer/pull.js +8 -8
  137. package/src/timer/pullList.js +5 -3
  138. package/src/token/get.js +1 -1
  139. package/src/triggers/create.js +7 -7
  140. package/src/triggers/detail.js +90 -0
  141. package/src/triggers/get.js +4 -2
  142. package/src/triggers/index.js +1 -0
  143. package/src/triggers/publish.js +7 -7
  144. package/src/triggers/pull.js +8 -8
  145. package/src/triggers/pullList.js +5 -3
  146. package/src/version/get.js +3 -3
  147. package/target/ccopenapi-0.0.3-classes.jar +0 -0
  148. package/target/ccopenapi-0.0.3.jar +0 -0
  149. package/target/maven-archiver/pom.properties +3 -0
  150. package/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +18 -0
  151. package/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +19 -0
  152. package/template/Appvue +2 -2
  153. package/template/index.js +30 -19
  154. package/tool/branch/index.js +1 -1
  155. package/tool/checkLange/checkLang.js +6 -6
  156. package/tool/checkLange/clearLang.js +1 -1
  157. package/utils/accessClass.js +23 -0
  158. package/utils/checkVersion.js +22 -20
  159. package/utils/config.js +18 -3
  160. package/utils/http.js +10 -10
  161. package/utils/utils.js +97 -32
  162. package/java/com/cloudcc/core/CCTriggerDemo.java +0 -25
  163. package/src/classes/create.js +0 -66
  164. package/src/classes/get.js +0 -22
  165. package/src/classes/index.js +0 -11
  166. package/src/classes/publish.js +0 -51
  167. package/src/classes/pull.js +0 -55
  168. package/src/classes/pullList.js +0 -44
  169. package/src/mcp/tools/classes/handler.js +0 -358
  170. package/src/mcp/tools/classes/prompt.js +0 -1261
  171. package/src/mcp/tools/plugin/handler.js +0 -92
  172. /package/src/mcp/tools/{plugin → Component Publisher}/prompt.js +0 -0
  173. /package/src/mcp/tools/{dev-env → Dev Environment Creator}/handler.js +0 -0
  174. /package/src/mcp/tools/{key-guide → Developer Key Setup Guide}/handler.js +0 -0
@@ -0,0 +1,84 @@
1
+ const fs = require("fs");
2
+ const path = require("path")
3
+
4
+ const { getPackageJson } = require("../../utils/config")
5
+ const { postClass } = require("../../utils/http")
6
+
7
+ /**
8
+ * 获取定时类详细信息
9
+ * @param {string} name - 定时类名称(优先从本地查询)
10
+ * @param {string} id - 定时类ID(当没有name时从服务器查询)
11
+ * @returns {Object} 定时类详细信息
12
+ */
13
+ async function detail(name, id) {
14
+ // 如果有 name,优先查询本地
15
+ if (name && name !== '') {
16
+ const schedulePath = path.join(process.cwd(), `schedule/${name}/`);
17
+ const configPath = schedulePath + "config.json";
18
+ const javaFilePath = schedulePath + `${name}.java`;
19
+
20
+ // 先尝试从本地文件获取详情
21
+ if (fs.existsSync(configPath) && fs.existsSync(javaFilePath)) {
22
+ let configContent = JSON.parse(fs.readFileSync(configPath, 'utf8'));
23
+ let javaContent = fs.readFileSync(javaFilePath, 'utf8');
24
+ return {
25
+ name: configContent.name,
26
+ version: configContent.version,
27
+ id: configContent.id || null,
28
+ source: javaContent,
29
+ published: !!configContent.id,
30
+ fromLocal: true
31
+ };
32
+ }
33
+
34
+ // 本地文件不完整,从服务器拉取
35
+ if (!fs.existsSync(configPath)) {
36
+ throw new Error('Schedule not found in local directory: ' + schedulePath);
37
+ }
38
+
39
+ let configContent = JSON.parse(fs.readFileSync(configPath, 'utf8'));
40
+
41
+ if (!configContent.id) {
42
+ throw new Error('Schedule has not been published. Please publish first to fetch details from server.');
43
+ }
44
+
45
+ // 使用本地 config 中的 id 从服务器获取详细信息
46
+ let body = {
47
+ "id": configContent.id,
48
+ }
49
+ let config = await getPackageJson();
50
+ let res = await postClass(config.setupSvc + "/api/ccPeak/detail", body, config.accessToken)
51
+
52
+ if (res.result) {
53
+ return {
54
+ ...res.data.trigger,
55
+ fromLocal: false
56
+ };
57
+ } else {
58
+ throw new Error('Get Schedule Details Failed: ' + res.returnInfo);
59
+ }
60
+ }
61
+
62
+ // 如果没有 name,用 id 从服务器查询
63
+ if (id && id !== '') {
64
+ let body = {
65
+ "id": id,
66
+ }
67
+ let config = await getPackageJson();
68
+ let res = await postClass(config.setupSvc + "/api/ccPeak/detail", body, config.accessToken)
69
+
70
+ if (res.result) {
71
+ return {
72
+ ...res.data.trigger,
73
+ fromLocal: false
74
+ };
75
+ } else {
76
+ throw new Error('Get Schedule Details Failed: ' + res.returnInfo);
77
+ }
78
+ }
79
+
80
+ // 既没有 name 也没有 id,报错
81
+ throw new Error('Either schedule name or id must be provided');
82
+ }
83
+
84
+ module.exports = detail;
package/src/timer/get.js CHANGED
@@ -1,8 +1,8 @@
1
1
  const { getPackageJson } = require("../../utils/config")
2
2
  const { postClass } = require("../../utils/http")
3
3
 
4
- async function get(arg1, arg2) {
5
- let body = JSON.parse(decodeURI(arg1))
4
+ async function get(arg1, arg2, isMcp = false) {
5
+ let body = arg1 != null && arg1 != '' ? JSON.parse(decodeURI(arg1)) : { shownum: "2000", showpage: "1", fid: "", sname: '', rptcond: '', rptorder: '' }
6
6
  let config = await getPackageJson(arg2);
7
7
  let res = await postClass(config.setupSvc + "/api/ccPeak/list", body, config.accessToken)
8
8
  if (res.result) {
@@ -11,10 +11,13 @@ async function get(arg1, arg2) {
11
11
  id: item.id,
12
12
  name: item.name
13
13
  }))
14
- console.log(JSON.stringify(simpleList))
14
+ if (!isMcp) {
15
+ console.log(JSON.stringify(simpleList))
16
+ }
15
17
  return simpleList
16
18
  } else {
17
19
  console.error('error:', res.message);
20
+ throw new Error('Get Schedule Failed: ' + res.message);
18
21
  }
19
22
  }
20
23
 
@@ -10,12 +10,12 @@ const { postClass } = require("../../utils/http")
10
10
  async function publish(name) {
11
11
  let res = await checkUpdate();
12
12
  if (!res) {
13
- console.log();
13
+ console.error();
14
14
  const now = new Date();
15
15
  const timeStr = now.getFullYear() + '-' + String(now.getMonth() + 1).padStart(2, '0') + '-' + String(now.getDate()).padStart(2, '0') + ' ' + String(now.getHours()).padStart(2, '0') + ':' + String(now.getMinutes()).padStart(2, '0') + ':' + String(now.getSeconds()).padStart(2, '0');
16
- console.log(chalk.green(timeStr));
17
- console.log(chalk.green('Posting, please wait...'));
18
- console.log();
16
+ console.error(chalk.green(timeStr));
17
+ console.error(chalk.green('Posting, please wait...'));
18
+ console.error();
19
19
  const timerPath = path.join(process.cwd(), `schedule/${name}/`);
20
20
  let fullContent = fs.readFileSync(timerPath + `${name}.java`, 'utf8');
21
21
 
@@ -35,15 +35,15 @@ async function publish(name) {
35
35
  let config = await getPackageJson();
36
36
  let res = await postClass(config.setupSvc + "/api/ccPeak/save", body, config.accessToken)
37
37
  if (res.result) {
38
- console.log(chalk.green('Success!'));
39
- console.log();
38
+ console.error(chalk.green('Success!'));
39
+ console.error();
40
40
 
41
41
  if (!configContent.id) {
42
42
  configContent.id = res.data
43
43
  fs.writeFileSync(path.join(timerPath, "config.json"), JSON.stringify(configContent))
44
44
  }
45
45
  } else {
46
- console.log(chalk.red('Pull Schedule Failed' + res.returnInfo));
46
+ console.error(chalk.red('Publish Schedule Failed' + res.returnInfo));
47
47
  }
48
48
  }
49
49
  }
package/src/timer/pull.js CHANGED
@@ -11,16 +11,16 @@ const { postClass } = require("../../utils/http")
11
11
  async function pull(name) {
12
12
  let res = await checkUpdate();
13
13
  if (!res) {
14
- console.log();
14
+ console.error();
15
15
  const now = new Date();
16
16
  const timeStr = now.getFullYear() + '-' + String(now.getMonth() + 1).padStart(2, '0') + '-' + String(now.getDate()).padStart(2, '0') + ' ' + String(now.getHours()).padStart(2, '0') + ':' + String(now.getMinutes()).padStart(2, '0') + ':' + String(now.getSeconds()).padStart(2, '0');
17
- console.log(chalk.green(timeStr));
18
- console.log(chalk.green('Pulling, please wait...'));
19
- console.log();
17
+ console.error(chalk.green(timeStr));
18
+ console.error(chalk.green('Pulling, please wait...'));
19
+ console.error();
20
20
  const timerPath = path.join(process.cwd(), `schedule/${name}/`);
21
21
  let configContent = JSON.parse(fs.readFileSync(timerPath + "config.json", 'utf8'));
22
22
  if (!configContent.id) {
23
- console.log(chalk.red('Schedule ID is not exist, please publish first!'));
23
+ console.error(chalk.red('Schedule ID is not exist, please publish first!'));
24
24
  return;
25
25
  }
26
26
  let body = {
@@ -29,8 +29,8 @@ async function pull(name) {
29
29
  let config = await getPackageJson();
30
30
  let res = await postClass(config.setupSvc + "/api/ccPeak/detail", body, config.accessToken)
31
31
  if (res.result) {
32
- console.log(chalk.green('Success!'));
33
- console.log
32
+ console.error(chalk.green('Success!'));
33
+ console.error
34
34
  let fullContent = fs.readFileSync(timerPath + `${name}.java`, 'utf8');
35
35
 
36
36
  let newContent = '';
@@ -46,7 +46,7 @@ async function pull(name) {
46
46
  fs.writeFileSync(timerPath + `${name}.java`, newContent, 'utf8');
47
47
 
48
48
  } else {
49
- console.log(chalk.red('Pull Schedule Failed:' + res.returnInfo));
49
+ console.error(chalk.red('Pull Schedule Failed:' + res.returnInfo));
50
50
  }
51
51
  }
52
52
  }
@@ -7,7 +7,7 @@ const { postClass } = require("../../utils/http");
7
7
  * 批量拉取定时器详情并生成本地文件
8
8
  * @param timer id
9
9
  */
10
- async function pullList(arg1, arg2) {
10
+ async function pullList(arg1, arg2, isMcp = false) {
11
11
  const body = { id: arg1 };
12
12
  let config = await getPackageJson(arg2);
13
13
  const res = await postClass(config.setupSvc + "/api/ccPeak/detail", body, config.accessToken);
@@ -29,9 +29,11 @@ async function pullList(arg1, arg2) {
29
29
  version: "2"
30
30
  };
31
31
  fs.writeFileSync(path.join(folderPath, "config.json"), JSON.stringify(configJson, null, 4), "utf8");
32
- console.log("true");
32
+ if (!isMcp) {
33
+ console.log("true");
34
+ }
33
35
  } catch (e) {
34
- console.log(`Error occurred while processing timer id: ${args[2]}, message: ${e.message}${JSON.stringify(res)}}`);
36
+ console.error(`Error occurred while processing timer id: ${args[2]}, message: ${e.message}${JSON.stringify(res)}}`);
35
37
  }
36
38
  }
37
39
 
package/src/token/get.js CHANGED
@@ -3,7 +3,7 @@ const { getBusToken } = require("../../utils/utils")
3
3
  async function get(path) {
4
4
  let token = await getBusToken(path)
5
5
  if (token) {
6
- console.log(token)
6
+ console.error(token)
7
7
  return token;
8
8
  }
9
9
  }
@@ -7,6 +7,7 @@ const { getPackageJson } = require("../../utils/config.js")
7
7
  async function create(argvs) {
8
8
  let res = await checkUpdate();
9
9
  if (!res) {
10
+ let config = await getPackageJson();
10
11
  let body = JSON.parse(decodeURI(argvs[2]))
11
12
  const baseTriggersPath = path.join(process.cwd(), "triggers");
12
13
  const objectFolderPath = path.join(baseTriggersPath, `${body.schemetableName.toLowerCase()}`);
@@ -31,17 +32,16 @@ public class ${body.name} extends CCTrigger {
31
32
  }`
32
33
 
33
34
  fs.writeFileSync(path.join(triggersPath, body.name + ".java"), javaTmp);
34
- let config = await getPackageJson();
35
35
  body.version = config.extandVersion || "2";
36
36
  body.isactive = true;
37
37
  fs.writeFileSync(path.join(triggersPath, "config.json"), JSON.stringify(body));
38
- console.log();
39
- console.log(chalk.green("Successfully Created:" + body.name));
40
- console.log();
38
+ console.error();
39
+ console.error(chalk.green("Successfully Created:" + body.name));
40
+ console.error();
41
41
  } catch (e) {
42
- console.log()
43
- console.log(chalk.red("Creation Trigger Failed:" + e))
44
- console.log()
42
+ console.error()
43
+ console.error(chalk.red("Creation Trigger Failed:" + e))
44
+ console.error()
45
45
  }
46
46
  }
47
47
  }
@@ -0,0 +1,90 @@
1
+ const fs = require("fs");
2
+ const path = require("path")
3
+
4
+ const { getPackageJson } = require("../../utils/config")
5
+ const { postClass } = require("../../utils/http")
6
+
7
+ /**
8
+ * 获取触发器详细信息
9
+ * @param {string} namePath - 触发器路径 "objectName/triggerName"(优先从本地查询)
10
+ * @param {string} id - 触发器ID(当没有namePath时从服务器查询)
11
+ * @returns {Object} 触发器详细信息
12
+ */
13
+ async function detail(namePath, id) {
14
+ // 如果有 namePath,优先查询本地
15
+ if (namePath && namePath !== '') {
16
+ const triggerPath = path.join(process.cwd(), `triggers/${namePath}/`);
17
+ const configPath = triggerPath + "config.json";
18
+ const triggerName = namePath.split("/")[1];
19
+ const javaFilePath = triggerPath + `${triggerName}.java`;
20
+
21
+ // 先尝试从本地文件获取详情
22
+ if (fs.existsSync(configPath) && fs.existsSync(javaFilePath)) {
23
+ let configContent = JSON.parse(fs.readFileSync(configPath, 'utf8'));
24
+ let javaContent = fs.readFileSync(javaFilePath, 'utf8');
25
+ return {
26
+ name: configContent.name,
27
+ apiname: configContent.apiname,
28
+ schemetableName: configContent.schemetableName,
29
+ targetObjectId: configContent.targetObjectId,
30
+ triggerTime: configContent.triggerTime,
31
+ version: configContent.version,
32
+ isactive: configContent.isactive,
33
+ id: configContent.id || null,
34
+ source: javaContent,
35
+ published: !!configContent.id,
36
+ fromLocal: true
37
+ };
38
+ }
39
+
40
+ // 本地文件不完整,从服务器拉取
41
+ if (!fs.existsSync(configPath)) {
42
+ throw new Error('Trigger not found in local directory: ' + triggerPath);
43
+ }
44
+
45
+ let configContent = JSON.parse(fs.readFileSync(configPath, 'utf8'));
46
+
47
+ if (!configContent.id) {
48
+ throw new Error('Trigger has not been published. Please publish first to fetch details from server.');
49
+ }
50
+
51
+ // 使用本地 config 中的 id 从服务器获取详细信息
52
+ let body = {
53
+ "id": configContent.id,
54
+ }
55
+ let config = await getPackageJson();
56
+ let res = await postClass(config.setupSvc + "/api/trigger/newobjtrigger", body, config.accessToken)
57
+
58
+ if (res.result) {
59
+ return {
60
+ ...res.data.trigger,
61
+ fromLocal: false
62
+ };
63
+ } else {
64
+ throw new Error('Get Trigger Details Failed: ' + res.returnInfo);
65
+ }
66
+ }
67
+
68
+ // 如果没有 namePath,用 id 从服务器查询
69
+ if (id && id !== '') {
70
+ let body = {
71
+ "id": id,
72
+ }
73
+ let config = await getPackageJson();
74
+ let res = await postClass(config.setupSvc + "/api/trigger/newobjtrigger", body, config.accessToken)
75
+
76
+ if (res.result) {
77
+ return {
78
+ ...res.data.trigger,
79
+ fromLocal: false
80
+ };
81
+ } else {
82
+ throw new Error('Get Trigger Details Failed: ' + res.returnInfo);
83
+ }
84
+ }
85
+
86
+ // 既没有 namePath 也没有 id,报错
87
+ throw new Error('Either trigger path or id must be provided');
88
+ }
89
+
90
+ module.exports = detail;
@@ -1,7 +1,7 @@
1
1
  const { getPackageJson } = require("../../utils/config")
2
2
  const { postClass } = require("../../utils/http")
3
3
 
4
- async function get(args) {
4
+ async function get(args, isMcp = false) {
5
5
  let body = JSON.parse(decodeURI(args[2]))
6
6
  let config = await getPackageJson(args[3]);
7
7
  let res = await postClass(config.setupSvc + "/api/triggerSetup/getTriggerByCondition", body, config.accessToken)
@@ -11,7 +11,9 @@ async function get(args) {
11
11
  id: item.id,
12
12
  name: item.name
13
13
  }))
14
- console.log(JSON.stringify(simpleList))
14
+ if (!isMcp) {
15
+ console.log(JSON.stringify(simpleList))
16
+ }
15
17
  return simpleList
16
18
  } else {
17
19
  console.error('error:', res.message);
@@ -4,6 +4,7 @@ cc.publish = require("./publish")
4
4
  cc.pull = require("./pull")
5
5
  cc.get = require("./get")
6
6
  cc.pullList = require("./pullList")
7
+ cc.detail = require("./detail")
7
8
  function Classes(action, argvs) {
8
9
  cc[action](argvs)
9
10
  }
@@ -11,12 +11,12 @@ async function publish(argvs) {
11
11
  let name = namePath.split("/")[1]
12
12
  let res = await checkUpdate();
13
13
  if (!res) {
14
- console.log();
14
+ console.error();
15
15
  const now = new Date();
16
16
  const timeStr = now.getFullYear() + '-' + String(now.getMonth() + 1).padStart(2, '0') + '-' + String(now.getDate()).padStart(2, '0') + ' ' + String(now.getHours()).padStart(2, '0') + ':' + String(now.getMinutes()).padStart(2, '0') + ':' + String(now.getSeconds()).padStart(2, '0');
17
- console.log(chalk.green(timeStr));
18
- console.log(chalk.green('Posting, please wait...'));
19
- console.log();
17
+ console.error(chalk.green(timeStr));
18
+ console.error(chalk.green('Posting, please wait...'));
19
+ console.error();
20
20
  const triggersPath = path.join(process.cwd(), `triggers/${namePath}/`);
21
21
  let fullContent = fs.readFileSync(triggersPath + `${name}.java`, 'utf8');
22
22
 
@@ -39,8 +39,8 @@ async function publish(argvs) {
39
39
  let config = await getPackageJson();
40
40
  let res = await postClass(config.setupSvc + "/api/triggerSetup/saveTrigger", body, config.accessToken)
41
41
  if (res.result) {
42
- console.log(chalk.green('Success!'));
43
- console.log();
42
+ console.error(chalk.green('Success!'));
43
+ console.error();
44
44
 
45
45
  if (!configContent.id) {
46
46
  configContent.id = res.data.id
@@ -48,7 +48,7 @@ async function publish(argvs) {
48
48
  fs.writeFileSync(path.join(triggersPath, "config.json"), JSON.stringify(configContent))
49
49
  }
50
50
  } else {
51
- console.log(chalk.red('Publish Trigger Failed:' + res.returnInfo));
51
+ console.error(chalk.red('Publish Trigger Failed:' + res.returnInfo));
52
52
  }
53
53
  }
54
54
  }
@@ -10,16 +10,16 @@ async function pull(argvs) {
10
10
  let name = namePath.split("/")[1]
11
11
  let res = await checkUpdate();
12
12
  if (!res) {
13
- console.log();
13
+ console.error();
14
14
  const now = new Date();
15
15
  const timeStr = now.getFullYear() + '-' + String(now.getMonth() + 1).padStart(2, '0') + '-' + String(now.getDate()).padStart(2, '0') + ' ' + String(now.getHours()).padStart(2, '0') + ':' + String(now.getMinutes()).padStart(2, '0') + ':' + String(now.getSeconds()).padStart(2, '0');
16
- console.log(chalk.green(timeStr));
17
- console.log(chalk.green('Pulling, please wait...'));
18
- console.log();
16
+ console.error(chalk.green(timeStr));
17
+ console.error(chalk.green('Pulling, please wait...'));
18
+ console.error();
19
19
  const triggersPath = path.join(process.cwd(), `triggers/${namePath}/`);
20
20
  let configContent = JSON.parse(fs.readFileSync(triggersPath + "config.json", 'utf8'));
21
21
  if (!configContent.id) {
22
- console.log(chalk.red('Trigger ID is not exist, please publish first!'));
22
+ console.error(chalk.red('Trigger ID is not exist, please publish first!'));
23
23
  return;
24
24
  }
25
25
  let body = {
@@ -28,8 +28,8 @@ async function pull(argvs) {
28
28
  let config = await getPackageJson();
29
29
  let res = await postClass(config.setupSvc + "/api/trigger/newobjtrigger", body, config.accessToken)
30
30
  if (res.result) {
31
- console.log(chalk.green('Success!'));
32
- console.log();
31
+ console.error(chalk.green('Success!'));
32
+ console.error();
33
33
 
34
34
  let fullContent = fs.readFileSync(triggersPath + `${name}.java`, 'utf8');
35
35
  let newContent = '';
@@ -45,7 +45,7 @@ async function pull(argvs) {
45
45
  fs.writeFileSync(triggersPath + `${name}.java`, newContent);
46
46
 
47
47
  } else {
48
- console.log(chalk.red('Pull Trigger Failed:' + res.returnInfo));
48
+ console.error(chalk.red('Pull Trigger Failed:' + res.returnInfo));
49
49
  }
50
50
  }
51
51
  }
@@ -7,7 +7,7 @@ const { postClass } = require("../../utils/http");
7
7
  * 批量拉取触发器详情并生成本地文件
8
8
  * @param trigger id
9
9
  */
10
- async function pullList(args) {
10
+ async function pullList(args, isMcp = false) {
11
11
  const body = { id: args[2] };
12
12
  let config = await getPackageJson(args[3]);
13
13
  const res = await postClass(config.setupSvc + "/api/trigger/newobjtrigger", body, config.accessToken);
@@ -34,9 +34,11 @@ async function pullList(args) {
34
34
  isactive: typeof trigger.isactive === 'boolean' ? trigger.isactive : true
35
35
  };
36
36
  fs.writeFileSync(path.join(folderPath, "config.json"), JSON.stringify(configJson, null, 4), "utf8");
37
- console.log("true");
37
+ if (!isMcp) {
38
+ console.log("true");
39
+ }
38
40
  } catch (e) {
39
- console.log(`Error occurred while processing trigger id: ${args[2]}, message: ${e.message}${JSON.stringify(res)}}`);
41
+ console.error(`Error occurred while processing trigger id: ${args[2]}, message: ${e.message}${JSON.stringify(res)}}`);
40
42
  }
41
43
  }
42
44
 
@@ -2,9 +2,9 @@ const chalk = require("chalk")
2
2
  const pkg = require("../../package.json")
3
3
 
4
4
  function get() {
5
- console.log()
6
- console.log(chalk.green(`cloudcc-cli version: ${pkg.version}`));
7
- console.log()
5
+ console.error()
6
+ console.error(chalk.green(`cloudcc-cli version: ${pkg.version}`));
7
+ console.error()
8
8
  }
9
9
 
10
10
  module.exports = get;
Binary file
@@ -0,0 +1,3 @@
1
+ artifactId=ccopenapi
2
+ groupId=com.cloudcc.core
3
+ version=0.0.3
@@ -0,0 +1,18 @@
1
+ com/cloudcc/core/CCObject.class
2
+ com/cloudcc/core/TriggerTimeEnum.class
3
+ com/cloudcc/core/UserInfo.class
4
+ com/cloudcc/core/SendEmail.class
5
+ com/cloudcc/core/PeakInterf.class
6
+ com/cloudcc/core/TimeUtil.class
7
+ com/cloudcc/core/CCTriggerHandler.class
8
+ com/cloudcc/core/Tool.class
9
+ com/cloudcc/core/TriggerInvoker.class
10
+ com/cloudcc/core/CCSchedule.class
11
+ com/cloudcc/core/OperatationEnum.class
12
+ com/cloudcc/core/TriggerMethod.class
13
+ com/cloudcc/core/ServiceResult.class
14
+ com/cloudcc/core/DevLogger.class
15
+ com/cloudcc/core/CCService.class
16
+ com/cloudcc/core/CCTrigger.class
17
+ com/cloudcc/core/CCTriggerDemo.class
18
+ com/cloudcc/core/Tool$1.class
@@ -0,0 +1,19 @@
1
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/ServiceResult.java
2
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/TriggerInvoker.java
3
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/UserInfo.java
4
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/Tool.java
5
+ /Users/xuhm/Documents/cloudcc-cli/classes/TestDtt/TestDttTest.java
6
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/CCService.java
7
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/CCSchedule.java
8
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/SendEmail.java
9
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/OperatationEnum.java
10
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/CCTriggerHandler.java
11
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/TriggerMethod.java
12
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/CCTriggerDemo.java
13
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/TriggerTimeEnum.java
14
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/CCTrigger.java
15
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/DevLogger.java
16
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/PeakInterf.java
17
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/TimeUtil.java
18
+ /Users/xuhm/Documents/cloudcc-cli/java/com/cloudcc/core/CCObject.java
19
+ /Users/xuhm/Documents/cloudcc-cli/classes/TestDtt/TestDtt.java
package/template/Appvue CHANGED
@@ -45,7 +45,7 @@ export default {
45
45
  data() {
46
46
  return {
47
47
  mainTitle: "CloudCC开发者,您好",
48
- description: "开发文档:https://dev-help.cloudcc.cn/",
48
+ description: "开发文档:https://help.cloudcc.cn/",
49
49
  stats: [
50
50
  { number: "∞", label: "可能性" },
51
51
  { number: "⚡", label: "高效开发" },
@@ -55,7 +55,7 @@ export default {
55
55
  },
56
56
  methods: {
57
57
  handleClick() {
58
- console.log("探索开始");
58
+ console.error("探索开始");
59
59
  },
60
60
  },
61
61
  };
package/template/index.js CHANGED
@@ -33,8 +33,13 @@ module.exports = function (creator, options, callback) {
33
33
 
34
34
  const cwd = process.cwd();
35
35
 
36
- const projectPath = path.join(cwd, name);
37
- fs.mkdirSync(projectPath)
36
+ // name 是 '.' 或 '' 时,直接使用当前目录
37
+ const projectPath = (name === '.' || name === '') ? cwd : path.join(cwd, name);
38
+
39
+ // 只有当 name 不是 '.' 或 '' 时才创建新目录
40
+ if (name !== '.' && name !== '') {
41
+ fs.mkdirSync(projectPath)
42
+ }
38
43
 
39
44
  const src = path.join(projectPath, "src");
40
45
  fs.mkdirSync(src)
@@ -48,15 +53,18 @@ module.exports = function (creator, options, callback) {
48
53
  const templateLibPath = path.join(__dirname, "lib");
49
54
  if (fs.existsSync(templateLibPath)) {
50
55
  copyFolderSync(templateLibPath, libPath);
51
- console.log(`${chalk.grey(`Copy lib folder to ${name}/lib`)} ${chalk.green(' ')}`);
56
+ const displayPath = (name === '.' || name === '') ? '.' : `${name}/lib`;
57
+ console.error(`${chalk.grey(`Copy lib folder to ${displayPath}`)} ${chalk.green('✔ ')}`);
52
58
  }
53
59
 
54
60
  creator.copyTpl('cloudcc-cli.configjs', path.join(projectPath, "cloudcc-cli.config.js"))
55
61
 
56
62
  creator.copyTpl('gitignore', path.join(projectPath, ".gitignore"))
57
63
 
64
+ // 当 name 是 '.' 或 '' 时,使用当前目录名作为 package.json 的 name
65
+ const packageName = (name === '.' || name === '') ? path.basename(cwd) : name;
58
66
  creator.copyTpl('packagejson', path.join(projectPath, "package.json"), {
59
- name, description
67
+ name: packageName, description
60
68
  })
61
69
 
62
70
  creator.copyTpl('vueconfigjs', path.join(projectPath, "vue.config.js"))
@@ -71,21 +79,24 @@ module.exports = function (creator, options, callback) {
71
79
 
72
80
 
73
81
  creator.fs.commit(() => {
74
- console.log();
75
- console.log(`${chalk.grey(`Create project: ${name}`)} ${chalk.green(' ')}`);
76
-
77
- console.log(`${chalk.grey(`Create directory: ${name}/public`)} ${chalk.green('✔ ')}`);
78
- console.log(`${chalk.grey(`Create file: ${name}/public/index.html`)} ${chalk.green('✔ ')}`);
79
-
80
- console.log(`${chalk.grey(`Create directory: ${name}/lib`)} ${chalk.green('✔ ')}`);
81
- console.log(`${chalk.grey(`Create directory: ${name}/src`)} ${chalk.green('✔ ')}`);
82
- console.log(`${chalk.grey(`Create file: ${name}/src/App.vue`)} ${chalk.green('✔ ')}`);
83
- console.log(`${chalk.grey(`Create file: ${name}/src/main.js`)} ${chalk.green('✔ ')}`);
84
-
85
- console.log(`${chalk.grey(`Create file: ${name}/babel.config.js`)} ${chalk.green('✔ ')}`);
86
- console.log(`${chalk.grey(`Create file: ${name}/package.json`)} ${chalk.green('✔ ')}`);
87
- console.log(`${chalk.grey(`Create file: ${name}/vue.config.js`)} ${chalk.green('✔ ')}`);
88
- console.log(`${chalk.grey(`Create file: ${name}/cloudcc-cli.config.js`)} ${chalk.green('✔ ')}`);
82
+ console.error();
83
+ const displayName = (name === '.' || name === '') ? '.' : name;
84
+ const prefix = (name === '.' || name === '') ? '' : `${name}/`;
85
+
86
+ console.error(`${chalk.grey(`Create project: ${displayName}`)} ${chalk.green('✔ ')}`);
87
+
88
+ console.error(`${chalk.grey(`Create directory: ${prefix}public`)} ${chalk.green('✔ ')}`);
89
+ console.error(`${chalk.grey(`Create file: ${prefix}public/index.html`)} ${chalk.green('✔ ')}`);
90
+
91
+ console.error(`${chalk.grey(`Create directory: ${prefix}lib`)} ${chalk.green('✔ ')}`);
92
+ console.error(`${chalk.grey(`Create directory: ${prefix}src`)} ${chalk.green('✔ ')}`);
93
+ console.error(`${chalk.grey(`Create file: ${prefix}src/App.vue`)} ${chalk.green('✔ ')}`);
94
+ console.error(`${chalk.grey(`Create file: ${prefix}src/main.js`)} ${chalk.green('✔ ')}`);
95
+
96
+ console.error(`${chalk.grey(`Create file: ${prefix}babel.config.js`)} ${chalk.green('✔ ')}`);
97
+ console.error(`${chalk.grey(`Create file: ${prefix}package.json`)} ${chalk.green('✔ ')}`);
98
+ console.error(`${chalk.grey(`Create file: ${prefix}vue.config.js`)} ${chalk.green('✔ ')}`);
99
+ console.error(`${chalk.grey(`Create file: ${prefix}cloudcc-cli.config.js`)} ${chalk.green('✔ ')}`);
89
100
  callback();
90
101
  });
91
102
  }
@@ -14,7 +14,7 @@ function checkBranch(inBranch, notInBranch, condition = '') {
14
14
  guolv.push(branch)
15
15
  }
16
16
  } catch (error) {
17
- console.log(error)
17
+ console.error(error)
18
18
  }
19
19
 
20
20
  })