@cloudbase/cli 2.0.12 → 2.1.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 (277) hide show
  1. package/.history/.gitignore_20220624162613 +84 -0
  2. package/.history/.gitignore_20220627114054 +86 -0
  3. package/.history/package_20220711204706.json +88 -0
  4. package/.history/package_20220711204818.json +88 -0
  5. package/.history/package_20220712151717.json +88 -0
  6. package/.history/package_20220712212537.json +88 -0
  7. package/.history/package_20220722205058.json +88 -0
  8. package/.history/package_20220726110155.json +88 -0
  9. package/.history/package_20220726110201.json +88 -0
  10. package/.history/package_20220728110905.json +88 -0
  11. package/.history/package_20220728110936.json +88 -0
  12. package/.history/package_20220728111531.json +89 -0
  13. package/.history/package_20220728111810.json +89 -0
  14. package/.history/src/commands/lowcode/app_20220728111717.ts +52 -0
  15. package/{src/commands/lowcode/app.ts → .history/src/commands/lowcode/app_20220728112031.ts} +2 -2
  16. package/{src/index.ts → .history/src/index_20220624162613.ts} +0 -0
  17. package/.history/src/index_20220627113609.ts +15 -0
  18. package/.history/src/index_20220627114102.ts +13 -0
  19. package/.vscode/launch.json +10 -0
  20. package/bin/cloudbase.js +0 -0
  21. package/bin/tcb.js +5 -5
  22. package/lib/commands/account/login.js +3 -6
  23. package/lib/commands/env/index.js +0 -1
  24. package/lib/commands/lowcode/app.js +1 -1
  25. package/lib/commands/run/index.js +0 -1
  26. package/lib/commands/run/service/deploy.js +6 -1
  27. package/lib/commands/run/service/index.js +0 -1
  28. package/lib/commands/run/service/update.js +4 -0
  29. package/lib/constant.js +15 -1
  30. package/lib/env/index.js +1 -11
  31. package/lib/run/index.js +0 -1
  32. package/lib/run/service/common.js +20 -7
  33. package/lib/run/service/config.js +2 -3
  34. package/lib/run/service/deployPackage.js +2 -9
  35. package/lib/run/service/index.js +0 -1
  36. package/lib/run/service/update.js +1 -1
  37. package/lib/utils/debug-logger.js +30 -0
  38. package/lib/utils/net/cloud-api-request.js +7 -1
  39. package/lib/utils/net/http-request.js +16 -5
  40. package/package.json +2 -2
  41. package/types/commands/env/index.d.ts +0 -1
  42. package/types/commands/run/index.d.ts +0 -1
  43. package/types/commands/run/service/index.d.ts +0 -1
  44. package/types/env/index.d.ts +0 -6
  45. package/types/run/index.d.ts +0 -1
  46. package/types/run/service/common.d.ts +8 -1
  47. package/types/run/service/index.d.ts +0 -1
  48. package/types/types.d.ts +4 -0
  49. package/types/utils/debug-logger.d.ts +1 -0
  50. package/types/utils/net/http-request.d.ts +6 -2
  51. package/lib/commands/env/create.js +0 -115
  52. package/lib/commands/run/create.js +0 -162
  53. package/lib/commands/run/service/create.js +0 -144
  54. package/lib/run/create.js +0 -19
  55. package/lib/run/service/create.js +0 -67
  56. package/src/auth/index.ts +0 -2
  57. package/src/auth/login.ts +0 -91
  58. package/src/auth/logout.ts +0 -7
  59. package/src/commands/account/index.ts +0 -2
  60. package/src/commands/account/login.ts +0 -192
  61. package/src/commands/account/logout.ts +0 -24
  62. package/src/commands/common.ts +0 -246
  63. package/src/commands/env/base.ts +0 -90
  64. package/src/commands/env/create.ts +0 -92
  65. package/src/commands/env/domain.ts +0 -186
  66. package/src/commands/env/index.ts +0 -4
  67. package/src/commands/env/login.ts +0 -235
  68. package/src/commands/framework/index.ts +0 -124
  69. package/src/commands/functions/alias/getRoute.ts +0 -76
  70. package/src/commands/functions/alias/index.ts +0 -2
  71. package/src/commands/functions/alias/setRoute.ts +0 -82
  72. package/src/commands/functions/code-download.ts +0 -100
  73. package/src/commands/functions/code-update.ts +0 -62
  74. package/src/commands/functions/concurrency/delete.ts +0 -45
  75. package/src/commands/functions/concurrency/index.ts +0 -3
  76. package/src/commands/functions/concurrency/list.ts +0 -58
  77. package/src/commands/functions/concurrency/set.ts +0 -47
  78. package/src/commands/functions/config-update.ts +0 -76
  79. package/src/commands/functions/copy.ts +0 -62
  80. package/src/commands/functions/delete.ts +0 -79
  81. package/src/commands/functions/deploy.ts +0 -293
  82. package/src/commands/functions/detail.ts +0 -138
  83. package/src/commands/functions/index.ts +0 -16
  84. package/src/commands/functions/invoke.ts +0 -121
  85. package/src/commands/functions/layer/bind.ts +0 -182
  86. package/src/commands/functions/layer/common.ts +0 -8
  87. package/src/commands/functions/layer/create.ts +0 -49
  88. package/src/commands/functions/layer/delete.ts +0 -73
  89. package/src/commands/functions/layer/download.ts +0 -92
  90. package/src/commands/functions/layer/index.ts +0 -7
  91. package/src/commands/functions/layer/list.ts +0 -94
  92. package/src/commands/functions/layer/sort.ts +0 -76
  93. package/src/commands/functions/list.ts +0 -68
  94. package/src/commands/functions/log.ts +0 -148
  95. package/src/commands/functions/run.ts +0 -249
  96. package/src/commands/functions/trigger-create.ts +0 -79
  97. package/src/commands/functions/trigger-delete.ts +0 -105
  98. package/src/commands/functions/version/index.ts +0 -2
  99. package/src/commands/functions/version/list.ts +0 -73
  100. package/src/commands/functions/version/publish.ts +0 -43
  101. package/src/commands/gateway/create.ts +0 -109
  102. package/src/commands/gateway/delete.ts +0 -81
  103. package/src/commands/gateway/domain.ts +0 -159
  104. package/src/commands/gateway/index.ts +0 -5
  105. package/src/commands/gateway/list.ts +0 -76
  106. package/src/commands/gateway/switch.ts +0 -107
  107. package/src/commands/helpers/index.ts +0 -3
  108. package/src/commands/helpers/init.ts +0 -431
  109. package/src/commands/helpers/new.ts +0 -117
  110. package/src/commands/helpers/open.ts +0 -67
  111. package/src/commands/hosting/hosting.ts +0 -360
  112. package/src/commands/hosting/index.ts +0 -1
  113. package/src/commands/index.ts +0 -13
  114. package/src/commands/lowcode/comps.ts +0 -325
  115. package/src/commands/lowcode/index.ts +0 -2
  116. package/src/commands/lowcode/utils.ts +0 -25
  117. package/src/commands/run/create.ts +0 -153
  118. package/src/commands/run/delete.ts +0 -77
  119. package/src/commands/run/image/common.ts +0 -8
  120. package/src/commands/run/image/delete.ts +0 -68
  121. package/src/commands/run/image/download.ts +0 -68
  122. package/src/commands/run/image/index.ts +0 -5
  123. package/src/commands/run/image/list.ts +0 -84
  124. package/src/commands/run/image/upload.ts +0 -76
  125. package/src/commands/run/index.ts +0 -7
  126. package/src/commands/run/list.ts +0 -83
  127. package/src/commands/run/service/config.ts +0 -81
  128. package/src/commands/run/service/create.ts +0 -122
  129. package/src/commands/run/service/deploy.ts +0 -125
  130. package/src/commands/run/service/index.ts +0 -5
  131. package/src/commands/run/service/list.ts +0 -94
  132. package/src/commands/run/service/update.ts +0 -108
  133. package/src/commands/run/standalonegateway/common.ts +0 -8
  134. package/src/commands/run/standalonegateway/create.ts +0 -85
  135. package/src/commands/run/standalonegateway/destroy.ts +0 -59
  136. package/src/commands/run/standalonegateway/index.ts +0 -5
  137. package/src/commands/run/standalonegateway/list.ts +0 -53
  138. package/src/commands/run/standalonegateway/package.ts +0 -62
  139. package/src/commands/run/standalonegateway/turn.ts +0 -63
  140. package/src/commands/run/version/common.ts +0 -8
  141. package/src/commands/run/version/create.ts +0 -369
  142. package/src/commands/run/version/delete.ts +0 -64
  143. package/src/commands/run/version/index.ts +0 -5
  144. package/src/commands/run/version/list.ts +0 -91
  145. package/src/commands/run/version/modify.ts +0 -137
  146. package/src/commands/run/version/update.ts +0 -398
  147. package/src/commands/smart.ts +0 -132
  148. package/src/commands/storage/index.ts +0 -1
  149. package/src/commands/storage/storage.ts +0 -464
  150. package/src/commands/third/index.ts +0 -1
  151. package/src/commands/third/thirdAttach.ts +0 -49
  152. package/src/completion/index.ts +0 -13
  153. package/src/constant.ts +0 -154
  154. package/src/decorators/captureError.ts +0 -25
  155. package/src/decorators/constants.ts +0 -12
  156. package/src/decorators/deprecate.ts +0 -25
  157. package/src/decorators/guard.ts +0 -42
  158. package/src/decorators/index.ts +0 -7
  159. package/src/decorators/injectParams.ts +0 -54
  160. package/src/decorators/params/common.ts +0 -28
  161. package/src/decorators/params/index.ts +0 -35
  162. package/src/env/domain.ts +0 -33
  163. package/src/env/index.ts +0 -63
  164. package/src/env/login.ts +0 -80
  165. package/src/error.ts +0 -36
  166. package/src/function/alias.ts +0 -43
  167. package/src/function/base.ts +0 -253
  168. package/src/function/code.ts +0 -55
  169. package/src/function/concurrency.ts +0 -57
  170. package/src/function/create.ts +0 -78
  171. package/src/function/delete.ts +0 -42
  172. package/src/function/index.ts +0 -11
  173. package/src/function/layer/attach.ts +0 -68
  174. package/src/function/layer/create.ts +0 -63
  175. package/src/function/layer/delete.ts +0 -21
  176. package/src/function/layer/download.ts +0 -54
  177. package/src/function/layer/index.ts +0 -7
  178. package/src/function/layer/list.ts +0 -32
  179. package/src/function/layer/sort.ts +0 -24
  180. package/src/function/trigger.ts +0 -97
  181. package/src/function/update.ts +0 -35
  182. package/src/function/version.ts +0 -39
  183. package/src/function/vpc.ts +0 -22
  184. package/src/gateway/index.ts +0 -137
  185. package/src/help.ts +0 -50
  186. package/src/hosting.ts +0 -212
  187. package/src/logger.ts +0 -17
  188. package/src/run/create.ts +0 -23
  189. package/src/run/delete.ts +0 -15
  190. package/src/run/image/build.ts +0 -36
  191. package/src/run/image/delete.ts +0 -14
  192. package/src/run/image/index.ts +0 -4
  193. package/src/run/image/info.ts +0 -27
  194. package/src/run/image/list.ts +0 -23
  195. package/src/run/index.ts +0 -8
  196. package/src/run/list.ts +0 -30
  197. package/src/run/repo.ts +0 -25
  198. package/src/run/service/common.ts +0 -311
  199. package/src/run/service/config.ts +0 -77
  200. package/src/run/service/create.ts +0 -52
  201. package/src/run/service/deployPackage.ts +0 -65
  202. package/src/run/service/index.ts +0 -7
  203. package/src/run/service/list.ts +0 -29
  204. package/src/run/service/showLogs.ts +0 -98
  205. package/src/run/service/update.ts +0 -82
  206. package/src/run/standalonegateway/create.ts +0 -24
  207. package/src/run/standalonegateway/destroy.ts +0 -19
  208. package/src/run/standalonegateway/index.ts +0 -5
  209. package/src/run/standalonegateway/list.ts +0 -74
  210. package/src/run/standalonegateway/package/index.ts +0 -1
  211. package/src/run/standalonegateway/package/list.ts +0 -24
  212. package/src/run/standalonegateway/turn/index.ts +0 -2
  213. package/src/run/standalonegateway/turn/off.ts +0 -19
  214. package/src/run/standalonegateway/turn/on.ts +0 -19
  215. package/src/run/version/create.ts +0 -68
  216. package/src/run/version/delete.ts +0 -16
  217. package/src/run/version/index.ts +0 -6
  218. package/src/run/version/list.ts +0 -17
  219. package/src/run/version/modify.ts +0 -17
  220. package/src/run/version/repo.ts +0 -28
  221. package/src/run/version/update.ts +0 -59
  222. package/src/storage.ts +0 -114
  223. package/src/third/index.ts +0 -13
  224. package/src/types.ts +0 -672
  225. package/src/utils/auth.ts +0 -15
  226. package/src/utils/checkTcbrEnv.ts +0 -69
  227. package/src/utils/cli-table.ts +0 -23
  228. package/src/utils/commonParamsCheck.ts +0 -65
  229. package/src/utils/config.ts +0 -39
  230. package/src/utils/env.ts +0 -244
  231. package/src/utils/fs/del.ts +0 -5
  232. package/src/utils/fs/index.ts +0 -71
  233. package/src/utils/function-packer.ts +0 -97
  234. package/src/utils/index.ts +0 -25
  235. package/src/utils/log.ts +0 -82
  236. package/src/utils/net/cloud-api-request.ts +0 -62
  237. package/src/utils/net/credential.ts +0 -53
  238. package/src/utils/net/http-request.ts +0 -84
  239. package/src/utils/net/index.ts +0 -5
  240. package/src/utils/net/manager-service.ts +0 -36
  241. package/src/utils/net/proxy.ts +0 -6
  242. package/src/utils/notice.ts +0 -28
  243. package/src/utils/output/highlight.ts +0 -5
  244. package/src/utils/output/index.ts +0 -3
  245. package/src/utils/output/link.ts +0 -10
  246. package/src/utils/output/loading.ts +0 -82
  247. package/src/utils/parallel.ts +0 -82
  248. package/src/utils/platform/index.ts +0 -3
  249. package/src/utils/platform/mac.ts +0 -21
  250. package/src/utils/platform/os.ts +0 -64
  251. package/src/utils/platform/port.ts +0 -10
  252. package/src/utils/progress-bar.ts +0 -38
  253. package/src/utils/prompt/index.ts +0 -1
  254. package/src/utils/prompt/select.ts +0 -60
  255. package/src/utils/reporter/agree.ts +0 -20
  256. package/src/utils/reporter/download.ts +0 -26
  257. package/src/utils/reporter/index.ts +0 -3
  258. package/src/utils/reporter/usage.ts +0 -20
  259. package/src/utils/store/auth.ts +0 -49
  260. package/src/utils/store/common.ts +0 -8
  261. package/src/utils/store/db.ts +0 -68
  262. package/src/utils/store/index.ts +0 -5
  263. package/src/utils/store/usage.ts +0 -12
  264. package/src/utils/tcbrApi/callTcbrApi.ts +0 -28
  265. package/src/utils/tcbrApi/index.ts +0 -1
  266. package/src/utils/template.ts +0 -170
  267. package/src/utils/tools/encoding.ts +0 -8
  268. package/src/utils/tools/index.ts +0 -4
  269. package/src/utils/tools/object.ts +0 -33
  270. package/src/utils/tools/time.ts +0 -38
  271. package/src/utils/tools/uid.ts +0 -19
  272. package/src/utils/validator.ts +0 -65
  273. package/types/commands/env/create.d.ts +0 -12
  274. package/types/commands/run/create.d.ts +0 -13
  275. package/types/commands/run/service/create.d.ts +0 -13
  276. package/types/run/create.d.ts +0 -2
  277. package/types/run/service/create.d.ts +0 -7
