@cloudbase/cli 2.0.0 → 2.0.3-alpha.0

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 (206) hide show
  1. package/.editorconfig +9 -9
  2. package/.eslintignore +7 -7
  3. package/.eslintrc +35 -35
  4. package/.prettierrc.js +29 -29
  5. package/.vscode/launch.json +16 -16
  6. package/LICENSE +5 -5
  7. package/README.md +35 -35
  8. package/bin/cloudbase.js +5 -5
  9. package/bin/tcb.js +6 -4
  10. package/changelog.md +6 -6
  11. package/jest.config.js +17 -17
  12. package/lib/commands/account/login.js +18 -18
  13. package/lib/commands/storage/storage.js +1 -1
  14. package/lib/env/login.js +7 -7
  15. package/lib/run/service/deployPackage.js +6 -4
  16. package/lib/utils/net/http-request.js +4 -4
  17. package/lib/utils/tcbrApi/tcbr-cloud-api/request.js +3 -3
  18. package/package.json +17 -17
  19. package/post-install.js +61 -61
  20. package/runtime/nodejs/bootstrap.js +255 -255
  21. package/runtime/nodejs/runtime.js +183 -183
  22. package/src/auth/index.ts +1 -1
  23. package/src/auth/login.ts +91 -91
  24. package/src/auth/logout.ts +7 -7
  25. package/src/commands/account/index.ts +2 -2
  26. package/src/commands/account/login.ts +192 -192
  27. package/src/commands/account/logout.ts +24 -24
  28. package/src/commands/common.ts +246 -246
  29. package/src/commands/env/base.ts +90 -90
  30. package/src/commands/env/create.ts +92 -92
  31. package/src/commands/env/domain.ts +186 -186
  32. package/src/commands/env/index.ts +4 -4
  33. package/src/commands/env/login.ts +235 -235
  34. package/src/commands/framework/index.ts +124 -124
  35. package/src/commands/functions/alias/getRoute.ts +76 -76
  36. package/src/commands/functions/alias/index.ts +2 -2
  37. package/src/commands/functions/alias/setRoute.ts +82 -82
  38. package/src/commands/functions/code-download.ts +100 -100
  39. package/src/commands/functions/code-update.ts +62 -62
  40. package/src/commands/functions/concurrency/delete.ts +45 -45
  41. package/src/commands/functions/concurrency/index.ts +2 -2
  42. package/src/commands/functions/concurrency/list.ts +58 -58
  43. package/src/commands/functions/concurrency/set.ts +47 -47
  44. package/src/commands/functions/config-update.ts +76 -76
  45. package/src/commands/functions/copy.ts +62 -62
  46. package/src/commands/functions/delete.ts +79 -79
  47. package/src/commands/functions/deploy.ts +293 -293
  48. package/src/commands/functions/detail.ts +138 -138
  49. package/src/commands/functions/index.ts +16 -16
  50. package/src/commands/functions/invoke.ts +121 -121
  51. package/src/commands/functions/layer/bind.ts +182 -182
  52. package/src/commands/functions/layer/common.ts +8 -8
  53. package/src/commands/functions/layer/create.ts +49 -49
  54. package/src/commands/functions/layer/delete.ts +73 -73
  55. package/src/commands/functions/layer/download.ts +92 -92
  56. package/src/commands/functions/layer/index.ts +7 -7
  57. package/src/commands/functions/layer/list.ts +94 -94
  58. package/src/commands/functions/layer/sort.ts +76 -76
  59. package/src/commands/functions/list.ts +68 -68
  60. package/src/commands/functions/log.ts +148 -148
  61. package/src/commands/functions/run.ts +249 -249
  62. package/src/commands/functions/trigger-create.ts +79 -79
  63. package/src/commands/functions/trigger-delete.ts +105 -105
  64. package/src/commands/functions/version/index.ts +1 -1
  65. package/src/commands/functions/version/list.ts +73 -73
  66. package/src/commands/functions/version/publish.ts +43 -43
  67. package/src/commands/gateway/create.ts +109 -109
  68. package/src/commands/gateway/delete.ts +81 -81
  69. package/src/commands/gateway/domain.ts +159 -159
  70. package/src/commands/gateway/index.ts +5 -5
  71. package/src/commands/gateway/list.ts +76 -76
  72. package/src/commands/gateway/switch.ts +107 -107
  73. package/src/commands/helpers/index.ts +2 -2
  74. package/src/commands/helpers/init.ts +431 -431
  75. package/src/commands/helpers/new.ts +117 -117
  76. package/src/commands/helpers/open.ts +67 -67
  77. package/src/commands/hosting/hosting.ts +360 -360
  78. package/src/commands/index.ts +13 -13
  79. package/src/commands/lowcode/app.ts +34 -34
  80. package/src/commands/lowcode/comps.ts +322 -322
  81. package/src/commands/lowcode/index.ts +1 -1
  82. package/src/commands/lowcode/utils.ts +24 -24
  83. package/src/commands/run/image/index.ts +4 -4
  84. package/src/commands/run/standalonegateway/common.ts +7 -7
  85. package/src/commands/run/standalonegateway/create.ts +85 -85
  86. package/src/commands/run/standalonegateway/destroy.ts +59 -59
  87. package/src/commands/run/standalonegateway/index.ts +4 -4
  88. package/src/commands/run/standalonegateway/list.ts +53 -53
  89. package/src/commands/run/standalonegateway/package.ts +62 -62
  90. package/src/commands/run/standalonegateway/turn.ts +63 -63
  91. package/src/commands/run/version/index.ts +4 -4
  92. package/src/commands/smart.ts +132 -132
  93. package/src/commands/storage/storage.ts +464 -464
  94. package/src/commands/third/thirdAttach.ts +49 -49
  95. package/src/completion/index.ts +13 -13
  96. package/src/decorators/captureError.ts +25 -25
  97. package/src/decorators/constants.ts +12 -12
  98. package/src/decorators/deprecate.ts +25 -25
  99. package/src/decorators/guard.ts +42 -42
  100. package/src/decorators/index.ts +7 -7
  101. package/src/decorators/injectParams.ts +54 -54
  102. package/src/decorators/params/common.ts +28 -28
  103. package/src/decorators/params/index.ts +35 -35
  104. package/src/env/domain.ts +33 -33
  105. package/src/env/index.ts +63 -63
  106. package/src/env/login.ts +80 -80
  107. package/src/error.ts +36 -36
  108. package/src/function/alias.ts +43 -43
  109. package/src/function/base.ts +253 -253
  110. package/src/function/code.ts +55 -55
  111. package/src/function/concurrency.ts +57 -57
  112. package/src/function/create.ts +78 -78
  113. package/src/function/delete.ts +42 -42
  114. package/src/function/index.ts +10 -10
  115. package/src/function/layer/attach.ts +68 -68
  116. package/src/function/layer/create.ts +63 -63
  117. package/src/function/layer/delete.ts +21 -21
  118. package/src/function/layer/download.ts +54 -54
  119. package/src/function/layer/index.ts +7 -7
  120. package/src/function/layer/list.ts +32 -32
  121. package/src/function/layer/sort.ts +24 -24
  122. package/src/function/trigger.ts +97 -97
  123. package/src/function/update.ts +35 -35
  124. package/src/function/version.ts +38 -38
  125. package/src/function/vpc.ts +22 -22
  126. package/src/gateway/index.ts +137 -137
  127. package/src/hosting.ts +212 -212
  128. package/src/index.ts +13 -13
  129. package/src/logger.ts +17 -17
  130. package/src/run/create.ts +23 -23
  131. package/src/run/delete.ts +15 -15
  132. package/src/run/image/build.ts +36 -36
  133. package/src/run/image/delete.ts +13 -13
  134. package/src/run/image/index.ts +3 -3
  135. package/src/run/image/info.ts +26 -26
  136. package/src/run/list.ts +29 -29
  137. package/src/run/repo.ts +24 -24
  138. package/src/run/service/deployPackage.ts +6 -4
  139. package/src/run/standalonegateway/create.ts +24 -24
  140. package/src/run/standalonegateway/destroy.ts +19 -19
  141. package/src/run/standalonegateway/index.ts +4 -4
  142. package/src/run/standalonegateway/list.ts +74 -74
  143. package/src/run/standalonegateway/package/list.ts +24 -24
  144. package/src/run/standalonegateway/turn/index.ts +1 -1
  145. package/src/run/standalonegateway/turn/off.ts +19 -19
  146. package/src/run/standalonegateway/turn/on.ts +19 -19
  147. package/src/run/version/create.ts +68 -68
  148. package/src/run/version/delete.ts +15 -15
  149. package/src/run/version/index.ts +5 -5
  150. package/src/run/version/list.ts +16 -16
  151. package/src/run/version/modify.ts +16 -16
  152. package/src/run/version/repo.ts +27 -27
  153. package/src/run/version/update.ts +58 -58
  154. package/src/storage.ts +114 -114
  155. package/src/third/index.ts +12 -12
  156. package/src/utils/auth.ts +15 -15
  157. package/src/utils/cli-table.ts +23 -23
  158. package/src/utils/config.ts +39 -39
  159. package/src/utils/env.ts +244 -244
  160. package/src/utils/fs/del.ts +5 -5
  161. package/src/utils/fs/index.ts +71 -71
  162. package/src/utils/function-packer.ts +97 -97
  163. package/src/utils/log.ts +81 -81
  164. package/src/utils/net/cloud-api-request.ts +62 -62
  165. package/src/utils/net/credential.ts +53 -53
  166. package/src/utils/net/http-request.ts +84 -84
  167. package/src/utils/net/index.ts +4 -4
  168. package/src/utils/net/manager-service.ts +36 -36
  169. package/src/utils/net/proxy.ts +6 -6
  170. package/src/utils/notice.ts +28 -28
  171. package/src/utils/output/highlight.ts +5 -5
  172. package/src/utils/output/index.ts +2 -2
  173. package/src/utils/output/link.ts +10 -10
  174. package/src/utils/output/loading.ts +82 -82
  175. package/src/utils/parallel.ts +82 -82
  176. package/src/utils/platform/index.ts +2 -2
  177. package/src/utils/platform/mac.ts +21 -21
  178. package/src/utils/platform/os.ts +64 -64
  179. package/src/utils/platform/port.ts +10 -10
  180. package/src/utils/progress-bar.ts +38 -38
  181. package/src/utils/prompt/select.ts +59 -59
  182. package/src/utils/reporter/agree.ts +20 -20
  183. package/src/utils/reporter/download.ts +26 -26
  184. package/src/utils/reporter/index.ts +3 -3
  185. package/src/utils/reporter/usage.ts +20 -20
  186. package/src/utils/store/auth.ts +49 -49
  187. package/src/utils/store/common.ts +8 -8
  188. package/src/utils/store/db.ts +68 -68
  189. package/src/utils/store/index.ts +4 -4
  190. package/src/utils/store/usage.ts +12 -12
  191. package/src/utils/tcbrApi/tcbr-cloud-api/request.ts +13 -13
  192. package/src/utils/template.ts +170 -170
  193. package/src/utils/tools/encoding.ts +8 -8
  194. package/src/utils/tools/index.ts +4 -4
  195. package/src/utils/tools/object.ts +33 -33
  196. package/src/utils/tools/time.ts +38 -38
  197. package/src/utils/tools/uid.ts +19 -19
  198. package/templates/html/loginFail.html +90 -90
  199. package/templates/html/loginSuccess.html +86 -86
  200. package/templates/server/node/_gitignore +54 -54
  201. package/templates/server/node/cloudbaserc.json +10 -10
  202. package/templates/server/node/index.js +5 -5
  203. package/templates/server/node/package.json +9 -9
  204. package/tsconfig.json +19 -19
  205. package/tsconfig.test.json +13 -13
  206. package/.vscode/settings.json +0 -3
