@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,246 +0,0 @@
1
- import chalk from 'chalk'
2
- import * as Sentry from '@sentry/node'
3
- import { EventEmitter } from 'events'
4
- import { program, Command as Commander, Option } from 'commander'
5
- import { CloudBaseError } from '../error'
6
- import { ICommandContext } from '../types'
7
- import {
8
- usageStore,
9
- collectUsage,
10
- loadingFactory,
11
- getNotification,
12
- getCloudBaseConfig,
13
- authSupevisor
14
- } from '../utils'
15
-
16
- interface ICommandOption {
17
- flags: string
18
- desc: string
19
- hideHelp?: boolean
20
- }
21
-
22
- export interface ICommandOptions {
23
- // 废弃的命令
24
- deprecateCmd?: string
25
- // 基础资源命令
26
- cmd: string
27
- // 嵌套子命令
28
- childCmd?:
29
- | string
30
- | {
31
- cmd: string
32
- desc: string
33
- }
34
- childSubCmd?: string
35
- // 命令选项
36
- options: ICommandOption[]
37
- // 命令描述
38
- desc: string
39
- // 使用命令时是否必须要传入 EnvId
40
- requiredEnvId?: boolean
41
- // 多数命令都需要登陆,不需要登陆的命令需要特别声明
42
- withoutAuth?: boolean
43
- }
44
-
45
- type CommandConstructor = new () => Command
46
-
47
- const registrableCommands: CommandConstructor[] = []
48
- const cmdMap = new Map()
49
-
50
- // 装饰器收集命令
51
- export function ICommand(): ClassDecorator {
52
- return (target: any) => {
53
- registrableCommands.push(target)
54
- }
55
- }
56
-
57
- // 注册命令
58
- export function registerCommands() {
59
- registrableCommands.forEach((Command) => {
60
- const command = new Command()
61
- command.init()
62
- })
63
- }
64
-
65
- // 命令基类
66
- export abstract class Command extends EventEmitter {
67
- on(
68
- event: 'preHandle' | 'afterHandle',
69
- listener: (ctx: ICommandContext, args: any[]) => void
70
- ): this
71
-
72
- // eslint-disable-next-line
73
- on(event: string, listener: (ctx: ICommandContext, args: any[]) => void): this {
74
- super.on(event, listener)
75
- return this
76
- }
77
-
78
- // 初始化命令
79
- public init() {
80
- const { cmd, childCmd, childSubCmd, deprecateCmd } = this.options
81
-
82
- // 不能使用 new Commander 重复声明同一个命令,需要缓存 cmd 实例
83
- let instance: Commander
84
-
85
- // 子命令
86
- if (cmdMap.has(cmd)) {
87
- instance = cmdMap.get(cmd)
88
- } else {
89
- // 新命令或原有的旧命令格式
90
- instance = program.command(cmd) as Commander
91
- // @ts-expect-error 这里是用来自定义commander fallback 帮助信息
92
- instance._helpDescription = '输出帮助信息'
93
- instance.addHelpCommand('help [command]', '查看命令帮助信息')
94
- cmdMap.set(cmd, instance)
95
- }
96
-
97
- if (childCmd) {
98
- let cmdKey: string
99
- let cmdName: string
100
- let desc: string
101
-
102
- if (typeof childCmd === 'string') {
103
- cmdKey = `${cmd}-${childCmd}`
104
- cmdName = childCmd
105
- } else {
106
- cmdKey = `${cmd}-${childCmd.cmd}`
107
- cmdName = childCmd.cmd
108
- desc = childCmd.desc
109
- }
110
-
111
- if (cmdMap.has(cmdKey)) {
112
- instance = cmdMap.get(cmdKey)
113
- } else {
114
- instance = instance.command(cmdName) as Commander
115
- // @ts-expect-error 这里是用来自定义commander fallback 帮助信息
116
- instance._helpDescription = '查看命令帮助信息'
117
- desc && instance.description(desc)
118
- cmdMap.set(cmdKey, instance)
119
- }
120
-
121
- if (childSubCmd) {
122
- instance = instance.command(childSubCmd) as Commander
123
- }
124
- }
125
-
126
- this.createProgram(instance, false)
127
-
128
- if (deprecateCmd) {
129
- // 构建新的命令提示
130
- const newCmd = [cmd, childCmd, childSubCmd]
131
- .filter((_) => _)
132
- .map((item) => {
133
- if (typeof item === 'string') return item
134
- return item.cmd
135
- })
136
- .join(' ')
137
- this.createProgram(program.command(deprecateCmd) as Commander, true, newCmd)
138
- }
139
- }
140
-
141
- private createProgram(instance: Commander, deprecate: boolean, newCmd?: string) {
142
- const { cmd, desc, options, requiredEnvId = true, withoutAuth = false } = this.options
143
- instance.storeOptionsAsProperties(false)
144
- options.forEach((option) => {
145
-
146
- const { hideHelp } = option
147
- if(hideHelp) {
148
- instance.addOption(new Option(option.flags, option.desc).hideHelp())
149
- } else {
150
- instance.option(option.flags, option.desc)
151
- }
152
-
153
- })
154
-
155
- instance.description(desc)
156
-
157
- // tcb <cmd> params options
158
- instance.action(async (...args) => {
159
- // 命令的参数
160
- const params = args.slice(0, -1)
161
- const cmdOptions = instance.opts()
162
- const parentOptions = program.opts()
163
-
164
- const config = await getCloudBaseConfig(parentOptions?.configFile)
165
- const envId = cmdOptions?.envId || config?.envId
166
-
167
- const loginState = await authSupevisor.getLoginState()
168
-
169
- // 校验登陆态
170
- if (!withoutAuth && !loginState) {
171
- throw new CloudBaseError('无有效身份信息,请使用 cloudbase login 登录')
172
- }
173
-
174
- if (!envId && requiredEnvId) {
175
- throw new CloudBaseError(
176
- '未识别到有效的环境 Id,请使用 cloudbaserc 配置文件进行操作或通过 -e 参数指定环境 Id'
177
- )
178
- }
179
-
180
- const ctx: ICommandContext = {
181
- cmd,
182
- envId,
183
- config,
184
- params,
185
- options: cmdOptions
186
- }
187
-
188
- // 处理前
189
- this.emit('preHandle', ctx, args.slice(0, -1))
190
- await this.preHandle()
191
-
192
- // 废弃警告
193
- if (deprecate) {
194
- console.log(
195
- chalk.bold.yellowBright(
196
- '\n',
197
- `⚠️ 此命令将被废弃,请使用新的命令 tcb ${newCmd} 代替`
198
- ),
199
- '\n'
200
- )
201
- }
202
-
203
- // 命令处理
204
- await this.execute(ctx)
205
-
206
- this.emit('afterHandle', ctx, args)
207
- // 上报数据
208
- this.afterHandle(ctx)
209
- })
210
- }
211
-
212
- private async preHandle() {
213
- const loading = loadingFactory()
214
- try {
215
- loading.start('数据加载中...')
216
- const res = await getNotification()
217
- loading.stop()
218
- if (!res) return
219
- const { title, content } = res
220
- console.log(chalk.bold.cyan(title))
221
- console.log(content, '\n')
222
- } catch (e) {
223
- loading.stop()
224
- Sentry.captureException(e)
225
- }
226
- }
227
-
228
- private async afterHandle(ctx) {
229
- try {
230
- const { cmd } = ctx
231
- const agree = await usageStore.get('agreeCollect')
232
- // 不同意上报、不上报使用数据
233
- if (!agree) return
234
- await collectUsage(cmd)
235
- } catch (e) {
236
- // 上报错误
237
- Sentry.captureException(e)
238
- }
239
- }
240
-
241
- // 执行命令
242
- abstract execute(...args: any[]): void
243
-
244
- // 获取命令参数
245
- abstract get options(): ICommandOptions
246
- }
@@ -1,90 +0,0 @@
1
- import { Command, ICommand } from '../common'
2
- import { CloudBaseError } from '../../error'
3
- import { listEnvs, updateEnvInfo } from '../../env'
4
- import { InjectParams, EnvId, ArgsParams, Log, Logger } from '../../decorators'
5
- import { printHorizontalTable, loadingFactory } from '../../utils'
6
-
7
- @ICommand()
8
- export class EnvListCommand extends Command {
9
- get options() {
10
- return {
11
- cmd: 'env',
12
- childCmd: 'list',
13
- deprecateCmd: 'env:list',
14
- options: [],
15
- desc: '展示云开发环境信息',
16
- requiredEnvId: false
17
- }
18
- }
19
-
20
- @InjectParams()
21
- async execute(@Log() log: Logger) {
22
- const loading = loadingFactory()
23
- loading.start('数据加载中...')
24
- const data = await listEnvs()
25
- loading.stop()
26
- const head = ['名称', '环境 Id', '套餐版本', '来源', '创建时间', '环境状态']
27
-
28
- const sortData = data.sort((prev, next) => {
29
- if (prev.Alias > next.Alias) {
30
- return 1
31
- }
32
- if (prev.Alias < next.Alias) {
33
- return -1
34
- }
35
- return 0
36
- })
37
-
38
- const tableData = sortData.map((item) => [
39
- item.Alias,
40
- item.EnvId,
41
- item.PackageName || '按量计费',
42
- item.Source === 'miniapp' ? '小程序' : '云开发',
43
- item.CreateTime,
44
- item.Status === 'NORMAL' ? '正常' : '不可用'
45
- ])
46
-
47
- printHorizontalTable(head, tableData)
48
- // 不可用环境警告
49
- const unavailableEnv = data.find((item) => item.Status === 'UNAVAILABLE')
50
- if (unavailableEnv) {
51
- log.warn(`您的环境中存在不可用的环境:[${unavailableEnv.EnvId}],请留意!`)
52
- }
53
- }
54
- }
55
-
56
- @ICommand()
57
- export class EnvRenameCommand extends Command {
58
- get options() {
59
- return {
60
- cmd: 'env',
61
- childCmd: 'rename <name>',
62
- deprecateCmd: 'env:rename <name>',
63
- options: [
64
- {
65
- flags: '-e, --envId <envId>',
66
- desc: '环境 Id'
67
- }
68
- ],
69
- desc: '修改云开发环境别名',
70
- requiredEnvId: false
71
- }
72
- }
73
-
74
- @InjectParams()
75
- async execute(@EnvId() envId, @ArgsParams() params, @Log() log: Logger) {
76
- log.verbose(params)
77
-
78
- const name = params?.[0]
79
- if (!name) {
80
- throw new CloudBaseError('环境别名不能为空!')
81
- }
82
-
83
- await updateEnvInfo({
84
- envId: envId,
85
- alias: name
86
- })
87
-
88
- log.success('更新环境别名成功 !')
89
- }
90
- }
@@ -1,92 +0,0 @@
1
- import inquirer from 'inquirer'
2
- import { createEnv, getEnvLimit } from '../../env'
3
- import { loadingFactory, genClickableLink } from '../../utils'
4
- import { CloudBaseError } from '../../error'
5
- import { Command, ICommand } from '../common'
6
- import { InjectParams, ArgsParams } from '../../decorators'
7
-
8
- @ICommand()
9
- export class CreateCommand extends Command {
10
- get options() {
11
- return {
12
- cmd: 'env',
13
- childCmd: 'create <alias>',
14
- deprecateCmd: 'env:create <alias>',
15
- options: [],
16
- desc: '创建云开发免费环境',
17
- requiredEnvId: false
18
- }
19
- }
20
-
21
- @InjectParams()
22
- async execute(@ArgsParams() params) {
23
- const alias = params?.[0]
24
- if (!alias) {
25
- throw new CloudBaseError('环境名称不能为空!')
26
- }
27
-
28
- const loading = loadingFactory()
29
-
30
- // 检查环境限制数量
31
- loading.start('检查中...')
32
- const { CurrentFreeEnvNum, MaxFreeEnvNum, CurrentEnvNum, MaxEnvNum } = await getEnvLimit()
33
- loading.stop()
34
-
35
- if (+CurrentFreeEnvNum >= +MaxFreeEnvNum) {
36
- const link = genClickableLink('https://console.cloud.tencent.com/tcb')
37
- throw new CloudBaseError(
38
- `免费环境数量已达上限,无法创建免费的环境,请到云开发-控制台中创建付费环境\n👉 ${link}`
39
- )
40
- }
41
-
42
- if (+CurrentEnvNum >= +MaxEnvNum) {
43
- throw new CloudBaseError('环境数量已达上限,无法创建新的环境!')
44
- }
45
-
46
- const { payment } = await inquirer.prompt({
47
- type: 'list',
48
- name: 'payment',
49
- choices: [
50
- {
51
- name: '按量计费(免费配额)',
52
- value: 'postpay'
53
- },
54
- {
55
- name: '包年包月(免费版本)',
56
- value: 'prepay'
57
- }
58
- ],
59
- message: '请选择环境计费模式:',
60
- default: 'postpay'
61
- })
62
-
63
- // 通过控制台授权登录的用户无订单支付权限
64
- const { confirm } = await inquirer.prompt({
65
- type: 'confirm',
66
- name: 'confirm',
67
- message:
68
- '因支付权限问题,仅支持通过 API 秘钥登录的主账户使用 CLI 创建包年包月免费环境,其他用户需要登录控制台支付相关订单才能完成环境创建,是否继续?',
69
- default: false
70
- })
71
-
72
- if (!confirm) {
73
- throw new CloudBaseError('创建环境流程终止')
74
- }
75
-
76
- loading.start('环境创建中...')
77
- try {
78
- const res = await createEnv({
79
- alias,
80
- paymentMode: payment
81
- })
82
- } catch (e) {
83
- if (e.code === 'ResourceInsufficient') {
84
- throw new CloudBaseError('环境数量已达上限,无法创建新的环境!')
85
- }
86
- throw e
87
- }
88
-
89
- loading.succeed('创建环境成功,初始化预计需要花费 3 分钟')
90
- console.log('你可以使用 cloudbase init 创建云开发项目')
91
- }
92
- }
@@ -1,186 +0,0 @@
1
- import inquirer from 'inquirer'
2
- import { CloudBaseError } from '../../error'
3
- import { Command, ICommand } from '../common'
4
- import { printHorizontalTable, loadingFactory } from '../../utils'
5
- import { InjectParams, EnvId, ArgsParams, Log, Logger } from '../../decorators'
6
- import { getEnvAuthDomains, createEnvDomain, deleteEnvDomain } from '../../env'
7
-
8
- @ICommand()
9
- export class ListAuthDoaminCommand extends Command {
10
- get options() {
11
- return {
12
- cmd: 'env',
13
- childCmd: {
14
- cmd: 'domain',
15
- desc: '域名管理'
16
- },
17
- childSubCmd: 'list',
18
- deprecateCmd: 'env:domain:list',
19
- options: [
20
- {
21
- flags: '-e, --envId <envId>',
22
- desc: '环境 Id'
23
- }
24
- ],
25
- desc: '列出环境的安全域名列表'
26
- }
27
- }
28
-
29
- @InjectParams()
30
- async execute(@EnvId() envId) {
31
- const domains = await getEnvAuthDomains({
32
- envId: envId
33
- })
34
-
35
- if (domains.length === 0) {
36
- console.log('安全域名为空!')
37
- return
38
- }
39
-
40
- const head = ['域名 Id', '域名', '创建时间', '状态']
41
- const tableData = domains.map((item) => [
42
- item.Id,
43
- item.Domain,
44
- item.CreateTime,
45
- item.Status === 'ENABLE' ? '启用中' : '禁用中'
46
- ])
47
-
48
- printHorizontalTable(head, tableData)
49
- }
50
- }
51
-
52
- @ICommand()
53
- export class CreateAuthDomainCommand extends Command {
54
- get options() {
55
- return {
56
- cmd: 'env',
57
- childCmd: {
58
- cmd: 'domain',
59
- desc: '域名管理'
60
- },
61
- childSubCmd: 'create <domain>',
62
- deprecateCmd: 'env:domain:create <domain>',
63
- options: [
64
- {
65
- flags: '-e, --envId <envId>',
66
- desc: '环境 Id'
67
- }
68
- ],
69
- desc: '添加环境安全域名,多个以斜杠 / 分隔'
70
- }
71
- }
72
-
73
- @InjectParams()
74
- async execute(@ArgsParams() params, @EnvId() envId, @Log() log: Logger) {
75
- log.verbose(params)
76
-
77
- const domain = params?.[0]
78
- const domains = domain.split('/')
79
-
80
- const { confirm } = await inquirer.prompt({
81
- type: 'confirm',
82
- name: 'confirm',
83
- message: `确认添加以下安全域名: ${domains} ?`,
84
- default: true
85
- })
86
-
87
- if (!confirm) {
88
- throw new CloudBaseError('操作终止!')
89
- }
90
-
91
- // 检查域名是否已经添加,重复添加会报错
92
- let envDomains = await getEnvAuthDomains({
93
- envId
94
- })
95
- envDomains = envDomains.map((item) => item.Domain)
96
- const exitDomains = []
97
-
98
- domains.forEach((item) => {
99
- if (envDomains.includes(item)) {
100
- exitDomains.push(item)
101
- }
102
- })
103
-
104
- if (exitDomains.length) {
105
- throw new CloudBaseError(`域名 [${exitDomains.join(', ')}] 已存在!`)
106
- }
107
-
108
- await createEnvDomain({
109
- envId,
110
- domains: domains
111
- })
112
- log.success('添加安全域名成功!')
113
- }
114
- }
115
-
116
- @ICommand()
117
- export class DeleteAuthDomainCommand extends Command {
118
- get options() {
119
- return {
120
- cmd: 'env',
121
- childCmd: {
122
- cmd: 'domain',
123
- desc: '域名管理'
124
- },
125
- childSubCmd: 'delete',
126
- deprecateCmd: 'env:domain:delete',
127
- options: [
128
- {
129
- flags: '-e, --envId <envId>',
130
- desc: '环境 Id'
131
- }
132
- ],
133
- desc: '删除环境的安全域名'
134
- }
135
- }
136
-
137
- @InjectParams()
138
- async execute(@EnvId() envId, @Log() log: Logger) {
139
- const loading = loadingFactory()
140
-
141
- loading.start('拉取环境安全域名中')
142
-
143
- const domains = await getEnvAuthDomains({
144
- envId
145
- })
146
-
147
- if (domains.length === 0) {
148
- loading.fail('域名安全为空,不能执行删除操作!')
149
- return
150
- }
151
-
152
- loading.succeed('拉取环境安全域名成功!')
153
-
154
- const domainList = domains.map((item) => item.Domain)
155
-
156
- const { selectDomains } = await inquirer.prompt({
157
- type: 'checkbox',
158
- name: 'selectDomains',
159
- message: '请选择需要删除的域名(可多选)>',
160
- choices: domainList,
161
- default: true
162
- })
163
-
164
- const { confirm } = await inquirer.prompt({
165
- type: 'confirm',
166
- name: 'confirm',
167
- message: `确认删除以下安全域名: ${selectDomains} ?`,
168
- default: true
169
- })
170
-
171
- if (!confirm) {
172
- throw new CloudBaseError('操作终止!')
173
- }
174
-
175
- const domainIds = domains
176
- .filter((item) => selectDomains.includes(item.Domain))
177
- .map((item) => item.Id)
178
-
179
- const deleted = await deleteEnvDomain({
180
- domainIds,
181
- envId
182
- })
183
-
184
- log.success(`成功删除了 ${deleted} 个域名!`)
185
- }
186
- }
@@ -1,4 +0,0 @@
1
- export * from './base'
2
- export * from './create'
3
- export * from './domain'
4
- export * from './login'