@cloudbase/cli 2.0.12-alpha.1 → 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 (244) hide show
  1. package/.vscode/launch.json +0 -10
  2. package/.vscode/settings.json +3 -0
  3. package/bin/cloudbase.js +0 -0
  4. package/bin/tcb.js +0 -0
  5. package/lib/commands/lowcode/app.js +2 -30
  6. package/lib/run/service/deployPackage.js +2 -9
  7. package/lib/utils/checkTcbrEnv.js +5 -4
  8. package/lib/utils/debug-logger.js +30 -0
  9. package/lib/utils/net/cloud-api-request.js +7 -1
  10. package/lib/utils/net/http-request.js +16 -5
  11. package/package.json +5 -4
  12. package/types/commands/lowcode/app.d.ts +0 -10
  13. package/types/utils/debug-logger.d.ts +1 -0
  14. package/types/utils/net/http-request.d.ts +6 -2
  15. package/.history/.gitignore_20220624162613 +0 -84
  16. package/.history/.gitignore_20220627114054 +0 -86
  17. package/.history/package_20220711204706.json +0 -88
  18. package/.history/package_20220711204818.json +0 -88
  19. package/.history/package_20220712151717.json +0 -88
  20. package/.history/src/commands/lowcode/app_20220624162613.ts +0 -34
  21. package/.history/src/commands/lowcode/app_20220627114205.ts +0 -52
  22. package/.history/src/index_20220624162613.ts +0 -13
  23. package/.history/src/index_20220627113609.ts +0 -15
  24. package/.history/src/index_20220627114102.ts +0 -13
  25. package/src/auth/index.ts +0 -2
  26. package/src/auth/login.ts +0 -91
  27. package/src/auth/logout.ts +0 -7
  28. package/src/commands/account/index.ts +0 -2
  29. package/src/commands/account/login.ts +0 -192
  30. package/src/commands/account/logout.ts +0 -24
  31. package/src/commands/common.ts +0 -246
  32. package/src/commands/env/base.ts +0 -90
  33. package/src/commands/env/create.ts +0 -92
  34. package/src/commands/env/domain.ts +0 -186
  35. package/src/commands/env/index.ts +0 -4
  36. package/src/commands/env/login.ts +0 -235
  37. package/src/commands/framework/index.ts +0 -124
  38. package/src/commands/functions/alias/getRoute.ts +0 -76
  39. package/src/commands/functions/alias/index.ts +0 -2
  40. package/src/commands/functions/alias/setRoute.ts +0 -82
  41. package/src/commands/functions/code-download.ts +0 -100
  42. package/src/commands/functions/code-update.ts +0 -62
  43. package/src/commands/functions/concurrency/delete.ts +0 -45
  44. package/src/commands/functions/concurrency/index.ts +0 -3
  45. package/src/commands/functions/concurrency/list.ts +0 -58
  46. package/src/commands/functions/concurrency/set.ts +0 -47
  47. package/src/commands/functions/config-update.ts +0 -76
  48. package/src/commands/functions/copy.ts +0 -62
  49. package/src/commands/functions/delete.ts +0 -79
  50. package/src/commands/functions/deploy.ts +0 -293
  51. package/src/commands/functions/detail.ts +0 -138
  52. package/src/commands/functions/index.ts +0 -16
  53. package/src/commands/functions/invoke.ts +0 -121
  54. package/src/commands/functions/layer/bind.ts +0 -182
  55. package/src/commands/functions/layer/common.ts +0 -8
  56. package/src/commands/functions/layer/create.ts +0 -49
  57. package/src/commands/functions/layer/delete.ts +0 -73
  58. package/src/commands/functions/layer/download.ts +0 -92
  59. package/src/commands/functions/layer/index.ts +0 -7
  60. package/src/commands/functions/layer/list.ts +0 -94
  61. package/src/commands/functions/layer/sort.ts +0 -76
  62. package/src/commands/functions/list.ts +0 -68
  63. package/src/commands/functions/log.ts +0 -148
  64. package/src/commands/functions/run.ts +0 -249
  65. package/src/commands/functions/trigger-create.ts +0 -79
  66. package/src/commands/functions/trigger-delete.ts +0 -105
  67. package/src/commands/functions/version/index.ts +0 -2
  68. package/src/commands/functions/version/list.ts +0 -73
  69. package/src/commands/functions/version/publish.ts +0 -43
  70. package/src/commands/gateway/create.ts +0 -109
  71. package/src/commands/gateway/delete.ts +0 -81
  72. package/src/commands/gateway/domain.ts +0 -159
  73. package/src/commands/gateway/index.ts +0 -5
  74. package/src/commands/gateway/list.ts +0 -76
  75. package/src/commands/gateway/switch.ts +0 -107
  76. package/src/commands/helpers/index.ts +0 -3
  77. package/src/commands/helpers/init.ts +0 -431
  78. package/src/commands/helpers/new.ts +0 -117
  79. package/src/commands/helpers/open.ts +0 -67
  80. package/src/commands/hosting/hosting.ts +0 -360
  81. package/src/commands/hosting/index.ts +0 -1
  82. package/src/commands/index.ts +0 -13
  83. package/src/commands/lowcode/app.ts +0 -52
  84. package/src/commands/lowcode/comps.ts +0 -325
  85. package/src/commands/lowcode/index.ts +0 -2
  86. package/src/commands/lowcode/utils.ts +0 -25
  87. package/src/commands/run/create.ts +0 -153
  88. package/src/commands/run/delete.ts +0 -77
  89. package/src/commands/run/image/common.ts +0 -8
  90. package/src/commands/run/image/delete.ts +0 -68
  91. package/src/commands/run/image/download.ts +0 -68
  92. package/src/commands/run/image/index.ts +0 -5
  93. package/src/commands/run/image/list.ts +0 -84
  94. package/src/commands/run/image/upload.ts +0 -76
  95. package/src/commands/run/index.ts +0 -7
  96. package/src/commands/run/list.ts +0 -83
  97. package/src/commands/run/service/config.ts +0 -81
  98. package/src/commands/run/service/create.ts +0 -122
  99. package/src/commands/run/service/deploy.ts +0 -125
  100. package/src/commands/run/service/index.ts +0 -5
  101. package/src/commands/run/service/list.ts +0 -94
  102. package/src/commands/run/service/update.ts +0 -108
  103. package/src/commands/run/standalonegateway/common.ts +0 -8
  104. package/src/commands/run/standalonegateway/create.ts +0 -85
  105. package/src/commands/run/standalonegateway/destroy.ts +0 -59
  106. package/src/commands/run/standalonegateway/index.ts +0 -5
  107. package/src/commands/run/standalonegateway/list.ts +0 -53
  108. package/src/commands/run/standalonegateway/package.ts +0 -62
  109. package/src/commands/run/standalonegateway/turn.ts +0 -63
  110. package/src/commands/run/version/common.ts +0 -8
  111. package/src/commands/run/version/create.ts +0 -369
  112. package/src/commands/run/version/delete.ts +0 -64
  113. package/src/commands/run/version/index.ts +0 -5
  114. package/src/commands/run/version/list.ts +0 -91
  115. package/src/commands/run/version/modify.ts +0 -137
  116. package/src/commands/run/version/update.ts +0 -398
  117. package/src/commands/smart.ts +0 -132
  118. package/src/commands/storage/index.ts +0 -1
  119. package/src/commands/storage/storage.ts +0 -464
  120. package/src/commands/third/index.ts +0 -1
  121. package/src/commands/third/thirdAttach.ts +0 -49
  122. package/src/completion/index.ts +0 -13
  123. package/src/constant.ts +0 -154
  124. package/src/decorators/captureError.ts +0 -25
  125. package/src/decorators/constants.ts +0 -12
  126. package/src/decorators/deprecate.ts +0 -25
  127. package/src/decorators/guard.ts +0 -42
  128. package/src/decorators/index.ts +0 -7
  129. package/src/decorators/injectParams.ts +0 -54
  130. package/src/decorators/params/common.ts +0 -28
  131. package/src/decorators/params/index.ts +0 -35
  132. package/src/env/domain.ts +0 -33
  133. package/src/env/index.ts +0 -63
  134. package/src/env/login.ts +0 -80
  135. package/src/error.ts +0 -36
  136. package/src/function/alias.ts +0 -43
  137. package/src/function/base.ts +0 -253
  138. package/src/function/code.ts +0 -55
  139. package/src/function/concurrency.ts +0 -57
  140. package/src/function/create.ts +0 -78
  141. package/src/function/delete.ts +0 -42
  142. package/src/function/index.ts +0 -11
  143. package/src/function/layer/attach.ts +0 -68
  144. package/src/function/layer/create.ts +0 -63
  145. package/src/function/layer/delete.ts +0 -21
  146. package/src/function/layer/download.ts +0 -54
  147. package/src/function/layer/index.ts +0 -7
  148. package/src/function/layer/list.ts +0 -32
  149. package/src/function/layer/sort.ts +0 -24
  150. package/src/function/trigger.ts +0 -97
  151. package/src/function/update.ts +0 -35
  152. package/src/function/version.ts +0 -39
  153. package/src/function/vpc.ts +0 -22
  154. package/src/gateway/index.ts +0 -137
  155. package/src/help.ts +0 -50
  156. package/src/hosting.ts +0 -212
  157. package/src/index.ts +0 -13
  158. package/src/logger.ts +0 -17
  159. package/src/run/create.ts +0 -23
  160. package/src/run/delete.ts +0 -15
  161. package/src/run/image/build.ts +0 -36
  162. package/src/run/image/delete.ts +0 -14
  163. package/src/run/image/index.ts +0 -4
  164. package/src/run/image/info.ts +0 -27
  165. package/src/run/image/list.ts +0 -23
  166. package/src/run/index.ts +0 -8
  167. package/src/run/list.ts +0 -30
  168. package/src/run/repo.ts +0 -25
  169. package/src/run/service/common.ts +0 -311
  170. package/src/run/service/config.ts +0 -77
  171. package/src/run/service/create.ts +0 -52
  172. package/src/run/service/deployPackage.ts +0 -65
  173. package/src/run/service/index.ts +0 -7
  174. package/src/run/service/list.ts +0 -29
  175. package/src/run/service/showLogs.ts +0 -98
  176. package/src/run/service/update.ts +0 -82
  177. package/src/run/standalonegateway/create.ts +0 -24
  178. package/src/run/standalonegateway/destroy.ts +0 -19
  179. package/src/run/standalonegateway/index.ts +0 -5
  180. package/src/run/standalonegateway/list.ts +0 -74
  181. package/src/run/standalonegateway/package/index.ts +0 -1
  182. package/src/run/standalonegateway/package/list.ts +0 -24
  183. package/src/run/standalonegateway/turn/index.ts +0 -2
  184. package/src/run/standalonegateway/turn/off.ts +0 -19
  185. package/src/run/standalonegateway/turn/on.ts +0 -19
  186. package/src/run/version/create.ts +0 -68
  187. package/src/run/version/delete.ts +0 -16
  188. package/src/run/version/index.ts +0 -6
  189. package/src/run/version/list.ts +0 -17
  190. package/src/run/version/modify.ts +0 -17
  191. package/src/run/version/repo.ts +0 -28
  192. package/src/run/version/update.ts +0 -59
  193. package/src/storage.ts +0 -114
  194. package/src/third/index.ts +0 -13
  195. package/src/types.ts +0 -672
  196. package/src/utils/auth.ts +0 -15
  197. package/src/utils/checkTcbrEnv.ts +0 -67
  198. package/src/utils/cli-table.ts +0 -23
  199. package/src/utils/commonParamsCheck.ts +0 -65
  200. package/src/utils/config.ts +0 -39
  201. package/src/utils/env.ts +0 -244
  202. package/src/utils/fs/del.ts +0 -5
  203. package/src/utils/fs/index.ts +0 -71
  204. package/src/utils/function-packer.ts +0 -97
  205. package/src/utils/index.ts +0 -25
  206. package/src/utils/log.ts +0 -82
  207. package/src/utils/net/cloud-api-request.ts +0 -62
  208. package/src/utils/net/credential.ts +0 -53
  209. package/src/utils/net/http-request.ts +0 -84
  210. package/src/utils/net/index.ts +0 -5
  211. package/src/utils/net/manager-service.ts +0 -36
  212. package/src/utils/net/proxy.ts +0 -6
  213. package/src/utils/notice.ts +0 -28
  214. package/src/utils/output/highlight.ts +0 -5
  215. package/src/utils/output/index.ts +0 -3
  216. package/src/utils/output/link.ts +0 -10
  217. package/src/utils/output/loading.ts +0 -82
  218. package/src/utils/parallel.ts +0 -82
  219. package/src/utils/platform/index.ts +0 -3
  220. package/src/utils/platform/mac.ts +0 -21
  221. package/src/utils/platform/os.ts +0 -64
  222. package/src/utils/platform/port.ts +0 -10
  223. package/src/utils/progress-bar.ts +0 -38
  224. package/src/utils/prompt/index.ts +0 -1
  225. package/src/utils/prompt/select.ts +0 -60
  226. package/src/utils/reporter/agree.ts +0 -20
  227. package/src/utils/reporter/download.ts +0 -26
  228. package/src/utils/reporter/index.ts +0 -3
  229. package/src/utils/reporter/usage.ts +0 -20
  230. package/src/utils/store/auth.ts +0 -49
  231. package/src/utils/store/common.ts +0 -8
  232. package/src/utils/store/db.ts +0 -68
  233. package/src/utils/store/index.ts +0 -5
  234. package/src/utils/store/usage.ts +0 -12
  235. package/src/utils/tcbrApi/callTcbrApi.ts +0 -28
  236. package/src/utils/tcbrApi/index.ts +0 -1
  237. package/src/utils/template.ts +0 -170
  238. package/src/utils/tools/encoding.ts +0 -8
  239. package/src/utils/tools/index.ts +0 -4
  240. package/src/utils/tools/object.ts +0 -33
  241. package/src/utils/tools/time.ts +0 -38
  242. package/src/utils/tools/uid.ts +0 -19
  243. package/src/utils/validator.ts +0 -65
  244. package/yarn-error.log +0 -12841