@@ -1,322 +1,322 @@
1
- import _ from 'lodash'
2
- import path from 'path'
3
- import { Command, ICommand } from '../common'
4
- import { InjectParams, Log, Logger, ArgsParams, ArgsOptions, CmdContext } from '../../decorators'
5
- import { CloudApiService, execWithLoading, fetchStream } from '../../utils'
6
- import { CloudBaseError } from '../../error'
7
- import chalk from 'chalk'
8
- import {
9
- build as buildComps,
10
- debug as debugComps,
11
- publishComps,
12
- graceBuildComps,
13
- graceDebugComps,
14
- gracePublishComps,
15
- IPublishCompsInfo,
16
- publishVersion,
17
- bootstrap,
18
- } from '@cloudbase/lowcode-cli'
19
- import { prompt } from 'enquirer'
20
- import fse from 'fs-extra'
21
- import * as semver from 'semver'
22
-
23
- const cloudService = CloudApiService.getInstance('lowcode')
24
- const DEFAULE_TEMPLATE_PATH = 'https://comp-public-1303824488.cos.ap-shanghai.myqcloud.com/lcc/template.zip'
25
-
26
- @ICommand()
27
- export class LowCodeCreateComps extends Command {
28
- get options() {
29
- return {
30
- cmd: 'lowcode',
31
- childCmd: 'create [name]',
32
- options: [
33
- {
34
- flags: '--verbose',
35
- desc: '是否打印详细日志'
36
- }
37
- ],
38
- desc: '创建组件库',
39
- requiredEnvId: false
40
- }
41
- }
42
-
43
- @InjectParams()
44
- async execute(@ArgsParams() params, @Log() log?: Logger) {
45
- const res = await cloudService.request('ListUserCompositeGroups')
46
- const comps = res?.data
47
- if (!comps?.count) {
48
- throw new CloudBaseError('没有可关联的云端组件库,请到低码控制台新建组件库!')
49
- }
50
-
51
- let compsName = params?.[0]
52
- if (!compsName) {
53
- const { selectCompsName } = await prompt<any>({
54
- type: 'select',
55
- name: 'selectCompsName',
56
- message: '关联云端组件库:',
57
- choices: comps.rows.map((row) => row.groupName)
58
- })
59
- compsName = selectCompsName
60
- } else {
61
- // 自己输入的组件库名称,校验是否在云端也有
62
- const comp = comps.rows.find((row) => row.groupName === compsName)
63
- if (!comp) {
64
- throw new CloudBaseError(`云端不存在组件库 ${compsName},请到低码控制台新建该组件库!`)
65
- }
66
- }
67
-
68
- // TODO: 逻辑迁移到 lowcode-cli
69
- await bootstrap(compsName, log);
70
-
71
- }
72
- }
73
-
74
- @ICommand()
75
- export class LowCodeBuildComps extends Command {
76
- get options() {
77
- return {
78
- cmd: 'lowcode',
79
- childCmd: 'build',
80
- options: [
81
- {
82
- flags: '--verbose',
83
- desc: '是否打印详细日志'
84
- }
85
- ],
86
- desc: '构建组件库',
87
- requiredEnvId: false
88
- }
89
- }
90
-
91
- @InjectParams()
92
- async execute(@CmdContext() ctx, @Log() log) {
93
- // 有RC配置, 使用新接口
94
- const config = ctx.config.lowcodeCustomComponents
95
- if (config) {
96
- await graceBuildComps({
97
- ...config,
98
- context: config.context || process.cwd(),
99
- logger: log
100
- })
101
- return
102
- }
103
- // 没有RC配置, 使用旧接口
104
- const compsPath = path.resolve(process.cwd())
105
- await _build(compsPath)
106
- }
107
- }
108
-
109
- @ICommand()
110
- export class LowCodeDebugComps extends Command {
111
- get options() {
112
- return {
113
- cmd: 'lowcode',
114
- childCmd: 'debug',
115
- options: [
116
- {
117
- flags: '--verbose',
118
- desc: '是否打印详细日志'
119
- },
120
- {
121
- flags: '--debug-port <debugPort>',
122
- desc: '调试端口,默认是8388'
123
- },
124
- {
125
- flags: '--wx-devtool-path <wxDevtoolPath>',
126
- desc: '微信开发者工具的安装路径'
127
- }
128
- ],
129
- desc: '调试组件库',
130
- requiredEnvId: false
131
- }
132
- }
133
-
134
- @InjectParams()
135
- async execute(@CmdContext() ctx, @ArgsOptions() options, @Log() log) {
136
- // 有RC配置, 使用新接口
137
- const config = ctx.config.lowcodeCustomComponents
138
- if (config) {
139
- await graceDebugComps({
140
- ...config,
141
- context: config.context || process.cwd(),
142
- debugPort: options?.debugPort || 8388,
143
- logger: log,
144
- wxDevtoolPath: options?.wxDevtoolPath
145
- })
146
- return
147
- }
148
- // 没有RC配置, 使用旧接口
149
- const compsPath = path.resolve(process.cwd())
150
- await debugComps(compsPath, options?.debugPort || 8388)
151
- }
152
- }
153
-
154
- @ICommand()
155
- export class LowCodePublishComps extends Command {
156
- get options() {
157
- return {
158
- cmd: 'lowcode',
159
- childCmd: 'publish',
160
- options: [
161
- {
162
- flags: '--verbose',
163
- desc: '是否打印详细日志'
164
- },
165
- {
166
- flags: '--admin',
167
- desc: '是否使用admin接口',
168
- hideHelp: true
169
- }
170
- ],
171
- desc: '发布组件库',
172
- requiredEnvId: false
173
- }
174
- }
175
-
176
- @InjectParams()
177
- async execute(@CmdContext() ctx, @Log() log: Logger, @ArgsOptions() options: any) {
178
- // 有RC配置, 使用新接口
179
-
180
- const config = ctx.config.lowcodeCustomComponents
181
- if (config) {
182
- await gracePublishComps({
183
- ...config,
184
- context: config.context || process.cwd(),
185
- logger: log,
186
- isAdmin: Boolean(options.admin)
187
- })
188
- log.success('组件库 - 已同步到云端,请到低码控制台发布该组件库!')
189
- return
190
- }
191
- // 没有RC配置, 使用旧接口
192
- // 读取本地组件库信息
193
- const compsPath = path.resolve(process.cwd())
194
- const compsName = fse.readJSONSync(path.resolve(compsPath, 'package.json')).name
195
- // 读取云端组件库列表
196
- const res = await cloudService.request('ListUserCompositeGroups')
197
- const comps = res?.data
198
- if (!comps?.count) {
199
- throw new CloudBaseError(`云端不存在组件库 ${compsName},请到低码控制台新建该组件库!`)
200
- }
201
- // 校验组件库信息
202
- const comp = comps.rows.find((row) => row.groupName === compsName)
203
- if (!comp) {
204
- throw new CloudBaseError(`云端不存在组件库 ${compsName},请到低码控制台新建该组件库!`)
205
- }
206
- // 上传组件库
207
- await _build(compsPath)
208
- await _publish({
209
- id: comp.id,
210
- name: compsName,
211
- path: compsPath,
212
- log,
213
- })
214
-
215
- log.info('\n👉 组件库已经同步到云端,请到低码控制台发布该组件库!')
216
- }
217
- }
218
-
219
- @ICommand()
220
- export class LowCodePublishVersionComps extends Command {
221
- get options() {
222
- return {
223
- cmd: 'lowcode',
224
- childCmd: 'publishVersion',
225
- options: [
226
- {
227
- flags: '--verbose',
228
- desc: '是否打印详细日志'
229
- },
230
- {
231
- flags: '--comment <comment>',
232
- desc: '版本备注',
233
- },
234
- {
235
- flags: '--tag <version>',
236
- desc: '版本号'
237
- },
238
- {
239
- flags: '--admin',
240
- desc: '是否使用admin接口',
241
- hideHelp: true
242
- }
243
- ],
244
- desc: '发布组件库版本',
245
- requiredEnvId: false
246
- }
247
- }
248
-
249
- @InjectParams()
250
- async execute(@CmdContext() ctx, @ArgsOptions() options, @Log() log?: Logger) {
251
- // 有RC配置, 使用新接口
252
- const {tag, comment, admin} = options
253
- if(!comment) {
254
- log.error('请使用 --comment 填写版本注释')
255
- return
256
- }
257
- if(!tag) {
258
- log.error('请使用 --tag 填写符合semver的版本号')
259
- return
260
- }
261
- if(!semver.valid(tag)) {
262
- log.error('组件库版本不符合semver标准')
263
- return
264
- }
265
- const config = ctx.config.lowcodeCustomComponents
266
-
267
- if(!config) {
268
- log.error('组件库 - 请添加组件库配置到cloudbaserc.json 以使用该命令')
269
- }
270
-
271
- const res = await publishVersion({
272
- ...config,
273
- context: config.context || process.cwd(),
274
- logger: log,
275
- isAdmin: options.admin
276
- }, comment, tag)
277
- if(res.data.code === 200) {
278
- log.success('组件库 - 已发布新版本!')
279
- return
280
- }
281
- if (res.data.code === 100) {
282
- log.error('组件库 - 无待发布版本')
283
- return
284
- }
285
- if (res.data.code === 201) {
286
- log.error('组件库 - comment 重复, 请使用有意义的comment')
287
- return
288
- } else {
289
- if(res.data.msg) {
290
- log.error(`组件库 - ${res.data.msg} RequestId: ${res.requestId}`)
291
- } else {
292
- log.error('组件库 - 未知错误')
293
- }
294
- return
295
- }
296
- }
297
- }
298
-
299
-
300
- async function _build(compsPath) {
301
- await execWithLoading(
302
- async () => {
303
- await buildComps(compsPath)
304
- },
305
- {
306
- startTip: '组件库 - 构建中',
307
- successTip: '组件库 - 构建成功'
308
- }
309
- )
310
- }
311
-
312
- async function _publish(info: IPublishCompsInfo) {
313
- await execWithLoading(
314
- async () => {
315
- await publishComps(info)
316
- },
317
- {
318
- startTip: '组件库 - 发布中',
319
- successTip: '组件库 - 发布成功'
320
- }
321
- )
322
- }
1
+ import _ from 'lodash'
2
+ import path from 'path'
3
+ import { Command, ICommand } from '../common'
4
+ import { InjectParams, Log, Logger, ArgsParams, ArgsOptions, CmdContext } from '../../decorators'
5
+ import { CloudApiService, execWithLoading, fetchStream } from '../../utils'
6
+ import { CloudBaseError } from '../../error'
7
+ import chalk from 'chalk'
8
+ import {
9
+ build as buildComps,
10
+ debug as debugComps,
11
+ publishComps,
12
+ graceBuildComps,
13
+ graceDebugComps,
14
+ gracePublishComps,
15
+ IPublishCompsInfo,
16
+ publishVersion,
17
+ bootstrap,
18
+ } from '@cloudbase/lowcode-cli'
19
+ import { prompt } from 'enquirer'
20
+ import fse from 'fs-extra'
21
+ import * as semver from 'semver'
22
+
23
+ const cloudService = CloudApiService.getInstance('lowcode')
24
+ const DEFAULE_TEMPLATE_PATH = 'https://comp-public-1303824488.cos.ap-shanghai.myqcloud.com/lcc/template.zip'
25
+
26
+ @ICommand()
27
+ export class LowCodeCreateComps extends Command {
28
+ get options() {
29
+ return {
30
+ cmd: 'lowcode',
31
+ childCmd: 'create [name]',
32
+ options: [
33
+ {
34
+ flags: '--verbose',
35
+ desc: '是否打印详细日志'
36
+ }
37
+ ],
38
+ desc: '创建组件库',
39
+ requiredEnvId: false
40
+ }
41
+ }
42
+
43
+ @InjectParams()
44
+ async execute(@ArgsParams() params, @Log() log?: Logger) {
45
+ const res = await cloudService.request('ListUserCompositeGroups')
46
+ const comps = res?.data
47
+ if (!comps?.count) {
48
+ throw new CloudBaseError('没有可关联的云端组件库,请到低码控制台新建组件库!')
49
+ }
50
+
51
+ let compsName = params?.[0]
52
+ if (!compsName) {
53
+ const { selectCompsName } = await prompt<any>({
54
+ type: 'select',
55
+ name: 'selectCompsName',
56
+ message: '关联云端组件库:',
57
+ choices: comps.rows.map((row) => row.groupName)
58
+ })
59
+ compsName = selectCompsName
60
+ } else {
61
+ // 自己输入的组件库名称,校验是否在云端也有
62
+ const comp = comps.rows.find((row) => row.groupName === compsName)
63
+ if (!comp) {
64
+ throw new CloudBaseError(`云端不存在组件库 ${compsName},请到低码控制台新建该组件库!`)
65
+ }
66
+ }
67
+
68
+ // TODO: 逻辑迁移到 lowcode-cli
69
+ await bootstrap(compsName, log);
70
+
71
+ }
72
+ }
73
+
74
+ @ICommand()
75
+ export class LowCodeBuildComps extends Command {
76
+ get options() {
77
+ return {
78
+ cmd: 'lowcode',
79
+ childCmd: 'build',
80
+ options: [
81
+ {
82
+ flags: '--verbose',
83
+ desc: '是否打印详细日志'
84
+ }
85
+ ],
86
+ desc: '构建组件库',
87
+ requiredEnvId: false
88
+ }
89
+ }
90
+
91
+ @InjectParams()
92
+ async execute(@CmdContext() ctx, @Log() log) {
93
+ // 有RC配置, 使用新接口
94
+ const config = ctx.config.lowcodeCustomComponents
95
+ if (config) {
96
+ await graceBuildComps({
97
+ ...config,
98
+ context: config.context || process.cwd(),
99
+ logger: log
100
+ })
101
+ return
102
+ }
103
+ // 没有RC配置, 使用旧接口
104
+ const compsPath = path.resolve(process.cwd())
105
+ await _build(compsPath)
106
+ }
107
+ }
108
+
109
+ @ICommand()
110
+ export class LowCodeDebugComps extends Command {
111
+ get options() {
112
+ return {
113
+ cmd: 'lowcode',
114
+ childCmd: 'debug',
115
+ options: [
116
+ {
117
+ flags: '--verbose',
118
+ desc: '是否打印详细日志'
119
+ },
120
+ {
121
+ flags: '--debug-port <debugPort>',
122
+ desc: '调试端口,默认是8388'
123
+ },
124
+ {
125
+ flags: '--wx-devtool-path <wxDevtoolPath>',
126
+ desc: '微信开发者工具的安装路径'
127
+ }
128
+ ],
129
+ desc: '调试组件库',
130
+ requiredEnvId: false
131
+ }
132
+ }
133
+
134
+ @InjectParams()
135
+ async execute(@CmdContext() ctx, @ArgsOptions() options, @Log() log) {
136
+ // 有RC配置, 使用新接口
137
+ const config = ctx.config.lowcodeCustomComponents
138
+ if (config) {
139
+ await graceDebugComps({
140
+ ...config,
141
+ context: config.context || process.cwd(),
142
+ debugPort: options?.debugPort || 8388,
143
+ logger: log,
144
+ wxDevtoolPath: options?.wxDevtoolPath
145
+ })
146
+ return
147
+ }
148
+ // 没有RC配置, 使用旧接口
149
+ const compsPath = path.resolve(process.cwd())
150
+ await debugComps(compsPath, options?.debugPort || 8388)
151
+ }
152
+ }
153
+
154
+ @ICommand()
155
+ export class LowCodePublishComps extends Command {
156
+ get options() {
157
+ return {
158
+ cmd: 'lowcode',
159
+ childCmd: 'publish',
160
+ options: [
161
+ {
162
+ flags: '--verbose',
163
+ desc: '是否打印详细日志'
164
+ },
165
+ {
166
+ flags: '--admin',
167
+ desc: '是否使用admin接口',
168
+ hideHelp: true
169
+ }
170
+ ],
171
+ desc: '发布组件库',
172
+ requiredEnvId: false
173
+ }
174
+ }
175
+
176
+ @InjectParams()
177
+ async execute(@CmdContext() ctx, @Log() log: Logger, @ArgsOptions() options: any) {
178
+ // 有RC配置, 使用新接口
179
+
180
+ const config = ctx.config.lowcodeCustomComponents
181
+ if (config) {
182
+ await gracePublishComps({
183
+ ...config,
184
+ context: config.context || process.cwd(),
185
+ logger: log,
186
+ isAdmin: Boolean(options.admin)
187
+ })
188
+ log.success('组件库 - 已同步到云端,请到低码控制台发布该组件库!')
189
+ return
190
+ }
191
+ // 没有RC配置, 使用旧接口
192
+ // 读取本地组件库信息
193
+ const compsPath = path.resolve(process.cwd())
194
+ const compsName = fse.readJSONSync(path.resolve(compsPath, 'package.json')).name
195
+ // 读取云端组件库列表
196
+ const res = await cloudService.request('ListUserCompositeGroups')
197
+ const comps = res?.data
198
+ if (!comps?.count) {
199
+ throw new CloudBaseError(`云端不存在组件库 ${compsName},请到低码控制台新建该组件库!`)
200
+ }
201
+ // 校验组件库信息
202
+ const comp = comps.rows.find((row) => row.groupName === compsName)
203
+ if (!comp) {
204
+ throw new CloudBaseError(`云端不存在组件库 ${compsName},请到低码控制台新建该组件库!`)
205
+ }
206
+ // 上传组件库
207
+ await _build(compsPath)
208
+ await _publish({
209
+ id: comp.id,
210
+ name: compsName,
211
+ path: compsPath,
212
+ log,
213
+ })
214
+
215
+ log.info('\n👉 组件库已经同步到云端,请到低码控制台发布该组件库!')
216
+ }
217
+ }
218
+
219
+ @ICommand()
220
+ export class LowCodePublishVersionComps extends Command {
221
+ get options() {
222
+ return {
223
+ cmd: 'lowcode',
224
+ childCmd: 'publishVersion',
225
+ options: [
226
+ {
227
+ flags: '--verbose',
228
+ desc: '是否打印详细日志'
229
+ },
230
+ {
231
+ flags: '--comment <comment>',
232
+ desc: '版本备注',
233
+ },
234
+ {
235
+ flags: '--tag <version>',
236
+ desc: '版本号'
237
+ },
238
+ {
239
+ flags: '--admin',
240
+ desc: '是否使用admin接口',
241
+ hideHelp: true
242
+ }
243
+ ],
244
+ desc: '发布组件库版本',
245
+ requiredEnvId: false
246
+ }
247
+ }
248
+
249
+ @InjectParams()
250
+ async execute(@CmdContext() ctx, @ArgsOptions() options, @Log() log?: Logger) {
251
+ // 有RC配置, 使用新接口
252
+ const {tag, comment, admin} = options
253
+ if(!comment) {
254
+ log.error('请使用 --comment 填写版本注释')
255
+ return
256
+ }
257
+ if(!tag) {
258
+ log.error('请使用 --tag 填写符合semver的版本号')
259
+ return
260
+ }
261
+ if(!semver.valid(tag)) {
262
+ log.error('组件库版本不符合semver标准')
263
+ return
264
+ }
265
+ const config = ctx.config.lowcodeCustomComponents
266
+
267
+ if(!config) {
268
+ log.error('组件库 - 请添加组件库配置到cloudbaserc.json 以使用该命令')
269
+ }
270
+
271
+ const res = await publishVersion({
272
+ ...config,
273
+ context: config.context || process.cwd(),
274
+ logger: log,
275
+ isAdmin: options.admin
276
+ }, comment, tag)
277
+ if(res.data.code === 200) {
278
+ log.success('组件库 - 已发布新版本!')
279
+ return
280
+ }
281
+ if (res.data.code === 100) {
282
+ log.error('组件库 - 无待发布版本')
283
+ return
284
+ }
285
+ if (res.data.code === 201) {
286
+ log.error('组件库 - comment 重复, 请使用有意义的comment')
287
+ return
288
+ } else {
289
+ if(res.data.msg) {
290
+ log.error(`组件库 - ${res.data.msg} RequestId: ${res.requestId}`)
291
+ } else {
292
+ log.error('组件库 - 未知错误')
293
+ }
294
+ return
295
+ }
296
+ }
297
+ }
298
+
299
+
300
+ async function _build(compsPath) {
301
+ await execWithLoading(
302
+ async () => {
303
+ await buildComps(compsPath)
304
+ },
305
+ {
306
+ startTip: '组件库 - 构建中',
307
+ successTip: '组件库 - 构建成功'
308
+ }
309
+ )
310
+ }
311
+
312
+ async function _publish(info: IPublishCompsInfo) {
313
+ await execWithLoading(
314
+ async () => {
315
+ await publishComps(info)
316
+ },
317
+ {
318
+ startTip: '组件库 - 发布中',
319
+ successTip: '组件库 - 发布成功'
320
+ }
321
+ )
322
+ }
@@ -1,2 +1,2 @@
1
- export * from './app'
1
+ export * from './app'
2
2
  export * from './comps'