@cloudbase/cli 2.0.3 → 2.0.4-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/.editorconfig +9 -9
  2. package/.eslintignore +7 -7
  3. package/.eslintrc +35 -35
  4. package/.prettierrc.js +29 -29
  5. package/.vscode/launch.json +16 -16
  6. package/LICENSE +5 -5
  7. package/README.md +35 -35
  8. package/bin/cloudbase.js +5 -5
  9. package/bin/tcb.js +0 -0
  10. package/changelog.md +6 -6
  11. package/jest.config.js +17 -17
  12. package/lib/commands/account/login.js +18 -18
  13. package/lib/commands/storage/storage.js +1 -1
  14. package/lib/env/login.js +7 -7
  15. package/package.json +2 -2
  16. package/post-install.js +61 -61
  17. package/runtime/nodejs/bootstrap.js +255 -255
  18. package/runtime/nodejs/runtime.js +183 -183
  19. package/src/auth/index.ts +1 -1
  20. package/src/auth/login.ts +91 -91
  21. package/src/auth/logout.ts +7 -7
  22. package/src/commands/account/index.ts +2 -2
  23. package/src/commands/account/login.ts +192 -192
  24. package/src/commands/account/logout.ts +24 -24
  25. package/src/commands/env/base.ts +90 -90
  26. package/src/commands/env/create.ts +92 -92
  27. package/src/commands/env/domain.ts +186 -186
  28. package/src/commands/env/index.ts +4 -4
  29. package/src/commands/env/login.ts +235 -235
  30. package/src/commands/framework/index.ts +124 -124
  31. package/src/commands/functions/alias/getRoute.ts +76 -76
  32. package/src/commands/functions/alias/index.ts +2 -2
  33. package/src/commands/functions/alias/setRoute.ts +82 -82
  34. package/src/commands/functions/code-download.ts +100 -100
  35. package/src/commands/functions/code-update.ts +62 -62
  36. package/src/commands/functions/concurrency/delete.ts +45 -45
  37. package/src/commands/functions/concurrency/index.ts +2 -2
  38. package/src/commands/functions/concurrency/list.ts +58 -58
  39. package/src/commands/functions/concurrency/set.ts +47 -47
  40. package/src/commands/functions/config-update.ts +76 -76
  41. package/src/commands/functions/copy.ts +62 -62
  42. package/src/commands/functions/delete.ts +79 -79
  43. package/src/commands/functions/deploy.ts +293 -293
  44. package/src/commands/functions/detail.ts +138 -138
  45. package/src/commands/functions/index.ts +16 -16
  46. package/src/commands/functions/invoke.ts +121 -121
  47. package/src/commands/functions/layer/bind.ts +182 -182
  48. package/src/commands/functions/layer/common.ts +8 -8
  49. package/src/commands/functions/layer/create.ts +49 -49
  50. package/src/commands/functions/layer/delete.ts +73 -73
  51. package/src/commands/functions/layer/download.ts +92 -92
  52. package/src/commands/functions/layer/index.ts +7 -7
  53. package/src/commands/functions/layer/list.ts +94 -94
  54. package/src/commands/functions/layer/sort.ts +76 -76
  55. package/src/commands/functions/list.ts +68 -68
  56. package/src/commands/functions/log.ts +148 -148
  57. package/src/commands/functions/run.ts +249 -249
  58. package/src/commands/functions/trigger-create.ts +79 -79
  59. package/src/commands/functions/trigger-delete.ts +105 -105
  60. package/src/commands/functions/version/index.ts +1 -1
  61. package/src/commands/functions/version/list.ts +73 -73
  62. package/src/commands/functions/version/publish.ts +43 -43
  63. package/src/commands/gateway/create.ts +109 -109
  64. package/src/commands/gateway/delete.ts +81 -81
  65. package/src/commands/gateway/domain.ts +159 -159
  66. package/src/commands/gateway/index.ts +5 -5
  67. package/src/commands/gateway/list.ts +76 -76
  68. package/src/commands/gateway/switch.ts +107 -107
  69. package/src/commands/helpers/index.ts +2 -2
  70. package/src/commands/helpers/init.ts +431 -431
  71. package/src/commands/helpers/new.ts +117 -117
  72. package/src/commands/helpers/open.ts +67 -67
  73. package/src/commands/hosting/hosting.ts +360 -360
  74. package/src/commands/index.ts +13 -13
  75. package/src/commands/lowcode/app.ts +34 -34
  76. package/src/commands/lowcode/comps.ts +322 -322
  77. package/src/commands/lowcode/index.ts +1 -1
  78. package/src/commands/lowcode/utils.ts +24 -24
  79. package/src/commands/run/image/index.ts +4 -4
  80. package/src/commands/run/standalonegateway/common.ts +7 -7
  81. package/src/commands/run/standalonegateway/create.ts +85 -85
  82. package/src/commands/run/standalonegateway/destroy.ts +59 -59
  83. package/src/commands/run/standalonegateway/index.ts +4 -4
  84. package/src/commands/run/standalonegateway/list.ts +53 -53
  85. package/src/commands/run/standalonegateway/package.ts +62 -62
  86. package/src/commands/run/standalonegateway/turn.ts +63 -63
  87. package/src/commands/run/version/index.ts +4 -4
  88. package/src/commands/smart.ts +132 -132
  89. package/src/commands/storage/storage.ts +464 -464
  90. package/src/commands/third/thirdAttach.ts +49 -49
  91. package/src/completion/index.ts +13 -13
  92. package/src/decorators/captureError.ts +25 -25
  93. package/src/decorators/constants.ts +12 -12
  94. package/src/decorators/deprecate.ts +25 -25
  95. package/src/decorators/guard.ts +42 -42
  96. package/src/decorators/index.ts +7 -7
  97. package/src/decorators/injectParams.ts +54 -54
  98. package/src/decorators/params/common.ts +28 -28
  99. package/src/decorators/params/index.ts +35 -35
  100. package/src/env/domain.ts +33 -33
  101. package/src/env/index.ts +63 -63
  102. package/src/env/login.ts +80 -80
  103. package/src/error.ts +36 -36
  104. package/src/function/alias.ts +43 -43
  105. package/src/function/base.ts +253 -253
  106. package/src/function/code.ts +55 -55
  107. package/src/function/concurrency.ts +57 -57
  108. package/src/function/create.ts +78 -78
  109. package/src/function/delete.ts +42 -42
  110. package/src/function/index.ts +10 -10
  111. package/src/function/layer/attach.ts +68 -68
  112. package/src/function/layer/create.ts +63 -63
  113. package/src/function/layer/delete.ts +21 -21
  114. package/src/function/layer/download.ts +54 -54
  115. package/src/function/layer/index.ts +7 -7
  116. package/src/function/layer/list.ts +32 -32
  117. package/src/function/layer/sort.ts +24 -24
  118. package/src/function/trigger.ts +97 -97
  119. package/src/function/update.ts +35 -35
  120. package/src/function/version.ts +38 -38
  121. package/src/function/vpc.ts +22 -22
  122. package/src/gateway/index.ts +137 -137
  123. package/src/hosting.ts +212 -212
  124. package/src/index.ts +13 -13
  125. package/src/logger.ts +17 -17
  126. package/src/run/create.ts +23 -23
  127. package/src/run/delete.ts +15 -15
  128. package/src/run/image/build.ts +36 -36
  129. package/src/run/image/delete.ts +13 -13
  130. package/src/run/image/index.ts +3 -3
  131. package/src/run/image/info.ts +26 -26
  132. package/src/run/list.ts +29 -29
  133. package/src/run/repo.ts +24 -24
  134. package/src/run/standalonegateway/create.ts +24 -24
  135. package/src/run/standalonegateway/destroy.ts +19 -19
  136. package/src/run/standalonegateway/index.ts +4 -4
  137. package/src/run/standalonegateway/list.ts +74 -74
  138. package/src/run/standalonegateway/package/list.ts +24 -24
  139. package/src/run/standalonegateway/turn/index.ts +1 -1
  140. package/src/run/standalonegateway/turn/off.ts +19 -19
  141. package/src/run/standalonegateway/turn/on.ts +19 -19
  142. package/src/run/version/create.ts +68 -68
  143. package/src/run/version/delete.ts +15 -15
  144. package/src/run/version/index.ts +5 -5
  145. package/src/run/version/list.ts +16 -16
  146. package/src/run/version/modify.ts +16 -16
  147. package/src/run/version/repo.ts +27 -27
  148. package/src/run/version/update.ts +58 -58
  149. package/src/storage.ts +114 -114
  150. package/src/third/index.ts +12 -12
  151. package/src/utils/auth.ts +15 -15
  152. package/src/utils/cli-table.ts +23 -23
  153. package/src/utils/config.ts +39 -39
  154. package/src/utils/env.ts +244 -244
  155. package/src/utils/fs/del.ts +5 -5
  156. package/src/utils/fs/index.ts +71 -71
  157. package/src/utils/function-packer.ts +97 -97
  158. package/src/utils/log.ts +81 -81
  159. package/src/utils/net/cloud-api-request.ts +62 -62
  160. package/src/utils/net/credential.ts +53 -53
  161. package/src/utils/net/index.ts +4 -4
  162. package/src/utils/net/manager-service.ts +36 -36
  163. package/src/utils/net/proxy.ts +6 -6
  164. package/src/utils/notice.ts +28 -28
  165. package/src/utils/output/highlight.ts +5 -5
  166. package/src/utils/output/index.ts +2 -2
  167. package/src/utils/output/link.ts +10 -10
  168. package/src/utils/output/loading.ts +82 -82
  169. package/src/utils/parallel.ts +82 -82
  170. package/src/utils/platform/index.ts +2 -2
  171. package/src/utils/platform/mac.ts +21 -21
  172. package/src/utils/platform/os.ts +64 -64
  173. package/src/utils/platform/port.ts +10 -10
  174. package/src/utils/progress-bar.ts +38 -38
  175. package/src/utils/prompt/select.ts +59 -59
  176. package/src/utils/reporter/agree.ts +20 -20
  177. package/src/utils/reporter/download.ts +26 -26
  178. package/src/utils/reporter/index.ts +3 -3
  179. package/src/utils/reporter/usage.ts +20 -20
  180. package/src/utils/store/auth.ts +49 -49
  181. package/src/utils/store/common.ts +8 -8
  182. package/src/utils/store/db.ts +68 -68
  183. package/src/utils/store/index.ts +4 -4
  184. package/src/utils/store/usage.ts +12 -12
  185. package/src/utils/template.ts +170 -170
  186. package/src/utils/tools/encoding.ts +8 -8
  187. package/src/utils/tools/index.ts +4 -4
  188. package/src/utils/tools/object.ts +33 -33
  189. package/src/utils/tools/time.ts +38 -38
  190. package/src/utils/tools/uid.ts +19 -19
  191. package/templates/html/loginFail.html +90 -90
  192. package/templates/html/loginSuccess.html +86 -86
  193. package/templates/server/node/_gitignore +54 -54
  194. package/templates/server/node/cloudbaserc.json +10 -10
  195. package/templates/server/node/index.js +5 -5
  196. package/templates/server/node/package.json +9 -9
  197. package/tsconfig.json +19 -19
  198. package/tsconfig.test.json +13 -13
  199. package/.vscode/settings.json +0 -3