@@ -1,45 +0,0 @@
1
-
2
- import { Command, ICommand } from '../../common'
3
- import { CloudBaseError } from '../../../error'
4
- import { loadingFactory } from '../../../utils'
5
- import { deleteProvisionedConcurrencyConfig } from '../../../function'
6
- import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
7
-
8
-
9
- @ICommand()
10
- export class deleteProvisionedConcurrency extends Command {
11
- get options() {
12
- return {
13
- cmd: 'fn',
14
- childCmd: 'delete-provisioned-concurrency <name> <version>',
15
- options: [
16
- {
17
- flags: '-e, --envId <envId>',
18
- desc: '环境 Id'
19
- }
20
- ],
21
- desc: '删除函数版本预置并发配置'
22
- }
23
- }
24
-
25
- @InjectParams()
26
- async execute(@CmdContext() ctx, @ArgsParams() params) {
27
- const name = params?.[0]
28
- const version = params?.[1]
29
-
30
- const {
31
- envId
32
- } = ctx
33
-
34
- const loading = loadingFactory()
35
- loading.start(`删除函数 [${name}] 预置并发配置中...`)
36
-
37
- await deleteProvisionedConcurrencyConfig({
38
- envId,
39
- functionName: name,
40
- qualifier: version
41
- })
42
-
43
- loading.succeed(`删除函数 [${name}] 预置并发配置成功!`)
44
- }
45
- }
@@ -1,3 +0,0 @@
1
- export * from './delete'
2
- export * from './list'
3
- export * from './set'
@@ -1,58 +0,0 @@
1
-
2
- import { Command, ICommand } from '../../common'
3
- import { CloudBaseError } from '../../../error'
4
- import { loadingFactory, printHorizontalTable } from '../../../utils'
5
- import { getProvisionedConcurrencyConfig } from '../../../function'
6
- import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
7
- import { StatusMap, ConcurrencyTaskStatus } from '../../../constant'
8
-
9
-
10
- @ICommand()
11
- export class getProvisionedConcurrency extends Command {
12
- get options() {
13
- return {
14
- cmd: 'fn',
15
- childCmd: 'get-provisioned-concurrency <name> [version]',
16
- options: [
17
- {
18
- flags: '-e, --envId <envId>',
19
- desc: '环境 Id'
20
- }
21
- ],
22
- desc: '获取函数版本预置并发配置'
23
- }
24
- }
25
-
26
- @InjectParams()
27
- async execute(@CmdContext() ctx, @ArgsParams() params, @ArgsOptions() options) {
28
- const name = params?.[0]
29
- const version = params?.[1]
30
-
31
- const {
32
- envId
33
- } = ctx
34
-
35
- const loading = loadingFactory()
36
- loading.start(`拉取函数 [${name}] 预置并发配置中...`)
37
-
38
- const res = await getProvisionedConcurrencyConfig({
39
- envId,
40
- functionName: name,
41
- qualifier: version
42
- })
43
-
44
- loading.stop()
45
-
46
- const head: string[] = ['设置并发数', '已完成并发数', '预置任务状态', '状态说明', '版本号']
47
-
48
- const tableData = res.Allocated.map((item) => [
49
- item.AllocatedProvisionedConcurrencyNum,
50
- item.AvailableProvisionedConcurrencyNum,
51
- ConcurrencyTaskStatus[item.Status] || '无',
52
- item.StatusReason,
53
- item.Qualifier
54
- ])
55
-
56
- printHorizontalTable(head, tableData)
57
- }
58
- }
@@ -1,47 +0,0 @@
1
-
2
- import { Command, ICommand } from '../../common'
3
- import { CloudBaseError } from '../../../error'
4
- import { loadingFactory } from '../../../utils'
5
- import { setProvisionedConcurrencyConfig } from '../../../function'
6
- import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
7
-
8
-
9
- @ICommand()
10
- export class setProvisionedConcurrency extends Command {
11
- get options() {
12
- return {
13
- cmd: 'fn',
14
- childCmd: 'set-provisioned-concurrency <name> <version> <concurrency>',
15
- options: [
16
- {
17
- flags: '-e, --envId <envId>',
18
- desc: '环境 Id'
19
- }
20
- ],
21
- desc: '设置函数版本预置并发'
22
- }
23
- }
24
-
25
- @InjectParams()
26
- async execute(@CmdContext() ctx, @ArgsParams() params) {
27
- const name = params?.[0]
28
- const version = params?.[1]
29
- const concurrency = Number(params?.[2] || 0)
30
-
31
- const {
32
- envId
33
- } = ctx
34
-
35
- const loading = loadingFactory()
36
- loading.start(`配置函数 [${name}] 预置并发中...`)
37
-
38
- await setProvisionedConcurrencyConfig({
39
- envId,
40
- functionName: name,
41
- qualifier: version,
42
- versionProvisionedConcurrencyNum: concurrency
43
- })
44
-
45
- loading.succeed(`配置函数 [${name}] 预置并发成功!`)
46
- }
47
- }
@@ -1,76 +0,0 @@
1
- import inquirer from 'inquirer'
2
- import { Command, ICommand } from '../common'
3
- import { CloudBaseError } from '../../error'
4
- import { InjectParams, CmdContext, ArgsParams, Log, Logger } from '../../decorators'
5
- import { batchUpdateFunctionConfig, updateFunctionConfig } from '../../function'
6
-
7
- @ICommand()
8
- export class ConfigUpdate extends Command {
9
- get options() {
10
- return {
11
- cmd: 'fn',
12
- childCmd: {
13
- cmd: 'config',
14
- desc: '函数配置管理'
15
- },
16
- childSubCmd: 'update [name]',
17
- deprecateCmd: 'functions:config:update [name]',
18
- options: [
19
- {
20
- flags: '-e, --envId <envId>',
21
- desc: '环境 Id'
22
- }
23
- ],
24
- desc: '更新云函数配置'
25
- }
26
- }
27
-
28
- @InjectParams()
29
- async execute(@CmdContext() ctx, @ArgsParams() params, @Log() log: Logger) {
30
- const {
31
- envId,
32
- config: { functions }
33
- } = ctx
34
- const name = params?.[0]
35
- let isBathUpdate = false
36
-
37
- // 不指定云函数名称,更新配置文件中所有函数的配置
38
- if (!name) {
39
- const { isBatch } = await inquirer.prompt({
40
- type: 'confirm',
41
- name: 'isBatch',
42
- message: '无云函数名称,是否需要更新配置文件中的【全部云函数】的配置?',
43
- default: false
44
- })
45
-
46
- isBathUpdate = isBatch
47
-
48
- if (!isBathUpdate) {
49
- throw new CloudBaseError('请指定云函数名称!')
50
- }
51
- }
52
-
53
- if (isBathUpdate) {
54
- await batchUpdateFunctionConfig({
55
- envId,
56
- functions,
57
- log: true
58
- })
59
- return
60
- }
61
-
62
- const functionItem = functions.find((item) => item.name === name)
63
-
64
- if (!functionItem) {
65
- throw new CloudBaseError('未找到相关函数配置,请检查函数名是否正确')
66
- }
67
-
68
- await updateFunctionConfig({
69
- envId,
70
- functionName: name,
71
- config: functionItem
72
- })
73
-
74
- log.success(`[${name}] 更新云函数配置成功!`)
75
- }
76
- }
@@ -1,62 +0,0 @@
1
- import { Command, ICommand } from '../common'
2
- import { CloudBaseError } from '../../error'
3
- import { copyFunction } from '../../function'
4
- import { InjectParams, EnvId, ArgsOptions, ArgsParams, Log, Logger } from '../../decorators'
5
-
6
- @ICommand()
7
- export class FunctionCopy extends Command {
8
- get options() {
9
- return {
10
- cmd: 'fn',
11
- childCmd: 'copy <name> [newFunctionName]',
12
- deprecateCmd: 'functions:copy <name> [newFunctionName]',
13
- options: [
14
- {
15
- flags: '-e, --envId <envId>',
16
- desc: '环境 Id'
17
- },
18
- {
19
- flags: '-t, --target <targetEnvId>',
20
- desc: '目标环境 Id'
21
- },
22
- // {
23
- // flags: '--code-secret <codeSecret>',
24
- // desc: '代码加密的函数的 CodeSecret'
25
- // },
26
- {
27
- flags: '--force',
28
- desc: '如果目标环境下存在同名函数,覆盖原函数'
29
- }
30
- ],
31
- desc: '拷贝云函数'
32
- }
33
- }
34
-
35
- @InjectParams()
36
- async execute(
37
- @EnvId() envId,
38
- @ArgsOptions() options,
39
- @ArgsParams() params,
40
- @Log() log: Logger
41
- ) {
42
- const name = params?.[0]
43
- const newFunctionName = params?.[1]
44
-
45
- const { force, codeSecret, targetEnvId } = options
46
-
47
- if (!name) {
48
- throw new CloudBaseError('请指定函数名称!')
49
- }
50
-
51
- await copyFunction({
52
- force,
53
- envId,
54
- codeSecret,
55
- functionName: name,
56
- newFunctionName: newFunctionName || name,
57
- targetEnvId: targetEnvId || envId
58
- })
59
-
60
- log.success('拷贝函数成功')
61
- }
62
- }
@@ -1,79 +0,0 @@
1
- import inquirer from 'inquirer'
2
-
3
- import { Command, ICommand } from '../common'
4
- import { CloudBaseError } from '../../error'
5
- import { loadingFactory } from '../../utils'
6
- import { deleteFunction, batchDeleteFunctions } from '../../function'
7
- import { InjectParams, CmdContext, ArgsParams } from '../../decorators'
8
-
9
- @ICommand()
10
- export class DeleteFunction extends Command {
11
- get options() {
12
- return {
13
- cmd: 'fn',
14
- childCmd: 'delete [name]',
15
- deprecateCmd: 'functions:delete [name]',
16
- options: [
17
- {
18
- flags: '-e, --envId <envId>',
19
- desc: '环境 Id'
20
- }
21
- ],
22
- desc: '删除云函数'
23
- }
24
- }
25
-
26
- @InjectParams()
27
- async execute(@CmdContext() ctx, @ArgsParams() params) {
28
- const name = params?.[0]
29
- const {
30
- envId,
31
- config: { functions }
32
- } = ctx
33
-
34
- let isBatchDelete = false
35
-
36
- // 不指定云函数名称,默认删除所有函数
37
- if (!name) {
38
- const answer = await inquirer.prompt({
39
- type: 'confirm',
40
- name: 'isBatch',
41
- message: '无云函数名称,是否需要删除配置文件中的全部云函数?',
42
- default: false
43
- })
44
-
45
- // 危险操作,再次确认
46
- if (answer.isBatch) {
47
- const { reConfirm } = await inquirer.prompt({
48
- type: 'confirm',
49
- name: 'reConfirm',
50
- message: '确定要删除配置文件中的全部云函数?',
51
- default: false
52
- })
53
- isBatchDelete = reConfirm
54
- }
55
-
56
- if (!isBatchDelete) {
57
- throw new CloudBaseError('请指定需要删除的云函数名称!')
58
- }
59
- }
60
-
61
- if (isBatchDelete) {
62
- const names: string[] = functions.map((item) => item.name)
63
- return batchDeleteFunctions({
64
- names,
65
- envId
66
- })
67
- }
68
-
69
- const loading = loadingFactory()
70
- loading.start(`删除函数 [${name}] 中...`)
71
-
72
- await deleteFunction({
73
- envId,
74
- functionName: name
75
- })
76
-
77
- loading.succeed(`删除函数 [${name}] 成功!`)
78
- }
79
- }
@@ -1,293 +0,0 @@
1
- import path from 'path'
2
- import inquirer from 'inquirer'
3
- import { getRegion } from '@cloudbase/toolbox'
4
- import { Command, ICommand } from '../common'
5
- import { CloudBaseError } from '../../error'
6
- import { createFunction } from '../../function'
7
- import { queryGateway, createGateway } from '../../gateway'
8
- import {
9
- logger,
10
- random,
11
- isDirectory,
12
- loadingFactory,
13
- genClickableLink,
14
- highlightCommand,
15
- checkFullAccess,
16
- AsyncTaskParallelController
17
- } from '../../utils'
18
- import { ICreateFunctionOptions } from '../../types'
19
- import { DefaultFunctionDeployConfig } from '../../constant'
20
- import { InjectParams, CmdContext, ArgsParams, Log, Logger } from '../../decorators'
21
-
22
- const regionIdMap = {
23
- 'ap-guangzhou': 1,
24
- 'ap-shanghai': 4,
25
- 'ap-beijing': 8
26
- }
27
-
28
- @ICommand()
29
- export class FunctionDeploy extends Command {
30
- get options() {
31
- return {
32
- cmd: 'fn',
33
- childCmd: 'deploy [name]',
34
- deprecateCmd: 'functions:deploy [name]',
35
- options: [
36
- {
37
- flags: '-e, --envId <envId>',
38
- desc: '环境 Id'
39
- },
40
- {
41
- flags: '--code-secret <codeSecret>',
42
- desc: '传入此参数将保护代码,格式为 36 位大小写字母和数字'
43
- },
44
- {
45
- flags: '--force',
46
- desc: '如果存在同名函数,上传后覆盖同名函数'
47
- },
48
- {
49
- flags: '--path <path>',
50
- desc: '自动创建HTTP 访问服务访问路径'
51
- },
52
- {
53
- flags: '--all',
54
- desc: '部署配置文件中的包含的全部云函数'
55
- },
56
- {
57
- flags: '--dir <dir>',
58
- desc: '指定云函数的文件夹路径'
59
- }
60
- ],
61
- desc: '部署云函数'
62
- }
63
- }
64
-
65
- @InjectParams()
66
- async execute(@CmdContext() ctx, @ArgsParams() params, @Log() log: Logger) {
67
- const { envId, config, options } = ctx
68
- const { functions } = config
69
- const { force, codeSecret, path: access, all, dir } = options
70
- const functionRootPath = path.join(process.cwd(), config.functionRoot)
71
- const name = params?.[0]
72
-
73
- if (access && checkFullAccess(access)) {
74
- log.warn('--path 参数已更换为HTTP 访问服务路径,请使用 --dir 指定部署函数的文件夹路径')
75
- }
76
-
77
- if (access && access[0] !== '/') {
78
- throw new CloudBaseError('HTTP 访问服务路径必须以 / 开头')
79
- }
80
-
81
- // 当没有指定函数名称或函数路径时,询问处理否部署全部云函数
82
- if ((!name && !dir) || all) {
83
- return this.deployAllFunction({
84
- all,
85
- envId,
86
- force,
87
- access,
88
- functions,
89
- codeSecret,
90
- functionRootPath
91
- })
92
- }
93
-
94
- // 校验函数路径是否存在
95
- if (dir) {
96
- checkFullAccess(dir, true)
97
- if (!isDirectory(dir)) {
98
- throw new CloudBaseError('--dir 参数必须指定为云函数的文件夹路径')
99
- }
100
- }
101
-
102
- let newFunction
103
- if (functions && functions.length > 0) {
104
- newFunction = functions.find((item) => item.name === name)
105
- }
106
-
107
- // 没有配置,使用默认配置
108
- if (!newFunction || !newFunction.name) {
109
- log.info('未找到函数发布配置,使用默认配置 => 运行时:Nodejs10.15/在线安装依赖')
110
- newFunction = {
111
- name,
112
- ...DefaultFunctionDeployConfig
113
- }
114
- }
115
-
116
- const loading = loadingFactory()
117
-
118
- loading.start('云函数部署中...')
119
-
120
- try {
121
- await createFunction({
122
- force,
123
- envId,
124
- codeSecret,
125
- functionRootPath,
126
- func: newFunction,
127
- accessPath: access,
128
- functionPath: dir
129
- })
130
- loading.succeed(`[${newFunction.name}] 云函数部署成功!`)
131
- // await genApiGateway(envId, name)
132
- this.printSuccessTips(envId)
133
- } catch (e) {
134
- // 询问是否覆盖同名函数
135
- loading.stop()
136
- await this.handleDeployFail(e, {
137
- envId,
138
- codeSecret,
139
- functionRootPath,
140
- func: newFunction,
141
- accessPath: access,
142
- functionPath: dir
143
- })
144
- }
145
-
146
- if (access || newFunction.path) {
147
- const link = genClickableLink(
148
- `https://${envId}.service.tcloudbase.com${access || newFunction.path}`
149
- )
150
- console.log(`\n云函数HTTP 访问服务访问链接:${link}`)
151
- }
152
- }
153
-
154
- async deployAllFunction(options: any) {
155
- const { functions = [], envId, force, codeSecret, functionRootPath, all, access } = options
156
-
157
- // 指定 all 参数,直接部署全部云函数
158
- if (!all) {
159
- const { isBatch } = await inquirer.prompt({
160
- type: 'confirm',
161
- name: 'isBatch',
162
- message: '没有指定需要部署的云函数,是否部署配置文件中的全部云函数?',
163
- default: false
164
- })
165
-
166
- // 用户不部署全部函数,报错
167
- if (!isBatch) {
168
- throw new CloudBaseError(
169
- '请指定需要部署的云函数的名称或通过 --path 参数指定需要部署的函数的路径!'
170
- )
171
- }
172
- }
173
-
174
- // 批量部署云函数
175
- const loading = loadingFactory()
176
- const tasks = functions.map((func) => async () => {
177
- loading.start('云函数部署中')
178
- try {
179
- await createFunction({
180
- func,
181
- envId,
182
- force,
183
- codeSecret,
184
- functionRootPath,
185
- accessPath: access
186
- })
187
- loading.succeed(`[${func.name}] 云函数部署成功`)
188
- } catch (e) {
189
- loading.stop()
190
- await this.handleDeployFail(e, {
191
- func,
192
- envId,
193
- codeSecret,
194
- functionRootPath,
195
- accessPath: access
196
- })
197
- }
198
- })
199
-
200
- if (tasks.length > 5) {
201
- logger.info('函数数量较多,将使用队列部署')
202
- }
203
-
204
- // 控制函数创建并发
205
- const asyncTaskController = new AsyncTaskParallelController(5, 50)
206
- asyncTaskController.loadTasks(tasks)
207
- const results = await asyncTaskController.run()
208
-
209
- // 输出信息
210
- const success = results.filter((_) => !_)
211
- logger.success(`成功部署 ${success?.length} 个函数`)
212
- // 部署失败
213
- const err = results.filter((_) => _)
214
- err?.length && logger.error(`${err?.length} 个云函数部署失败`)
215
- }
216
-
217
- async handleDeployFail(e: CloudBaseError, options: ICreateFunctionOptions) {
218
- const { envId, codeSecret, functionRootPath, func, functionPath, accessPath } = options
219
- const loading = loadingFactory()
220
-
221
- if (e.code === 'ResourceInUse.FunctionName' || e.code === 'ResourceInUse.Function') {
222
- const { force } = await inquirer.prompt({
223
- type: 'confirm',
224
- name: 'force',
225
- message: `存在同名云函数:[${func.name}],是否覆盖原函数代码与配置`,
226
- default: false
227
- })
228
-
229
- if (force) {
230
- loading.start('云函数部署中...')
231
- try {
232
- await createFunction({
233
- func,
234
- envId,
235
- codeSecret,
236
- accessPath,
237
- force: true,
238
- functionPath,
239
- functionRootPath
240
- })
241
- loading.succeed(`[${func.name}] 云函数部署成功!`)
242
- // await genApiGateway(envId, name)
243
- await this.printSuccessTips(envId)
244
- } catch (e) {
245
- loading.stop()
246
- throw e
247
- }
248
- return
249
- }
250
- }
251
-
252
- throw e
253
- }
254
-
255
- @InjectParams()
256
- async printSuccessTips(envId: string, @Log() log?: Logger) {
257
- let url = `https://console.cloud.tencent.com/tcb/scf?envId=${envId}`
258
- const region = await getRegion()
259
- url += `&rid=${regionIdMap[region]}`
260
- const link = genClickableLink(url)
261
- log.breakLine()
262
- log.info(`控制台查看函数详情或创建HTTP 访问服务链接 🔗:${link}`)
263
- log.info(`使用 ${highlightCommand('cloudbase functions:list')} 命令查看已部署云函数`)
264
- }
265
-
266
- // 创建函数 API 网关
267
- async genApiGateway(envId: string, name: string) {
268
- const loading = loadingFactory()
269
- // 检查是否绑定了 HTTP 网关
270
- const res = await queryGateway({
271
- name,
272
- envId
273
- })
274
- // 未开启,不生成 HTTP 调用了链接
275
- if (res?.EnableService === false) return
276
- loading.start('生成云函数HTTP 访问服务中...')
277
-
278
- let path
279
- if (res?.APISet?.length > 0) {
280
- path = res.APISet[0]?.Path
281
- } else {
282
- path = `/${random(12)}`
283
- await createGateway({
284
- envId,
285
- name,
286
- path
287
- })
288
- }
289
- loading.stop()
290
- const link = genClickableLink(`https://${envId}.service.tcloudbase.com${path}`)
291
- console.log(`\n云函数HTTP 访问服务链接:${link}`)
292
- }
293
- }