@cloudbase/cli 2.0.12 → 2.0.13

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 (227) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/lib/run/service/deployPackage.js +2 -9
  3. package/lib/utils/debug-logger.js +30 -0
  4. package/lib/utils/net/cloud-api-request.js +7 -1
  5. package/lib/utils/net/http-request.js +16 -5
  6. package/package.json +1 -1
  7. package/types/utils/debug-logger.d.ts +1 -0
  8. package/types/utils/net/http-request.d.ts +6 -2
  9. package/src/auth/index.ts +0 -2
  10. package/src/auth/login.ts +0 -91
  11. package/src/auth/logout.ts +0 -7
  12. package/src/commands/account/index.ts +0 -2
  13. package/src/commands/account/login.ts +0 -192
  14. package/src/commands/account/logout.ts +0 -24
  15. package/src/commands/common.ts +0 -246
  16. package/src/commands/env/base.ts +0 -90
  17. package/src/commands/env/create.ts +0 -92
  18. package/src/commands/env/domain.ts +0 -186
  19. package/src/commands/env/index.ts +0 -4
  20. package/src/commands/env/login.ts +0 -235
  21. package/src/commands/framework/index.ts +0 -124
  22. package/src/commands/functions/alias/getRoute.ts +0 -76
  23. package/src/commands/functions/alias/index.ts +0 -2
  24. package/src/commands/functions/alias/setRoute.ts +0 -82
  25. package/src/commands/functions/code-download.ts +0 -100
  26. package/src/commands/functions/code-update.ts +0 -62
  27. package/src/commands/functions/concurrency/delete.ts +0 -45
  28. package/src/commands/functions/concurrency/index.ts +0 -3
  29. package/src/commands/functions/concurrency/list.ts +0 -58
  30. package/src/commands/functions/concurrency/set.ts +0 -47
  31. package/src/commands/functions/config-update.ts +0 -76
  32. package/src/commands/functions/copy.ts +0 -62
  33. package/src/commands/functions/delete.ts +0 -79
  34. package/src/commands/functions/deploy.ts +0 -293
  35. package/src/commands/functions/detail.ts +0 -138
  36. package/src/commands/functions/index.ts +0 -16
  37. package/src/commands/functions/invoke.ts +0 -121
  38. package/src/commands/functions/layer/bind.ts +0 -182
  39. package/src/commands/functions/layer/common.ts +0 -8
  40. package/src/commands/functions/layer/create.ts +0 -49
  41. package/src/commands/functions/layer/delete.ts +0 -73
  42. package/src/commands/functions/layer/download.ts +0 -92
  43. package/src/commands/functions/layer/index.ts +0 -7
  44. package/src/commands/functions/layer/list.ts +0 -94
  45. package/src/commands/functions/layer/sort.ts +0 -76
  46. package/src/commands/functions/list.ts +0 -68
  47. package/src/commands/functions/log.ts +0 -148
  48. package/src/commands/functions/run.ts +0 -249
  49. package/src/commands/functions/trigger-create.ts +0 -79
  50. package/src/commands/functions/trigger-delete.ts +0 -105
  51. package/src/commands/functions/version/index.ts +0 -2
  52. package/src/commands/functions/version/list.ts +0 -73
  53. package/src/commands/functions/version/publish.ts +0 -43
  54. package/src/commands/gateway/create.ts +0 -109
  55. package/src/commands/gateway/delete.ts +0 -81
  56. package/src/commands/gateway/domain.ts +0 -159
  57. package/src/commands/gateway/index.ts +0 -5
  58. package/src/commands/gateway/list.ts +0 -76
  59. package/src/commands/gateway/switch.ts +0 -107
  60. package/src/commands/helpers/index.ts +0 -3
  61. package/src/commands/helpers/init.ts +0 -431
  62. package/src/commands/helpers/new.ts +0 -117
  63. package/src/commands/helpers/open.ts +0 -67
  64. package/src/commands/hosting/hosting.ts +0 -360
  65. package/src/commands/hosting/index.ts +0 -1
  66. package/src/commands/index.ts +0 -13
  67. package/src/commands/lowcode/app.ts +0 -34
  68. package/src/commands/lowcode/comps.ts +0 -325
  69. package/src/commands/lowcode/index.ts +0 -2
  70. package/src/commands/lowcode/utils.ts +0 -25
  71. package/src/commands/run/create.ts +0 -153
  72. package/src/commands/run/delete.ts +0 -77
  73. package/src/commands/run/image/common.ts +0 -8
  74. package/src/commands/run/image/delete.ts +0 -68
  75. package/src/commands/run/image/download.ts +0 -68
  76. package/src/commands/run/image/index.ts +0 -5
  77. package/src/commands/run/image/list.ts +0 -84
  78. package/src/commands/run/image/upload.ts +0 -76
  79. package/src/commands/run/index.ts +0 -7
  80. package/src/commands/run/list.ts +0 -83
  81. package/src/commands/run/service/config.ts +0 -81
  82. package/src/commands/run/service/create.ts +0 -122
  83. package/src/commands/run/service/deploy.ts +0 -125
  84. package/src/commands/run/service/index.ts +0 -5
  85. package/src/commands/run/service/list.ts +0 -94
  86. package/src/commands/run/service/update.ts +0 -108
  87. package/src/commands/run/standalonegateway/common.ts +0 -8
  88. package/src/commands/run/standalonegateway/create.ts +0 -85
  89. package/src/commands/run/standalonegateway/destroy.ts +0 -59
  90. package/src/commands/run/standalonegateway/index.ts +0 -5
  91. package/src/commands/run/standalonegateway/list.ts +0 -53
  92. package/src/commands/run/standalonegateway/package.ts +0 -62
  93. package/src/commands/run/standalonegateway/turn.ts +0 -63
  94. package/src/commands/run/version/common.ts +0 -8
  95. package/src/commands/run/version/create.ts +0 -369
  96. package/src/commands/run/version/delete.ts +0 -64
  97. package/src/commands/run/version/index.ts +0 -5
  98. package/src/commands/run/version/list.ts +0 -91
  99. package/src/commands/run/version/modify.ts +0 -137
  100. package/src/commands/run/version/update.ts +0 -398
  101. package/src/commands/smart.ts +0 -132
  102. package/src/commands/storage/index.ts +0 -1
  103. package/src/commands/storage/storage.ts +0 -464
  104. package/src/commands/third/index.ts +0 -1
  105. package/src/commands/third/thirdAttach.ts +0 -49
  106. package/src/completion/index.ts +0 -13
  107. package/src/constant.ts +0 -154
  108. package/src/decorators/captureError.ts +0 -25
  109. package/src/decorators/constants.ts +0 -12
  110. package/src/decorators/deprecate.ts +0 -25
  111. package/src/decorators/guard.ts +0 -42
  112. package/src/decorators/index.ts +0 -7
  113. package/src/decorators/injectParams.ts +0 -54
  114. package/src/decorators/params/common.ts +0 -28
  115. package/src/decorators/params/index.ts +0 -35
  116. package/src/env/domain.ts +0 -33
  117. package/src/env/index.ts +0 -63
  118. package/src/env/login.ts +0 -80
  119. package/src/error.ts +0 -36
  120. package/src/function/alias.ts +0 -43
  121. package/src/function/base.ts +0 -253
  122. package/src/function/code.ts +0 -55
  123. package/src/function/concurrency.ts +0 -57
  124. package/src/function/create.ts +0 -78
  125. package/src/function/delete.ts +0 -42
  126. package/src/function/index.ts +0 -11
  127. package/src/function/layer/attach.ts +0 -68
  128. package/src/function/layer/create.ts +0 -63
  129. package/src/function/layer/delete.ts +0 -21
  130. package/src/function/layer/download.ts +0 -54
  131. package/src/function/layer/index.ts +0 -7
  132. package/src/function/layer/list.ts +0 -32
  133. package/src/function/layer/sort.ts +0 -24
  134. package/src/function/trigger.ts +0 -97
  135. package/src/function/update.ts +0 -35
  136. package/src/function/version.ts +0 -39
  137. package/src/function/vpc.ts +0 -22
  138. package/src/gateway/index.ts +0 -137
  139. package/src/help.ts +0 -50
  140. package/src/hosting.ts +0 -212
  141. package/src/index.ts +0 -13
  142. package/src/logger.ts +0 -17
  143. package/src/run/create.ts +0 -23
  144. package/src/run/delete.ts +0 -15
  145. package/src/run/image/build.ts +0 -36
  146. package/src/run/image/delete.ts +0 -14
  147. package/src/run/image/index.ts +0 -4
  148. package/src/run/image/info.ts +0 -27
  149. package/src/run/image/list.ts +0 -23
  150. package/src/run/index.ts +0 -8
  151. package/src/run/list.ts +0 -30
  152. package/src/run/repo.ts +0 -25
  153. package/src/run/service/common.ts +0 -311
  154. package/src/run/service/config.ts +0 -77
  155. package/src/run/service/create.ts +0 -52
  156. package/src/run/service/deployPackage.ts +0 -65
  157. package/src/run/service/index.ts +0 -7
  158. package/src/run/service/list.ts +0 -29
  159. package/src/run/service/showLogs.ts +0 -98
  160. package/src/run/service/update.ts +0 -82
  161. package/src/run/standalonegateway/create.ts +0 -24
  162. package/src/run/standalonegateway/destroy.ts +0 -19
  163. package/src/run/standalonegateway/index.ts +0 -5
  164. package/src/run/standalonegateway/list.ts +0 -74
  165. package/src/run/standalonegateway/package/index.ts +0 -1
  166. package/src/run/standalonegateway/package/list.ts +0 -24
  167. package/src/run/standalonegateway/turn/index.ts +0 -2
  168. package/src/run/standalonegateway/turn/off.ts +0 -19
  169. package/src/run/standalonegateway/turn/on.ts +0 -19
  170. package/src/run/version/create.ts +0 -68
  171. package/src/run/version/delete.ts +0 -16
  172. package/src/run/version/index.ts +0 -6
  173. package/src/run/version/list.ts +0 -17
  174. package/src/run/version/modify.ts +0 -17
  175. package/src/run/version/repo.ts +0 -28
  176. package/src/run/version/update.ts +0 -59
  177. package/src/storage.ts +0 -114
  178. package/src/third/index.ts +0 -13
  179. package/src/types.ts +0 -672
  180. package/src/utils/auth.ts +0 -15
  181. package/src/utils/checkTcbrEnv.ts +0 -69
  182. package/src/utils/cli-table.ts +0 -23
  183. package/src/utils/commonParamsCheck.ts +0 -65
  184. package/src/utils/config.ts +0 -39
  185. package/src/utils/env.ts +0 -244
  186. package/src/utils/fs/del.ts +0 -5
  187. package/src/utils/fs/index.ts +0 -71
  188. package/src/utils/function-packer.ts +0 -97
  189. package/src/utils/index.ts +0 -25
  190. package/src/utils/log.ts +0 -82
  191. package/src/utils/net/cloud-api-request.ts +0 -62
  192. package/src/utils/net/credential.ts +0 -53
  193. package/src/utils/net/http-request.ts +0 -84
  194. package/src/utils/net/index.ts +0 -5
  195. package/src/utils/net/manager-service.ts +0 -36
  196. package/src/utils/net/proxy.ts +0 -6
  197. package/src/utils/notice.ts +0 -28
  198. package/src/utils/output/highlight.ts +0 -5
  199. package/src/utils/output/index.ts +0 -3
  200. package/src/utils/output/link.ts +0 -10
  201. package/src/utils/output/loading.ts +0 -82
  202. package/src/utils/parallel.ts +0 -82
  203. package/src/utils/platform/index.ts +0 -3
  204. package/src/utils/platform/mac.ts +0 -21
  205. package/src/utils/platform/os.ts +0 -64
  206. package/src/utils/platform/port.ts +0 -10
  207. package/src/utils/progress-bar.ts +0 -38
  208. package/src/utils/prompt/index.ts +0 -1
  209. package/src/utils/prompt/select.ts +0 -60
  210. package/src/utils/reporter/agree.ts +0 -20
  211. package/src/utils/reporter/download.ts +0 -26
  212. package/src/utils/reporter/index.ts +0 -3
  213. package/src/utils/reporter/usage.ts +0 -20
  214. package/src/utils/store/auth.ts +0 -49
  215. package/src/utils/store/common.ts +0 -8
  216. package/src/utils/store/db.ts +0 -68
  217. package/src/utils/store/index.ts +0 -5
  218. package/src/utils/store/usage.ts +0 -12
  219. package/src/utils/tcbrApi/callTcbrApi.ts +0 -28
  220. package/src/utils/tcbrApi/index.ts +0 -1
  221. package/src/utils/template.ts +0 -170
  222. package/src/utils/tools/encoding.ts +0 -8
  223. package/src/utils/tools/index.ts +0 -4
  224. package/src/utils/tools/object.ts +0 -33
  225. package/src/utils/tools/time.ts +0 -38
  226. package/src/utils/tools/uid.ts +0 -19
  227. package/src/utils/validator.ts +0 -65