@@ -1,360 +0,0 @@
1
- import fs from 'fs'
2
- import path from 'path'
3
- import inquirer from 'inquirer'
4
- import logSymbols from 'log-symbols'
5
- import { HostingService } from '@cloudbase/manager-node/types/hosting'
6
-
7
- import { Command, ICommand } from '../common'
8
-
9
- import {
10
- getHostingInfo,
11
- hostingDeploy,
12
- hostingDelete,
13
- hostingList,
14
- walkLocalDir
15
- } from '../../hosting'
16
- import { CloudBaseError } from '../../error'
17
- import {
18
- isDirectory,
19
- loadingFactory,
20
- printHorizontalTable,
21
- formatDate,
22
- formateFileSize,
23
- createUploadProgressBar,
24
- genClickableLink,
25
- checkFullAccess,
26
- getMangerService
27
- } from '../../utils'
28
-
29
- import { InjectParams, EnvId, ArgsParams, ArgsOptions, Log, Logger } from '../../decorators'
30
-
31
- const HostingStatusMap = {
32
- init: '初始化中',
33
- process: '处理中',
34
- online: '已上线',
35
- destroying: '销毁中',
36
- offline: '已下线',
37
- create_fail: '初始化失败', // eslint-disable-line
38
- destroy_fail: '销毁失败' // eslint-disable-line
39
- }
40
-
41
- async function getHostingService(envId: string): Promise<HostingService> {
42
- const { hosting } = await getMangerService(envId)
43
- return hosting
44
- }
45
-
46
- @ICommand()
47
- export class HostingDetail extends Command {
48
- get options() {
49
- return {
50
- cmd: 'hosting',
51
- childCmd: 'detail',
52
- deprecateCmd: 'hosting:detail',
53
- options: [
54
- {
55
- flags: '-e, --envId <envId>',
56
- desc: '环境 Id'
57
- }
58
- ],
59
- desc: '查看静态网站服务信息'
60
- }
61
- }
62
-
63
- @InjectParams()
64
- async execute(@EnvId() envId, @Log() log: Logger) {
65
- const res = await getHostingInfo({ envId })
66
-
67
- const website = res?.data?.[0]
68
-
69
- if (!website) {
70
- const link = genClickableLink('https://console.cloud.tencent.com/tcb')
71
- throw new CloudBaseError(
72
- `您还没有开启静态网站服务,请先到云开发控制台开启静态网站服务!\n 👉 ${link}`
73
- )
74
- }
75
-
76
- const link = genClickableLink(`https://${website.cdnDomain}`)
77
- // offline 状态不展示域名
78
- if (website.status !== 'offline') {
79
- log.info(`静态网站域名:${link}`)
80
- }
81
- log.info(`静态网站状态:【${HostingStatusMap[website.status]}】`)
82
- }
83
- }
84
-
85
- @ICommand()
86
- export class HostingDeploy extends Command {
87
- get options() {
88
- return {
89
- cmd: 'hosting',
90
- childCmd: 'deploy [filePath] [cloudPath]',
91
- deprecateCmd: 'hosting:deploy [filePath] [cloudPath]',
92
- options: [
93
- {
94
- flags: '-e, --envId <envId>',
95
- desc: '环境 Id'
96
- }
97
- ],
98
- desc: '部署静态网站文件'
99
- }
100
- }
101
-
102
- @InjectParams()
103
- async execute(@EnvId() envId, @ArgsParams() params, @Log() log: Logger) {
104
- const localPath = params?.[0] || '.'
105
- const cloudPath = params?.[1] || ''
106
-
107
- log.verbose('本地目录', localPath)
108
-
109
- const resolveLocalPath = path.resolve(localPath)
110
- checkFullAccess(resolveLocalPath, true)
111
- const isDir = isDirectory(resolveLocalPath)
112
-
113
- const loading = loadingFactory()
114
- loading.start('准备上传中...')
115
-
116
- let totalFiles = 0
117
-
118
- if (isDir) {
119
- let files = await walkLocalDir(envId, resolveLocalPath)
120
- files = files.filter((item) => !isDirectory(item))
121
- totalFiles = files.length
122
- }
123
-
124
- // 上传进度条
125
- const onProgress = createUploadProgressBar(
126
- () => {
127
- !isDir && log.success('文件部署成功!')
128
- },
129
- () => {
130
- loading.stop()
131
- }
132
- )
133
-
134
- const successFiles = []
135
- const failedFiles = []
136
-
137
- await hostingDeploy({
138
- filePath: resolveLocalPath,
139
- cloudPath,
140
- envId,
141
- isDir,
142
- onProgress,
143
- onFileFinish: (...args) => {
144
- const error = args[0]
145
- const fileInfo = (args as any)[2]
146
- if (error) {
147
- failedFiles.push(fileInfo.Key)
148
- } else {
149
- successFiles.push(fileInfo.Key)
150
- }
151
- }
152
- })
153
-
154
- const info = await getHostingInfo({
155
- envId
156
- })
157
-
158
- const website = info?.data?.[0]
159
-
160
- const link = genClickableLink(`https://${website.cdnDomain}`)
161
- log.success(`\n部署完成 👉 ${link}`)
162
-
163
- if (isDir) {
164
- log.success(`文件共计 ${totalFiles} 个`)
165
- log.success(`文件上传成功 ${successFiles.length} 个`)
166
- // 上传成功的文件
167
- if (totalFiles <= 50) {
168
- printHorizontalTable(
169
- ['状态', '文件'],
170
- successFiles.map((item) => [logSymbols.success, item])
171
- )
172
- }
173
-
174
- // 上传失败的文件
175
- log.error(`文件上传失败 ${failedFiles.length} 个`)
176
- if (failedFiles.length) {
177
- if (totalFiles <= 50) {
178
- printHorizontalTable(
179
- ['状态', '文件'],
180
- failedFiles.map((item) => [logSymbols.error, item])
181
- )
182
- } else {
183
- // 写入文件到本地
184
- const errorLogPath = path.resolve('./cloudbase-error.log')
185
- log.error('上传失败文件:')
186
- console.log(errorLogPath)
187
- fs.writeFileSync(errorLogPath, failedFiles.join('\n'))
188
- }
189
-
190
- // 抛出错误
191
- throw new CloudBaseError('部分文件上传失败,进程退出')
192
- }
193
- }
194
- }
195
- }
196
-
197
- @ICommand()
198
- export class HostingDeleteFiles extends Command {
199
- get options() {
200
- return {
201
- cmd: 'hosting',
202
- childCmd: 'delete [cloudPath]',
203
- deprecateCmd: 'hosting:delete [cloudPath]',
204
- options: [
205
- {
206
- flags: '-e, --envId <envId>',
207
- desc: '环境 Id'
208
- },
209
- {
210
- flags: '-d, --dir',
211
- desc: '删除目标是否为文件夹'
212
- }
213
- ],
214
- desc: '删除静态网站文件/文件夹,文件夹需指定 --dir 选项'
215
- }
216
- }
217
-
218
- @InjectParams()
219
- async execute(@EnvId() envId, @ArgsOptions() options, @ArgsParams() params) {
220
- const cloudPath = params?.[0] || ''
221
- let isDir = options.dir
222
-
223
- // 删除所有文件,危险操作,需要提示
224
- if (!cloudPath) {
225
- const { confirm } = await inquirer.prompt({
226
- type: 'confirm',
227
- name: 'confirm',
228
- message: '指定云端路径为空,将会删除所有文件,是否继续',
229
- default: false
230
- })
231
- if (!confirm) {
232
- throw new CloudBaseError('操作终止!')
233
- }
234
- isDir = true
235
- }
236
-
237
- // cloudPath 为 / 时,只能删除文件夹
238
- if (cloudPath === '/') {
239
- isDir = true
240
- }
241
-
242
- const fileText = isDir ? '文件夹' : '文件'
243
-
244
- const loading = loadingFactory()
245
- loading.start(`删除${fileText}中...`)
246
-
247
- try {
248
- await hostingDelete({
249
- envId,
250
- isDir,
251
- cloudPath
252
- })
253
- loading.succeed(`删除${fileText}成功!`)
254
- } catch (e) {
255
- loading.fail(`删除${fileText}失败!`)
256
- throw new CloudBaseError(e.message)
257
- }
258
- }
259
- }
260
-
261
- @ICommand()
262
- export class HostingList extends Command {
263
- get options() {
264
- return {
265
- cmd: 'hosting',
266
- childCmd: 'list',
267
- deprecateCmd: 'hosting:list',
268
- options: [
269
- {
270
- flags: '-e, --envId <envId>',
271
- desc: '环境 Id'
272
- }
273
- ],
274
- desc: '展示文件列表'
275
- }
276
- }
277
-
278
- @InjectParams()
279
- async execute(@EnvId() envId) {
280
- const loading = loadingFactory()
281
- loading.start('获取文件列表中...')
282
-
283
- try {
284
- const list = await hostingList({
285
- envId
286
- })
287
- loading.stop()
288
- const head = ['序号', 'Key', 'LastModified', 'ETag', 'Size(KB)']
289
- const notDir = (item) => !(Number(item.Size) === 0 && /\/$/g.test(item.Key))
290
- const tableData = list
291
- .filter(notDir)
292
- .map((item, index) => [
293
- index + 1,
294
- item.Key,
295
- formatDate(item.LastModified, 'yyyy-MM-dd hh:mm:ss'),
296
- item.ETag,
297
- String(formateFileSize(item.Size, 'KB'))
298
- ])
299
- printHorizontalTable(head, tableData)
300
- } catch (e) {
301
- loading.fail('获取文件列表失败!')
302
- throw new CloudBaseError(e.message)
303
- }
304
- }
305
- }
306
-
307
- @ICommand()
308
- export class HostingDownloadCommand extends Command {
309
- get options() {
310
- return {
311
- cmd: 'hosting',
312
- childCmd: 'download <cloudPath> [localPath]',
313
- options: [
314
- {
315
- flags: '-e, --envId <envId>',
316
- desc: '环境 Id'
317
- },
318
- {
319
- flags: '-d, --dir',
320
- desc: '下载目标是否为文件夹'
321
- }
322
- ],
323
- desc: '下载文件/文件夹,文件夹需指定 --dir 选项'
324
- }
325
- }
326
-
327
- @InjectParams()
328
- async execute(@EnvId() envId, @ArgsOptions() options, @ArgsParams() params) {
329
- let cloudPath: string = params?.[0]
330
- const localPath = params?.[1] || '.'
331
- const hostingService = await getHostingService(envId)
332
- const resolveLocalPath = path.resolve(localPath)
333
-
334
- const { dir } = options
335
- const fileText = dir ? '文件夹' : '文件'
336
-
337
- const loading = loadingFactory()
338
-
339
- loading.start(`下载${fileText}中`)
340
-
341
- // cloudPath 以 / 开头
342
- if (/^\/.+/.test(cloudPath)) {
343
- cloudPath = cloudPath.slice(1)
344
- }
345
-
346
- if (dir) {
347
- await hostingService.downloadDirectory({
348
- cloudPath,
349
- localPath: resolveLocalPath
350
- })
351
- } else {
352
- await hostingService.downloadFile({
353
- cloudPath,
354
- localPath: resolveLocalPath
355
- })
356
- }
357
-
358
- loading.succeed(`下载${fileText}成功!`)
359
- }
360
- }
@@ -1 +0,0 @@
1
- export * from './hosting'
@@ -1,13 +0,0 @@
1
- export * from './common'
2
- export * from './account'
3
- export * from './env'
4
- export * from './helpers'
5
- export * from './functions'
6
- export * from './hosting'
7
- export * from './storage'
8
- export * from './gateway'
9
- export * from './third'
10
- export * from './framework'
11
- export * from './smart'
12
- export * from './lowcode'
13
- export * from './run'
@@ -1,325 +0,0 @@
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
- if (process.env.CLOUDBASE_LOWCODE_CLOUDAPI_URL === undefined) {
46
- // 没设置的时候才才设置,方便覆盖
47
- process.env.CLOUDBASE_LOWCODE_CLOUDAPI_URL = 'https://lcap.cloud.tencent.com/api/v1/cliapi';
48
- }
49
- const res = await cloudService.request('ListUserCompositeGroups')
50
- const comps = res?.data
51
- if (!comps?.count) {
52
- throw new CloudBaseError('没有可关联的云端组件库,请到低码控制台新建组件库!')
53
- }
54
-
55
- let compsName = params?.[0]
56
- if (!compsName) {
57
- const { selectCompsName } = await prompt<any>({
58
- type: 'select',
59
- name: 'selectCompsName',
60
- message: '关联云端组件库:',
61
- choices: comps.rows.map((row) => row.groupName)
62
- })
63
- compsName = selectCompsName
64
- } else {
65
- // 自己输入的组件库名称,校验是否在云端也有
66
- const comp = comps.rows.find((row) => row.groupName === compsName)
67
- if (!comp) {
68
- throw new CloudBaseError(`云端不存在组件库 ${compsName},请到低码控制台新建该组件库!`)
69
- }
70
- }
71
-
72
- await bootstrap(compsName, log);
73
-
74
- }
75
- }
76
-
77
- @ICommand()
78
- export class LowCodeBuildComps extends Command {
79
- get options() {
80
- return {
81
- cmd: 'lowcode',
82
- childCmd: 'build',
83
- options: [
84
- {
85
- flags: '--verbose',
86
- desc: '是否打印详细日志'
87
- }
88
- ],
89
- desc: '构建组件库',
90
- requiredEnvId: false
91
- }
92
- }
93
-
94
- @InjectParams()
95
- async execute(@CmdContext() ctx, @Log() log) {
96
- // 有RC配置, 使用新接口
97
- const config = ctx.config.lowcodeCustomComponents
98
- if (config) {
99
- await graceBuildComps({
100
- ...config,
101
- context: config.context || process.cwd(),
102
- logger: log
103
- })
104
- return
105
- }
106
- // 没有RC配置, 使用旧接口
107
- const compsPath = path.resolve(process.cwd())
108
- await _build(compsPath)
109
- }
110
- }
111
-
112
- @ICommand()
113
- export class LowCodeDebugComps extends Command {
114
- get options() {
115
- return {
116
- cmd: 'lowcode',
117
- childCmd: 'debug',
118
- options: [
119
- {
120
- flags: '--verbose',
121
- desc: '是否打印详细日志'
122
- },
123
- {
124
- flags: '--debug-port <debugPort>',
125
- desc: '调试端口,默认是8388'
126
- },
127
- {
128
- flags: '--wx-devtool-path <wxDevtoolPath>',
129
- desc: '微信开发者工具的安装路径'
130
- }
131
- ],
132
- desc: '调试组件库',
133
- requiredEnvId: false
134
- }
135
- }
136
-
137
- @InjectParams()
138
- async execute(@CmdContext() ctx, @ArgsOptions() options, @Log() log) {
139
- // 有RC配置, 使用新接口
140
- const config = ctx.config.lowcodeCustomComponents
141
- if (config) {
142
- await graceDebugComps({
143
- ...config,
144
- context: config.context || process.cwd(),
145
- debugPort: options?.debugPort || 8388,
146
- logger: log,
147
- wxDevtoolPath: options?.wxDevtoolPath
148
- })
149
- return
150
- }
151
- // 没有RC配置, 使用旧接口
152
- const compsPath = path.resolve(process.cwd())
153
- await debugComps(compsPath, options?.debugPort || 8388)
154
- }
155
- }
156
-
157
- @ICommand()
158
- export class LowCodePublishComps extends Command {
159
- get options() {
160
- return {
161
- cmd: 'lowcode',
162
- childCmd: 'publish',
163
- options: [
164
- {
165
- flags: '--verbose',
166
- desc: '是否打印详细日志'
167
- },
168
- {
169
- flags: '--admin',
170
- desc: '是否使用admin接口',
171
- hideHelp: true
172
- }
173
- ],
174
- desc: '发布组件库',
175
- requiredEnvId: false
176
- }
177
- }
178
-
179
- @InjectParams()
180
- async execute(@CmdContext() ctx, @Log() log: Logger, @ArgsOptions() options: any) {
181
- // 有RC配置, 使用新接口
182
-
183
- const config = ctx.config.lowcodeCustomComponents
184
- if (config) {
185
- await gracePublishComps({
186
- ...config,
187
- context: config.context || process.cwd(),
188
- logger: log,
189
- isAdmin: Boolean(options.admin)
190
- })
191
- log.success('组件库 - 已同步到云端,请到低码控制台发布该组件库!')
192
- return
193
- }
194
- // 没有RC配置, 使用旧接口
195
- // 读取本地组件库信息
196
- const compsPath = path.resolve(process.cwd())
197
- const compsName = fse.readJSONSync(path.resolve(compsPath, 'package.json')).name
198
- // 读取云端组件库列表
199
- const res = await cloudService.request('ListUserCompositeGroups')
200
- const comps = res?.data
201
- if (!comps?.count) {
202
- throw new CloudBaseError(`云端不存在组件库 ${compsName},请到低码控制台新建该组件库!`)
203
- }
204
- // 校验组件库信息
205
- const comp = comps.rows.find((row) => row.groupName === compsName)
206
- if (!comp) {
207
- throw new CloudBaseError(`云端不存在组件库 ${compsName},请到低码控制台新建该组件库!`)
208
- }
209
- // 上传组件库
210
- await _build(compsPath)
211
- await _publish({
212
- id: comp.id,
213
- name: compsName,
214
- path: compsPath,
215
- log,
216
- })
217
-
218
- log.info('\n👉 组件库已经同步到云端,请到低码控制台发布该组件库!')
219
- }
220
- }
221
-
222
- @ICommand()
223
- export class LowCodePublishVersionComps extends Command {
224
- get options() {
225
- return {
226
- cmd: 'lowcode',
227
- childCmd: 'publishVersion',
228
- options: [
229
- {
230
- flags: '--verbose',
231
- desc: '是否打印详细日志'
232
- },
233
- {
234
- flags: '--comment <comment>',
235
- desc: '版本备注',
236
- },
237
- {
238
- flags: '--tag <version>',
239
- desc: '版本号'
240
- },
241
- {
242
- flags: '--admin',
243
- desc: '是否使用admin接口',
244
- hideHelp: true
245
- }
246
- ],
247
- desc: '发布组件库版本',
248
- requiredEnvId: false
249
- }
250
- }
251
-
252
- @InjectParams()
253
- async execute(@CmdContext() ctx, @ArgsOptions() options, @Log() log?: Logger) {
254
- // 有RC配置, 使用新接口
255
- const {tag, comment, admin} = options
256
- if(!comment) {
257
- log.error('请使用 --comment 填写版本注释')
258
- return
259
- }
260
- if(!tag) {
261
- log.error('请使用 --tag 填写符合semver的版本号')
262
- return
263
- }
264
- if(!semver.valid(tag)) {
265
- log.error('组件库版本不符合semver标准')
266
- return
267
- }
268
- const config = ctx.config.lowcodeCustomComponents
269
-
270
- if(!config) {
271
- log.error('组件库 - 请添加组件库配置到cloudbaserc.json 以使用该命令')
272
- }
273
-
274
- const res = await publishVersion({
275
- ...config,
276
- context: config.context || process.cwd(),
277
- logger: log,
278
- isAdmin: options.admin
279
- }, comment, tag)
280
- if(res.data.code === 200) {
281
- log.success('组件库 - 已发布新版本!')
282
- return
283
- }
284
- if (res.data.code === 100) {
285
- log.error('组件库 - 无待发布版本')
286
- return
287
- }
288
- if (res.data.code === 201) {
289
- log.error('组件库 - comment 重复, 请使用有意义的comment')
290
- return
291
- } else {
292
- if(res.data.msg) {
293
- log.error(`组件库 - ${res.data.msg} RequestId: ${res.requestId}`)
294
- } else {
295
- log.error('组件库 - 未知错误')
296
- }
297
- return
298
- }
299
- }
300
- }
301
-
302
-
303
- async function _build(compsPath) {
304
- await execWithLoading(
305
- async () => {
306
- await buildComps(compsPath)
307
- },
308
- {
309
- startTip: '组件库 - 构建中',
310
- successTip: '组件库 - 构建成功'
311
- }
312
- )
313
- }
314
-
315
- async function _publish(info: IPublishCompsInfo) {
316
- await execWithLoading(
317
- async () => {
318
- await publishComps(info)
319
- },
320
- {
321
- startTip: '组件库 - 发布中',
322
- successTip: '组件库 - 发布成功'
323
- }
324
- )
325
- }
@@ -1,2 +0,0 @@
1
- export * from './app'
2
- export * from './comps'