@@ -1,124 +1,124 @@
1
- import { run } from '@cloudbase/framework-core'
2
- import { Command, ICommand } from '../common'
3
- import { ICommandContext } from '../../types'
4
- import { InjectParams, CmdContext, ArgsParams, Log, Logger, ArgsOptions } from '../../decorators'
5
-
6
- import * as Hosting from '../../hosting'
7
- import * as Function from '../../function'
8
- import { authSupevisor } from '../../utils'
9
-
10
- async function callFramework(ctx, command, module, params?) {
11
- const { envId, config } = ctx
12
- const { bumpVersion, versionRemark } = ctx.options
13
-
14
- const loginState = await authSupevisor.getLoginState()
15
- const { token, secretId, secretKey } = loginState
16
-
17
- await run(
18
- {
19
- projectPath: process.cwd(),
20
- cloudbaseConfig: {
21
- secretId,
22
- secretKey,
23
- token,
24
- envId
25
- },
26
- config,
27
- logLevel: process.argv.includes('--verbose') ? 'debug' : 'info',
28
- resourceProviders: {
29
- hosting: Hosting,
30
- function: Function
31
- },
32
- bumpVersion: Boolean(bumpVersion),
33
- versionRemark
34
- },
35
- command,
36
- module,
37
- params
38
- )
39
- }
40
-
41
- @ICommand()
42
- export class FrameworkDeploy extends Command {
43
- get options() {
44
- return {
45
- cmd: 'framework',
46
- childCmd: 'deploy [module]',
47
- deprecateCmd: 'framework:deploy [module]',
48
- options: [
49
- {
50
- flags: '-e, --envId <envId>',
51
- desc: '环境 Id'
52
- },
53
- { flags: '--verbose', desc: '是否打印详细日志' }
54
- ],
55
- desc: '云开发 Serverless 应用框架:部署全栈应用'
56
- }
57
- }
58
-
59
- @InjectParams()
60
- async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params) {
61
- const [module] = params || []
62
- await callFramework(ctx, 'deploy', module)
63
- }
64
- }
65
-
66
- @ICommand()
67
- export class FrameworkCompile extends Command {
68
- get options() {
69
- return {
70
- cmd: 'framework',
71
- childCmd: 'compile [module]',
72
- deprecateCmd: 'framework:compile [module]',
73
- options: [
74
- {
75
- flags: '-e, --envId <envId>',
76
- desc: '环境 Id'
77
- },
78
- { flags: '--verbose', desc: '是否打印详细日志' },
79
- { flags: '--bumpVersion', desc: '是否生成新版本' },
80
- {
81
- flags: '--versionRemark <versionRemark>',
82
- desc: '新版本描述信息'
83
- }
84
- ],
85
- desc: '云开发 Serverless 应用框架:编译应用描述文件'
86
- }
87
- }
88
-
89
- @InjectParams()
90
- async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params) {
91
- const [module] = params || []
92
- await callFramework(ctx, 'compile', module)
93
- }
94
- }
95
-
96
- @ICommand()
97
- export class FrameworkRun extends Command {
98
- get options() {
99
- return {
100
- cmd: 'framework',
101
- childCmd: 'run [command]',
102
- deprecateCmd: 'framework:run [command]',
103
- options: [
104
- {
105
- flags: '-e, --envId <envId>',
106
- desc: '环境 Id'
107
- },
108
- {
109
- flags: '--plugin <plugin>',
110
- desc: '执行命令的插件'
111
- }
112
- ],
113
- desc: '云开发 Serverless 应用框架:执行自定义命令'
114
- }
115
- }
116
-
117
- @InjectParams()
118
- async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params, @ArgsOptions() options) {
119
- const [command] = params || []
120
- const { plugin } = options
121
-
122
- await callFramework(ctx, 'run', plugin, { runCommandKey: command })
123
- }
124
- }
1
+ import { run } from '@cloudbase/framework-core'
2
+ import { Command, ICommand } from '../common'
3
+ import { ICommandContext } from '../../types'
4
+ import { InjectParams, CmdContext, ArgsParams, Log, Logger, ArgsOptions } from '../../decorators'
5
+
6
+ import * as Hosting from '../../hosting'
7
+ import * as Function from '../../function'
8
+ import { authSupevisor } from '../../utils'
9
+
10
+ async function callFramework(ctx, command, module, params?) {
11
+ const { envId, config } = ctx
12
+ const { bumpVersion, versionRemark } = ctx.options
13
+
14
+ const loginState = await authSupevisor.getLoginState()
15
+ const { token, secretId, secretKey } = loginState
16
+
17
+ await run(
18
+ {
19
+ projectPath: process.cwd(),
20
+ cloudbaseConfig: {
21
+ secretId,
22
+ secretKey,
23
+ token,
24
+ envId
25
+ },
26
+ config,
27
+ logLevel: process.argv.includes('--verbose') ? 'debug' : 'info',
28
+ resourceProviders: {
29
+ hosting: Hosting,
30
+ function: Function
31
+ },
32
+ bumpVersion: Boolean(bumpVersion),
33
+ versionRemark
34
+ },
35
+ command,
36
+ module,
37
+ params
38
+ )
39
+ }
40
+
41
+ @ICommand()
42
+ export class FrameworkDeploy extends Command {
43
+ get options() {
44
+ return {
45
+ cmd: 'framework',
46
+ childCmd: 'deploy [module]',
47
+ deprecateCmd: 'framework:deploy [module]',
48
+ options: [
49
+ {
50
+ flags: '-e, --envId <envId>',
51
+ desc: '环境 Id'
52
+ },
53
+ { flags: '--verbose', desc: '是否打印详细日志' }
54
+ ],
55
+ desc: '云开发 Serverless 应用框架:部署全栈应用'
56
+ }
57
+ }
58
+
59
+ @InjectParams()
60
+ async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params) {
61
+ const [module] = params || []
62
+ await callFramework(ctx, 'deploy', module)
63
+ }
64
+ }
65
+
66
+ @ICommand()
67
+ export class FrameworkCompile extends Command {
68
+ get options() {
69
+ return {
70
+ cmd: 'framework',
71
+ childCmd: 'compile [module]',
72
+ deprecateCmd: 'framework:compile [module]',
73
+ options: [
74
+ {
75
+ flags: '-e, --envId <envId>',
76
+ desc: '环境 Id'
77
+ },
78
+ { flags: '--verbose', desc: '是否打印详细日志' },
79
+ { flags: '--bumpVersion', desc: '是否生成新版本' },
80
+ {
81
+ flags: '--versionRemark <versionRemark>',
82
+ desc: '新版本描述信息'
83
+ }
84
+ ],
85
+ desc: '云开发 Serverless 应用框架:编译应用描述文件'
86
+ }
87
+ }
88
+
89
+ @InjectParams()
90
+ async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params) {
91
+ const [module] = params || []
92
+ await callFramework(ctx, 'compile', module)
93
+ }
94
+ }
95
+
96
+ @ICommand()
97
+ export class FrameworkRun extends Command {
98
+ get options() {
99
+ return {
100
+ cmd: 'framework',
101
+ childCmd: 'run [command]',
102
+ deprecateCmd: 'framework:run [command]',
103
+ options: [
104
+ {
105
+ flags: '-e, --envId <envId>',
106
+ desc: '环境 Id'
107
+ },
108
+ {
109
+ flags: '--plugin <plugin>',
110
+ desc: '执行命令的插件'
111
+ }
112
+ ],
113
+ desc: '云开发 Serverless 应用框架:执行自定义命令'
114
+ }
115
+ }
116
+
117
+ @InjectParams()
118
+ async execute(@CmdContext() ctx: ICommandContext, @Log() logger: Logger, @ArgsParams() params, @ArgsOptions() options) {
119
+ const [command] = params || []
120
+ const { plugin } = options
121
+
122
+ await callFramework(ctx, 'run', plugin, { runCommandKey: command })
123
+ }
124
+ }
@@ -1,76 +1,76 @@
1
-
2
- import { Command, ICommand } from '../../common'
3
- import { loadingFactory, printHorizontalTable } from '../../../utils'
4
- import { getFunctionAliasConfig } from '../../../function'
5
- import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
6
-
7
-
8
- function parseRoutingConfigValue(expression: string) {
9
- const commaIndex = expression.indexOf(',')
10
- const valueExpression = expression.substring(commaIndex + 1, expression.length - 1)
11
- return valueExpression
12
- }
13
-
14
- @ICommand()
15
- export class getFunctionRoutingConfig extends Command {
16
- get options() {
17
- return {
18
- cmd: 'fn',
19
- childCmd: 'get-route <name>',
20
- options: [
21
- {
22
- flags: '-e, --envId <envId>',
23
- desc: '环境 Id'
24
- }
25
- ],
26
- desc: '查看函数版本流量配置'
27
- }
28
- }
29
-
30
- @InjectParams()
31
- async execute(@CmdContext() ctx, @ArgsParams() params) {
32
- const name = params?.[0]
33
-
34
- const {
35
- envId
36
- } = ctx
37
-
38
- const loading = loadingFactory()
39
- loading.start(`查询函数 [${name}] 版本流量配置中...`)
40
-
41
- const aliasRes = await getFunctionAliasConfig({
42
- envId,
43
- functionName: name,
44
- name: '$DEFAULT'
45
- })
46
-
47
- const routingConfig = aliasRes?.RoutingConfig?.AddtionVersionMatchs
48
- let finalConfig = []
49
- if (routingConfig.length === 1) {
50
- finalConfig.push({
51
- version: routingConfig[0].Version,
52
- value: parseRoutingConfigValue(routingConfig[0].Expression)
53
- })
54
- } else if (routingConfig.length === 2) {
55
- finalConfig.push({
56
- version: routingConfig[0].Version,
57
- value: parseRoutingConfigValue(routingConfig[0].Expression)
58
- }, {
59
- version: routingConfig[1].Version,
60
- value: 100 - Number(parseRoutingConfigValue(routingConfig[0].Expression))
61
- })
62
- }
63
-
64
- loading.stop()
65
-
66
- const head: string[] = ['版本', '流量比例']
67
-
68
- const tableData = finalConfig.map((item) => [
69
- item.version,
70
- item.value
71
- ])
72
-
73
- printHorizontalTable(head, tableData)
74
-
75
- }
76
- }
1
+
2
+ import { Command, ICommand } from '../../common'
3
+ import { loadingFactory, printHorizontalTable } from '../../../utils'
4
+ import { getFunctionAliasConfig } from '../../../function'
5
+ import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
6
+
7
+
8
+ function parseRoutingConfigValue(expression: string) {
9
+ const commaIndex = expression.indexOf(',')
10
+ const valueExpression = expression.substring(commaIndex + 1, expression.length - 1)
11
+ return valueExpression
12
+ }
13
+
14
+ @ICommand()
15
+ export class getFunctionRoutingConfig extends Command {
16
+ get options() {
17
+ return {
18
+ cmd: 'fn',
19
+ childCmd: 'get-route <name>',
20
+ options: [
21
+ {
22
+ flags: '-e, --envId <envId>',
23
+ desc: '环境 Id'
24
+ }
25
+ ],
26
+ desc: '查看函数版本流量配置'
27
+ }
28
+ }
29
+
30
+ @InjectParams()
31
+ async execute(@CmdContext() ctx, @ArgsParams() params) {
32
+ const name = params?.[0]
33
+
34
+ const {
35
+ envId
36
+ } = ctx
37
+
38
+ const loading = loadingFactory()
39
+ loading.start(`查询函数 [${name}] 版本流量配置中...`)
40
+
41
+ const aliasRes = await getFunctionAliasConfig({
42
+ envId,
43
+ functionName: name,
44
+ name: '$DEFAULT'
45
+ })
46
+
47
+ const routingConfig = aliasRes?.RoutingConfig?.AddtionVersionMatchs
48
+ let finalConfig = []
49
+ if (routingConfig.length === 1) {
50
+ finalConfig.push({
51
+ version: routingConfig[0].Version,
52
+ value: parseRoutingConfigValue(routingConfig[0].Expression)
53
+ })
54
+ } else if (routingConfig.length === 2) {
55
+ finalConfig.push({
56
+ version: routingConfig[0].Version,
57
+ value: parseRoutingConfigValue(routingConfig[0].Expression)
58
+ }, {
59
+ version: routingConfig[1].Version,
60
+ value: 100 - Number(parseRoutingConfigValue(routingConfig[0].Expression))
61
+ })
62
+ }
63
+
64
+ loading.stop()
65
+
66
+ const head: string[] = ['版本', '流量比例']
67
+
68
+ const tableData = finalConfig.map((item) => [
69
+ item.version,
70
+ item.value
71
+ ])
72
+
73
+ printHorizontalTable(head, tableData)
74
+
75
+ }
76
+ }
@@ -1,2 +1,2 @@
1
- export * from './setRoute'
2
- export * from './getRoute'
1
+ export * from './setRoute'
2
+ export * from './getRoute'
@@ -1,82 +1,82 @@
1
-
2
- import { Command, ICommand } from '../../common'
3
- import { CloudBaseError } from '../../../error'
4
- import { loadingFactory } from '../../../utils'
5
- import { setFunctionAliasConfig } from '../../../function'
6
- import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
7
-
8
-
9
- @ICommand()
10
- export class setFunctionRoutingConfig extends Command {
11
- get options() {
12
- return {
13
- cmd: 'fn',
14
- childCmd: 'config-route <name> <version1> <traffic1> [version2] [traffic2]',
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 version1 = params?.[1]
29
- const traffic1 = Number(params?.[2])
30
-
31
- const version2 = params?.[3]
32
- const traffic2 = Number(params?.[4])
33
-
34
- // 校验
35
-
36
- // 1. version2 及 traffic2 必须同时存在
37
- if ((version2 === undefined && traffic2 !== undefined) || (version2 !== undefined && traffic2 === undefined)) {
38
- throw new CloudBaseError('version2 和 traffic2 必须同时设置')
39
- }
40
-
41
- if (traffic1 !== undefined && traffic2 !== undefined) {
42
- if (traffic1 + traffic2 !== 100) {
43
- throw new CloudBaseError('traffic1 和 traffic2 同时设置时,需保证总和 100')
44
- }
45
- }
46
-
47
- const {
48
- envId
49
- } = ctx
50
-
51
- const loading = loadingFactory()
52
- loading.start(`设置函数 [${name}] 版本流量配置中...`)
53
-
54
- let routingConfigParams = {
55
- AddtionVersionMatchs: [{
56
- Expression: `[0,${traffic1})`,
57
- Key: "invoke.headers.X-Tcb-Route-Key",
58
- Method: "range",
59
- Version: version1
60
- }]
61
- }
62
-
63
- if (version2 !== undefined) {
64
- routingConfigParams.AddtionVersionMatchs.push({
65
- Expression: `[${traffic1},${100})`,
66
- Key: "invoke.headers.X-Tcb-Route-Key",
67
- Method: "range",
68
- Version: version2
69
- })
70
- }
71
-
72
- await setFunctionAliasConfig({
73
- envId,
74
- functionName: name,
75
- name: '$DEFAULT',
76
- functionVersion: '$LATEST',
77
- routingConfig: routingConfigParams
78
- })
79
-
80
- loading.succeed(`设置函数 [${name}] 版本流量配置成功!`)
81
- }
82
- }
1
+
2
+ import { Command, ICommand } from '../../common'
3
+ import { CloudBaseError } from '../../../error'
4
+ import { loadingFactory } from '../../../utils'
5
+ import { setFunctionAliasConfig } from '../../../function'
6
+ import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
7
+
8
+
9
+ @ICommand()
10
+ export class setFunctionRoutingConfig extends Command {
11
+ get options() {
12
+ return {
13
+ cmd: 'fn',
14
+ childCmd: 'config-route <name> <version1> <traffic1> [version2] [traffic2]',
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 version1 = params?.[1]
29
+ const traffic1 = Number(params?.[2])
30
+
31
+ const version2 = params?.[3]
32
+ const traffic2 = Number(params?.[4])
33
+
34
+ // 校验
35
+
36
+ // 1. version2 及 traffic2 必须同时存在
37
+ if ((version2 === undefined && traffic2 !== undefined) || (version2 !== undefined && traffic2 === undefined)) {
38
+ throw new CloudBaseError('version2 和 traffic2 必须同时设置')
39
+ }
40
+
41
+ if (traffic1 !== undefined && traffic2 !== undefined) {
42
+ if (traffic1 + traffic2 !== 100) {
43
+ throw new CloudBaseError('traffic1 和 traffic2 同时设置时,需保证总和 100')
44
+ }
45
+ }
46
+
47
+ const {
48
+ envId
49
+ } = ctx
50
+
51
+ const loading = loadingFactory()
52
+ loading.start(`设置函数 [${name}] 版本流量配置中...`)
53
+
54
+ let routingConfigParams = {
55
+ AddtionVersionMatchs: [{
56
+ Expression: `[0,${traffic1})`,
57
+ Key: "invoke.headers.X-Tcb-Route-Key",
58
+ Method: "range",
59
+ Version: version1
60
+ }]
61
+ }
62
+
63
+ if (version2 !== undefined) {
64
+ routingConfigParams.AddtionVersionMatchs.push({
65
+ Expression: `[${traffic1},${100})`,
66
+ Key: "invoke.headers.X-Tcb-Route-Key",
67
+ Method: "range",
68
+ Version: version2
69
+ })
70
+ }
71
+
72
+ await setFunctionAliasConfig({
73
+ envId,
74
+ functionName: name,
75
+ name: '$DEFAULT',
76
+ functionVersion: '$LATEST',
77
+ routingConfig: routingConfigParams
78
+ })
79
+
80
+ loading.succeed(`设置函数 [${name}] 版本流量配置成功!`)
81
+ }
82
+ }