@@ -1,369 +0,0 @@
1
- import { prompt } from 'enquirer'
2
- import { statSync, writeFileSync, unlinkSync } from 'fs'
3
- import { zipDir } from '@cloudbase/toolbox'
4
- import { Command, ICommand } from '../../common'
5
- import { CloudBaseError } from '../../../error'
6
- import {
7
- uploadZip,
8
- createBuild,
9
- createVersion,
10
- listRepo,
11
- listImage,
12
- listBranch,
13
- basicOperate,
14
- logCreate
15
- } from '../../../run'
16
- import { checkTcbrEnv, loadingFactory, logEnvCheck, pagingSelectPromp, random } from '../../../utils'
17
- import { InjectParams, EnvId, ArgsOptions } from '../../../decorators'
18
- import { versionCommonOptions } from './common'
19
- import { EnumEnvCheck } from '../../../constant'
20
-
21
- const uploadTypeMap = {
22
- 本地代码: 'package',
23
- 代码库拉取: 'repository',
24
- 镜像拉取: 'image'
25
- }
26
-
27
- const memMap = {
28
- 0.25: [2, 8],
29
- 0.5: [2, 8],
30
- 1: [1, 8],
31
- 2: [2, 8],
32
- 4: [2, 8],
33
- 8: [2, 4],
34
- 16: [2, 4]
35
- }
36
-
37
- @ICommand()
38
- export class CreateVersion extends Command {
39
- get options() {
40
- return {
41
- ...versionCommonOptions('create'),
42
- options: [
43
- {
44
- flags: '-e, --envId <envId>',
45
- desc: '环境 Id'
46
- },
47
- {
48
- flags: '-s, --serviceName <serviceName>',
49
- desc: '托管服务 name'
50
- },
51
- {
52
- flags: '-p, --path <path>',
53
- desc: '本地代码路径,选择本地代码上传时使用'
54
- },
55
- {
56
- flags: '--repo <repo>',
57
- desc: '仓库信息,形如 channel|fullName|branch,channel为github、gitlab或gitee,选择代码库拉取时使用'
58
- },
59
- {
60
- flags: '-i, --image <image>',
61
- desc: '镜像url,选择镜像拉取时使用'
62
- },
63
- {
64
- flags: '--port <port>',
65
- desc: '监听端口,默认为80'
66
- },
67
- {
68
- flags: '-f, --flow <flow>',
69
- desc: '流量策略(%),0或100,默认为0'
70
- },
71
- {
72
- flags: '-m, --remark <remark>',
73
- desc: '备注信息,默认为空'
74
- },
75
- {
76
- flags: '-c, --cpu <cpu>',
77
- desc: 'cpu规格(核数),默认为0.5'
78
- },
79
- {
80
- flags: '--mem <mem>',
81
- desc: '内存规格(G),默认为1'
82
- },
83
- {
84
- flags: '--copy <copy>',
85
- desc: '副本个数,格式为最小个数~最大个数,默认为0~50'
86
- },
87
- {
88
- flags: '--policy <policy>',
89
- desc: '扩缩容条件,格式为条件类型|条件比例(%),cpu条件为cpu,内存为条件mem,默认为cpu|60'
90
- },
91
- {
92
- flags: '--dockerFile <dockerFile>',
93
- desc: 'dockerfile名称,非镜像拉取时使用,默认为Dockerfile'
94
- },
95
- {
96
- flags: '-l, --log <log>',
97
- desc: '日志采集路径,默认为stdout'
98
- },
99
- {
100
- flags: '-d, --delay <delay>',
101
- desc: '初始延迟时间(秒),默认为2'
102
- },
103
- {
104
- flags: '--env <env>',
105
- desc: '环境变量,格式为xx=a&yy=b,默认为空'
106
- }
107
- ],
108
- desc: '创建云开发环境下云托管服务的版本'
109
- }
110
- }
111
-
112
- /* eslint complexity: ["error", 40] */
113
- @InjectParams()
114
- async execute(@EnvId() envId, @ArgsOptions() options) {
115
- let envCheckType = await checkTcbrEnv(options.envId, false)
116
- if(envCheckType !== EnumEnvCheck.EnvFit) {
117
- logEnvCheck(envId, envCheckType)
118
- return
119
- }
120
-
121
- let {
122
- serviceName = '',
123
- path: _path = '',
124
- repo: _repo = '',
125
- image: _image = '',
126
- port: _port = '80',
127
- flow: _flow = '0',
128
- remark: _remark = '',
129
- cpu: _cpu = '0.5',
130
- mem: _mem = '1',
131
- copy: _copy = '0~50',
132
- policy: _policy = 'cpu|60',
133
- dockerfile: _dockerfile = 'Dockerfile',
134
- log: _log = 'stdout',
135
- delay: _delay = '2',
136
- env: _env = ''
137
- } = options
138
-
139
- if (!serviceName) {
140
- throw new CloudBaseError('必须输入 serviceName')
141
- }
142
- let path: string
143
- let repositoryType: string
144
- let branch: string
145
- let codeDetail: { Name: { Name: string; FullName: string } }
146
- let imageInfo: { ImageUrl: string }
147
- let containerPort: number
148
- let flowRatio: number
149
- let versionRemark: string
150
- let cpu: number
151
- let mem: number
152
- let minNum: number
153
- let maxNum: number
154
- let policyType: string
155
- let policyThreshold: number
156
- let customLogs = 'stdout'
157
- let dockerfilePath = 'Dockerfile'
158
- let initialDelaySeconds = 2
159
- let envParams = '{}'
160
-
161
- const uid = random(4)
162
-
163
- const loading = loadingFactory()
164
-
165
- // 上传方式
166
- if (_path) {
167
- path = _path
168
-
169
- if (statSync(path).isDirectory()) {
170
- loading.start('正在压缩中')
171
- await zipDir(path, `./code${uid}.zip`)
172
- loading.succeed('压缩完成')
173
- path = `./code${uid}.zip`
174
- }
175
- } else if (_repo) {
176
- const repo = _repo.split('|')
177
-
178
- repositoryType = repo[0]
179
-
180
- codeDetail.Name.FullName = repo[1]
181
- codeDetail.Name.Name = repo[1].split('/')[1]
182
-
183
- branch = repo[2]
184
- } else if (_image) {
185
- imageInfo = {
186
- ImageUrl: _image
187
- }
188
- } else {
189
- throw new CloudBaseError('请至少选择一个上传方式')
190
- }
191
-
192
- // 端口号
193
- containerPort = Number(_port)
194
- if (isNaN(containerPort)) {
195
- throw new CloudBaseError('请输入合法的端口号')
196
- }
197
-
198
- // 流量策略
199
- flowRatio = Number(_flow)
200
- if (![100, 0].includes(flowRatio)) {
201
- throw new CloudBaseError('请输入合法的流量策略')
202
- }
203
-
204
- // 备注
205
- versionRemark = _remark
206
-
207
- // 规格
208
- cpu = Number(_cpu)
209
- mem = Number(_mem)
210
- if (isNaN(cpu) || isNaN(mem)) {
211
- throw new CloudBaseError('请输入合法的cpu和内存规格')
212
- }
213
-
214
- // 副本个数
215
- minNum = Number(_copy.split('~')[0])
216
- maxNum = Number(_copy.split('~')[1])
217
- if (isNaN(maxNum) || isNaN(minNum)) {
218
- throw new CloudBaseError('请输入合法的副本个数')
219
- }
220
-
221
- // 扩缩容条件
222
- policyType = _policy.split('|')[0]
223
- policyThreshold = Number(_policy.split('|')[1])
224
- if (!['cpu', 'mem'].includes(policyType) || isNaN(policyThreshold)) {
225
- throw new CloudBaseError('请输入合法的扩缩容条件')
226
- }
227
-
228
- // dockerfile 名称,在非镜像拉取时使用
229
- dockerfilePath = _dockerfile
230
-
231
- // 日志采集路径
232
- customLogs = _log
233
-
234
- // 初始延迟时间
235
- initialDelaySeconds = Number(_delay)
236
- if (isNaN(initialDelaySeconds)) {
237
- throw new CloudBaseError('请输入合法的延迟时间')
238
- }
239
-
240
- // 环境变量
241
- let _envParams = {}
242
- _env.split('&').forEach((item) => {
243
- _envParams[item.split('=')[0]] = item.split('=')[1]
244
- })
245
- envParams = JSON.stringify(_envParams)
246
-
247
- loading.start('加载中...')
248
-
249
- let res = ''
250
- let runId = ''
251
- if (_path) {
252
- loading.start('正在上传中')
253
- let { PackageName, PackageVersion, UploadHeaders, UploadUrl } = await createBuild({
254
- envId,
255
- serviceName
256
- })
257
- await uploadZip(path, UploadUrl, UploadHeaders[0])
258
- loading.succeed('上传成功')
259
- if (path === `./code${uid}.zip`) {
260
- loading.start('删除本地压缩包')
261
- unlinkSync(path)
262
- loading.succeed('成功删除本地压缩包')
263
- }
264
-
265
- let response = await createVersion({
266
- envId,
267
- serverName: serviceName,
268
- containerPort,
269
- uploadType: 'package',
270
- packageName: PackageName,
271
- packageVersion: PackageVersion,
272
- flowRatio,
273
- versionRemark,
274
-
275
- enableUnion: true,
276
- cpu,
277
- mem,
278
- minNum,
279
- maxNum,
280
- policyType,
281
- policyThreshold,
282
-
283
- customLogs,
284
- dockerfilePath,
285
- envParams,
286
- initialDelaySeconds
287
- })
288
- res = response.Result
289
- runId = response.RunId
290
- } else if (_image) {
291
- let response = await createVersion({
292
- envId,
293
- serverName: serviceName,
294
- containerPort,
295
- uploadType: 'image',
296
- imageInfo,
297
- flowRatio,
298
- versionRemark,
299
-
300
- enableUnion: true,
301
- cpu,
302
- mem,
303
- minNum,
304
- maxNum,
305
- policyType,
306
- policyThreshold,
307
-
308
- customLogs,
309
- envParams,
310
- initialDelaySeconds
311
- })
312
- res = response.Result
313
- runId = response.RunId
314
- } else {
315
- let response = await createVersion({
316
- envId,
317
- serverName: serviceName,
318
- containerPort,
319
- uploadType: 'repository',
320
- repositoryType,
321
- branch,
322
- codeDetail,
323
- flowRatio,
324
- versionRemark,
325
-
326
- enableUnion: true,
327
- cpu,
328
- mem,
329
- minNum,
330
- maxNum,
331
- policyType,
332
- policyThreshold,
333
-
334
- customLogs,
335
- dockerfilePath,
336
- envParams,
337
- initialDelaySeconds
338
- })
339
- res = response.Result
340
- runId = response.RunId
341
- }
342
- if (res !== 'succ') throw new CloudBaseError('提交构建任务失败')
343
-
344
- loading.start('正在部署中')
345
-
346
- while (true) {
347
- let { Percent, Status } = await basicOperate({ envId, runId })
348
-
349
- if (Status === 'build_fail') {
350
- let logs = await logCreate({ envId, runId })
351
- writeFileSync(
352
- `./log${runId}`,
353
- logs.reduce((res, item) => res + item + '\n', '')
354
- )
355
- throw new CloudBaseError(`构建失败,日志写入./log${runId}中`)
356
- } else if (Status !== 'creating') {
357
- break
358
- }
359
-
360
- loading.start(`目前构建进度${Percent}%`)
361
-
362
- await new Promise((resolve) => {
363
- setTimeout((_) => resolve('again'), 2000)
364
- })
365
- }
366
-
367
- loading.succeed('构建成功')
368
- }
369
- }
@@ -1,64 +0,0 @@
1
- import { Command, ICommand } from '../../common'
2
- import { CloudBaseError } from '../../../error'
3
- import { deleteVersion } from '../../../run'
4
- import { checkTcbrEnv, loadingFactory, logEnvCheck } from '../../../utils'
5
- import { InjectParams, EnvId, ArgsOptions } from '../../../decorators'
6
- import { versionCommonOptions } from './common'
7
- import { EnumEnvCheck } from '../../../constant'
8
-
9
- @ICommand()
10
- export class DeleteVersion extends Command {
11
- get options() {
12
- return {
13
- ...versionCommonOptions('delete'),
14
- options: [
15
- {
16
- flags: '-e, --envId <envId>',
17
- desc: '环境 Id'
18
- },
19
- {
20
- flags: '-s, --serviceName <serviceName>',
21
- desc: '托管服务 name'
22
- },
23
- {
24
- flags: '-v, --versionName <versionName>',
25
- desc: '版本名称 Name'
26
- }
27
- ],
28
- desc: '删除云开发环境下云托管服务的版本'
29
- }
30
- }
31
-
32
- @InjectParams()
33
- async execute(@EnvId() envId, @ArgsOptions() options) {
34
- let envCheckType = await checkTcbrEnv(options.envId, false)
35
- if(envCheckType !== EnumEnvCheck.EnvFit) {
36
- logEnvCheck(envId, envCheckType)
37
- return
38
- }
39
-
40
- let { serviceName = '', versionName = '' } = options
41
-
42
- if (versionName.length === 0 || serviceName.length === 0) {
43
- throw new CloudBaseError('必须输入 serviceName 和 versionName')
44
- }
45
-
46
- const loading = loadingFactory()
47
-
48
- loading.start('数据加载中...')
49
-
50
- try {
51
- const res = await deleteVersion({
52
- envId,
53
- serverName: serviceName,
54
- versionName
55
- })
56
-
57
- if (res === 'succ') loading.succeed(`成功删除 ${serviceName} 服务下的 ${versionName} 版本`)
58
- else throw new CloudBaseError('删除失败,请查看版本是否存在, 或者先清空版本灰度流量')
59
- } catch(e) {
60
- throw new CloudBaseError('删除失败,请查看版本是否存在, 或者先清空版本灰度流量')
61
- }
62
-
63
- }
64
- }
@@ -1,5 +0,0 @@
1
- export * from './list'
2
- export * from './delete'
3
- export * from './modify'
4
- export * from './create'
5
- export * from './update'
@@ -1,91 +0,0 @@
1
- import { Command, ICommand } from '../../common'
2
- import { CloudBaseError } from '../../../error'
3
- import { listVersion } from '../../../run'
4
- import { printHorizontalTable, loadingFactory, checkTcbrEnv, logEnvCheck } from '../../../utils'
5
- import { InjectParams, EnvId, ArgsOptions } from '../../../decorators'
6
- import { versionCommonOptions } from './common'
7
- import { EnumEnvCheck } from '../../../constant'
8
-
9
- const StatusMap = {
10
- normal: '正常',
11
- deploy_fail: '部署失败'
12
- }
13
-
14
- @ICommand()
15
- export class ListVersion extends Command {
16
- get options() {
17
- return {
18
- ...versionCommonOptions('list'),
19
- options: [
20
- {
21
- flags: '-e, --envId <envId>',
22
- desc: '环境 Id'
23
- },
24
- {
25
- flags: '-s, --serviceName <serviceName>',
26
- desc: '托管服务 name'
27
- },
28
- {
29
- flags: '-l, --limit <limit>',
30
- desc: '返回数据长度,默认值为 20'
31
- },
32
- {
33
- flags: '-o, --offset <offset>',
34
- desc: '数据偏移量,默认值为 0'
35
- }
36
- ],
37
- desc: '展示选择的云托管服务的版本列表'
38
- }
39
- }
40
-
41
- @InjectParams()
42
- async execute(@EnvId() envId, @ArgsOptions() options) {
43
- let envCheckType = await checkTcbrEnv(options.envId, false)
44
- if(envCheckType !== EnumEnvCheck.EnvFit) {
45
- logEnvCheck(envId, envCheckType)
46
- return
47
- }
48
-
49
- let { limit = 20, offset = 0, serviceName = '' } = options
50
- limit = Number(limit)
51
- offset = Number(offset)
52
-
53
- if (!Number.isInteger(limit) || !Number.isInteger(offset)) {
54
- throw new CloudBaseError('limit 和 offset 必须为整数')
55
- }
56
-
57
- if (limit < 0 || offset < 0) {
58
- throw new CloudBaseError('limit 和 offset 必须为大于 0 的整数')
59
- }
60
-
61
- if (serviceName.length === 0) {
62
- throw new CloudBaseError('请输入查询的服务名')
63
- }
64
-
65
- const loading = loadingFactory()
66
-
67
- loading.start('数据加载中...')
68
-
69
- const data = await listVersion({
70
- envId,
71
- limit: Number(limit),
72
- offset: Number(offset),
73
- serverName: serviceName
74
- })
75
-
76
- loading.stop()
77
-
78
- const head: string[] = ['版本名称', '状态', '流量', '备注', '创建时间', '更新时间']
79
-
80
- const tableData = data.map((item) => [
81
- item.VersionName,
82
- StatusMap[item.Status],
83
- item.FlowRatio,
84
- item.ServiceRemark ? item.ServiceRemark : '-',
85
- item.CreatedTime,
86
- item.UpdatedTime,
87
- ])
88
-
89
- printHorizontalTable(head, tableData)
90
- }
91
- }
@@ -1,137 +0,0 @@
1
- import { prompt } from 'enquirer'
2
- import { Command, ICommand } from '../../common'
3
- import { CloudBaseError } from '../../../error'
4
- import { listVersion, modifyVersion } from '../../../run'
5
- import { checkTcbrEnv, loadingFactory, logEnvCheck, pagingSelectPromp } from '../../../utils'
6
- import { InjectParams, EnvId, ArgsOptions } from '../../../decorators'
7
- import { versionCommonOptions } from './common'
8
- import { EnumEnvCheck } from '../../../constant'
9
-
10
- // 按百分比配置
11
- const modifyByFlow = async (envId: any, serviceName: string, mode: string) => {
12
- const versionFlowItems: {
13
- VersionName: string
14
- FlowRatio: number
15
- }[] = []
16
-
17
- const loading = loadingFactory()
18
-
19
- mode.split('|')[1]
20
- .split('&')
21
- .forEach((item) => {
22
- versionFlowItems.push({
23
- VersionName: item.split('=')[0],
24
- FlowRatio: Number(item.split('=')[1])
25
- })
26
- })
27
-
28
- let sum = versionFlowItems.reduce((sum, item) => sum + item.FlowRatio, 0)
29
- if (sum !== 100 && sum !== 0) throw new CloudBaseError('流量配置的总和需要为 0 或 100')
30
-
31
- loading.start('数据加载中...')
32
-
33
- const res = await modifyVersion({
34
- envId,
35
- serverName: serviceName,
36
- trafficType: 'FLOW',
37
- versionFlowItems
38
- })
39
- if (res !== 'succ') throw new CloudBaseError('分配失败')
40
-
41
- loading.succeed('分配成功')
42
- }
43
-
44
- // 按URL配置
45
- const modifyByURL = async (envId: any, serviceName: string, mode: string) => {
46
- const versionFlowItems: {
47
- VersionName: string
48
- FlowRatio: 0
49
- Priority?: number
50
- IsDefaultPriority: boolean
51
- UrlParam?: {
52
- Key: string
53
- Value: string
54
- }
55
- }[] = []
56
-
57
- const loading = loadingFactory()
58
-
59
- mode.split('|')[1]
60
- .split('&')
61
- .forEach((item, index) => {
62
- versionFlowItems.push({
63
- VersionName: item.split(',')[2],
64
- FlowRatio: 0,
65
- Priority: index + 1,
66
- IsDefaultPriority: false,
67
- UrlParam: {
68
- Key: item.split(',')[0],
69
- Value: item.split(',')[1]
70
- }
71
- })
72
- })
73
-
74
- if (!versionFlowItems.some((item) => item.VersionName === mode.split('|')[2])) {
75
- versionFlowItems.push({
76
- VersionName: mode.split('|')[2],
77
- FlowRatio: 0,
78
- IsDefaultPriority: true
79
- })
80
- } else {
81
- versionFlowItems.find((item) => item.VersionName === mode.split('|')[2]).IsDefaultPriority = true
82
- }
83
-
84
- loading.start('数据加载中...')
85
-
86
- const res = await modifyVersion({
87
- envId,
88
- serverName: serviceName,
89
- trafficType: 'URL_PARAMS',
90
- versionFlowItems
91
- })
92
- if (res !== 'succ') throw new CloudBaseError('分配失败')
93
-
94
- loading.succeed('分配成功')
95
- }
96
-
97
- @ICommand()
98
- export class ModifyVersion extends Command {
99
- get options() {
100
- return {
101
- ...versionCommonOptions('modify'),
102
- options: [
103
- {
104
- flags: '-e, --envId <envId>',
105
- desc: '环境 Id'
106
- },
107
- {
108
- flags: '-s, --serviceName <serviceName>',
109
- desc: '托管服务 name'
110
- },
111
- {
112
- flags: '-t, --traffic <traffic>',
113
- desc: '配置 type,按百分比分配即为FLOW|versionName1=a&...&versionName1=b,按URL分配则是URL|key1,value1,version1&...&key1,value1,version1|defaultVersion'
114
- }
115
- ],
116
- desc: '展示选择的云托管服务的版本列表'
117
- }
118
- }
119
-
120
- @InjectParams()
121
- async execute(@EnvId() envId, @ArgsOptions() options) {
122
- let envCheckType = await checkTcbrEnv(options.envId, false)
123
- if(envCheckType !== EnumEnvCheck.EnvFit) {
124
- logEnvCheck(envId, envCheckType)
125
- return
126
- }
127
-
128
- let { serviceName = '', traffic: _traffic = 'FLOW' } = options
129
- if (serviceName.length === 0) throw new CloudBaseError('请填入有效云托管服务名')
130
-
131
- if (_traffic.split('|')[0] === 'URL') {
132
- modifyByURL(envId, serviceName, _traffic)
133
- } else {
134
- modifyByFlow(envId, serviceName, _traffic)
135
- }
136
- }
137
- }