@cloudbase/cli 2.0.3 → 2.0.5

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 (217) 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/changelog.md +6 -6
  10. package/jest.config.js +17 -17
  11. package/lib/commands/account/login.js +18 -18
  12. package/lib/commands/run/list.js +2 -3
  13. package/lib/commands/storage/storage.js +1 -1
  14. package/lib/env/login.js +7 -7
  15. package/lib/utils/tcbrApi/callTcbrApi.js +2 -2
  16. package/package.json +3 -3
  17. package/post-install.js +61 -61
  18. package/runtime/nodejs/bootstrap.js +255 -255
  19. package/runtime/nodejs/runtime.js +183 -183
  20. package/src/auth/index.ts +1 -1
  21. package/src/auth/login.ts +91 -91
  22. package/src/auth/logout.ts +7 -7
  23. package/src/commands/account/index.ts +2 -2
  24. package/src/commands/account/login.ts +192 -192
  25. package/src/commands/account/logout.ts +24 -24
  26. package/src/commands/env/base.ts +90 -90
  27. package/src/commands/env/create.ts +92 -92
  28. package/src/commands/env/domain.ts +186 -186
  29. package/src/commands/env/index.ts +4 -4
  30. package/src/commands/env/login.ts +235 -235
  31. package/src/commands/framework/index.ts +124 -124
  32. package/src/commands/functions/alias/getRoute.ts +76 -76
  33. package/src/commands/functions/alias/index.ts +2 -2
  34. package/src/commands/functions/alias/setRoute.ts +82 -82
  35. package/src/commands/functions/code-download.ts +100 -100
  36. package/src/commands/functions/code-update.ts +62 -62
  37. package/src/commands/functions/concurrency/delete.ts +45 -45
  38. package/src/commands/functions/concurrency/index.ts +2 -2
  39. package/src/commands/functions/concurrency/list.ts +58 -58
  40. package/src/commands/functions/concurrency/set.ts +47 -47
  41. package/src/commands/functions/config-update.ts +76 -76
  42. package/src/commands/functions/copy.ts +62 -62
  43. package/src/commands/functions/delete.ts +79 -79
  44. package/src/commands/functions/deploy.ts +293 -293
  45. package/src/commands/functions/detail.ts +138 -138
  46. package/src/commands/functions/index.ts +16 -16
  47. package/src/commands/functions/invoke.ts +121 -121
  48. package/src/commands/functions/layer/bind.ts +182 -182
  49. package/src/commands/functions/layer/common.ts +8 -8
  50. package/src/commands/functions/layer/create.ts +49 -49
  51. package/src/commands/functions/layer/delete.ts +73 -73
  52. package/src/commands/functions/layer/download.ts +92 -92
  53. package/src/commands/functions/layer/index.ts +7 -7
  54. package/src/commands/functions/layer/list.ts +94 -94
  55. package/src/commands/functions/layer/sort.ts +76 -76
  56. package/src/commands/functions/list.ts +68 -68
  57. package/src/commands/functions/log.ts +148 -148
  58. package/src/commands/functions/run.ts +249 -249
  59. package/src/commands/functions/trigger-create.ts +79 -79
  60. package/src/commands/functions/trigger-delete.ts +105 -105
  61. package/src/commands/functions/version/index.ts +1 -1
  62. package/src/commands/functions/version/list.ts +73 -73
  63. package/src/commands/functions/version/publish.ts +43 -43
  64. package/src/commands/gateway/create.ts +109 -109
  65. package/src/commands/gateway/delete.ts +81 -81
  66. package/src/commands/gateway/domain.ts +159 -159
  67. package/src/commands/gateway/index.ts +5 -5
  68. package/src/commands/gateway/list.ts +76 -76
  69. package/src/commands/gateway/switch.ts +107 -107
  70. package/src/commands/helpers/index.ts +2 -2
  71. package/src/commands/helpers/init.ts +431 -431
  72. package/src/commands/helpers/new.ts +117 -117
  73. package/src/commands/helpers/open.ts +67 -67
  74. package/src/commands/hosting/hosting.ts +360 -360
  75. package/src/commands/index.ts +13 -13
  76. package/src/commands/lowcode/app.ts +34 -34
  77. package/src/commands/lowcode/comps.ts +322 -322
  78. package/src/commands/lowcode/index.ts +1 -1
  79. package/src/commands/lowcode/utils.ts +24 -24
  80. package/src/commands/run/image/index.ts +4 -4
  81. package/src/commands/run/list.ts +2 -3
  82. package/src/commands/run/standalonegateway/common.ts +7 -7
  83. package/src/commands/run/standalonegateway/create.ts +85 -85
  84. package/src/commands/run/standalonegateway/destroy.ts +59 -59
  85. package/src/commands/run/standalonegateway/index.ts +4 -4
  86. package/src/commands/run/standalonegateway/list.ts +53 -53
  87. package/src/commands/run/standalonegateway/package.ts +62 -62
  88. package/src/commands/run/standalonegateway/turn.ts +63 -63
  89. package/src/commands/run/version/index.ts +4 -4
  90. package/src/commands/smart.ts +132 -132
  91. package/src/commands/storage/storage.ts +464 -464
  92. package/src/commands/third/thirdAttach.ts +49 -49
  93. package/src/completion/index.ts +13 -13
  94. package/src/decorators/captureError.ts +25 -25
  95. package/src/decorators/constants.ts +12 -12
  96. package/src/decorators/deprecate.ts +25 -25
  97. package/src/decorators/guard.ts +42 -42
  98. package/src/decorators/index.ts +7 -7
  99. package/src/decorators/injectParams.ts +54 -54
  100. package/src/decorators/params/common.ts +28 -28
  101. package/src/decorators/params/index.ts +35 -35
  102. package/src/env/domain.ts +33 -33
  103. package/src/env/index.ts +63 -63
  104. package/src/env/login.ts +80 -80
  105. package/src/error.ts +36 -36
  106. package/src/function/alias.ts +43 -43
  107. package/src/function/base.ts +253 -253
  108. package/src/function/code.ts +55 -55
  109. package/src/function/concurrency.ts +57 -57
  110. package/src/function/create.ts +78 -78
  111. package/src/function/delete.ts +42 -42
  112. package/src/function/index.ts +10 -10
  113. package/src/function/layer/attach.ts +68 -68
  114. package/src/function/layer/create.ts +63 -63
  115. package/src/function/layer/delete.ts +21 -21
  116. package/src/function/layer/download.ts +54 -54
  117. package/src/function/layer/index.ts +7 -7
  118. package/src/function/layer/list.ts +32 -32
  119. package/src/function/layer/sort.ts +24 -24
  120. package/src/function/trigger.ts +97 -97
  121. package/src/function/update.ts +35 -35
  122. package/src/function/version.ts +38 -38
  123. package/src/function/vpc.ts +22 -22
  124. package/src/gateway/index.ts +137 -137
  125. package/src/hosting.ts +212 -212
  126. package/src/index.ts +13 -13
  127. package/src/logger.ts +17 -17
  128. package/src/run/create.ts +23 -23
  129. package/src/run/delete.ts +15 -15
  130. package/src/run/image/build.ts +36 -36
  131. package/src/run/image/delete.ts +13 -13
  132. package/src/run/image/index.ts +3 -3
  133. package/src/run/image/info.ts +26 -26
  134. package/src/run/list.ts +29 -29
  135. package/src/run/repo.ts +24 -24
  136. package/src/run/standalonegateway/create.ts +24 -24
  137. package/src/run/standalonegateway/destroy.ts +19 -19
  138. package/src/run/standalonegateway/index.ts +4 -4
  139. package/src/run/standalonegateway/list.ts +74 -74
  140. package/src/run/standalonegateway/package/list.ts +24 -24
  141. package/src/run/standalonegateway/turn/index.ts +1 -1
  142. package/src/run/standalonegateway/turn/off.ts +19 -19
  143. package/src/run/standalonegateway/turn/on.ts +19 -19
  144. package/src/run/version/create.ts +68 -68
  145. package/src/run/version/delete.ts +15 -15
  146. package/src/run/version/index.ts +5 -5
  147. package/src/run/version/list.ts +16 -16
  148. package/src/run/version/modify.ts +16 -16
  149. package/src/run/version/repo.ts +27 -27
  150. package/src/run/version/update.ts +58 -58
  151. package/src/storage.ts +114 -114
  152. package/src/third/index.ts +12 -12
  153. package/src/utils/auth.ts +15 -15
  154. package/src/utils/cli-table.ts +23 -23
  155. package/src/utils/config.ts +39 -39
  156. package/src/utils/env.ts +244 -244
  157. package/src/utils/fs/del.ts +5 -5
  158. package/src/utils/fs/index.ts +71 -71
  159. package/src/utils/function-packer.ts +97 -97
  160. package/src/utils/log.ts +81 -81
  161. package/src/utils/net/cloud-api-request.ts +62 -62
  162. package/src/utils/net/credential.ts +53 -53
  163. package/src/utils/net/index.ts +4 -4
  164. package/src/utils/net/manager-service.ts +36 -36
  165. package/src/utils/net/proxy.ts +6 -6
  166. package/src/utils/notice.ts +28 -28
  167. package/src/utils/output/highlight.ts +5 -5
  168. package/src/utils/output/index.ts +2 -2
  169. package/src/utils/output/link.ts +10 -10
  170. package/src/utils/output/loading.ts +82 -82
  171. package/src/utils/parallel.ts +82 -82
  172. package/src/utils/platform/index.ts +2 -2
  173. package/src/utils/platform/mac.ts +21 -21
  174. package/src/utils/platform/os.ts +64 -64
  175. package/src/utils/platform/port.ts +10 -10
  176. package/src/utils/progress-bar.ts +38 -38
  177. package/src/utils/prompt/select.ts +59 -59
  178. package/src/utils/reporter/agree.ts +20 -20
  179. package/src/utils/reporter/download.ts +26 -26
  180. package/src/utils/reporter/index.ts +3 -3
  181. package/src/utils/reporter/usage.ts +20 -20
  182. package/src/utils/store/auth.ts +49 -49
  183. package/src/utils/store/common.ts +8 -8
  184. package/src/utils/store/db.ts +68 -68
  185. package/src/utils/store/index.ts +4 -4
  186. package/src/utils/store/usage.ts +12 -12
  187. package/src/utils/tcbrApi/callTcbrApi.ts +1 -1
  188. package/src/utils/template.ts +170 -170
  189. package/src/utils/tools/encoding.ts +8 -8
  190. package/src/utils/tools/index.ts +4 -4
  191. package/src/utils/tools/object.ts +33 -33
  192. package/src/utils/tools/time.ts +38 -38
  193. package/src/utils/tools/uid.ts +19 -19
  194. package/templates/html/loginFail.html +90 -90
  195. package/templates/html/loginSuccess.html +86 -86
  196. package/templates/server/node/_gitignore +54 -54
  197. package/templates/server/node/cloudbaserc.json +10 -10
  198. package/templates/server/node/index.js +5 -5
  199. package/templates/server/node/package.json +9 -9
  200. package/tsconfig.json +19 -19
  201. package/tsconfig.test.json +13 -13
  202. package/.vscode/settings.json +0 -3
  203. package/lib/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.js +0 -268
  204. package/lib/utils/tcbrApi/tcbr-cloud-api/error.js +0 -17
  205. package/lib/utils/tcbrApi/tcbr-cloud-api/index.js +0 -17
  206. package/lib/utils/tcbrApi/tcbr-cloud-api/request.js +0 -40
  207. package/lib/utils/tcbrApi/tcbr-cloud-api-request.js +0 -61
  208. package/src/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.ts +0 -363
  209. package/src/utils/tcbrApi/tcbr-cloud-api/error.ts +0 -30
  210. package/src/utils/tcbrApi/tcbr-cloud-api/index.ts +0 -1
  211. package/src/utils/tcbrApi/tcbr-cloud-api/request.ts +0 -28
  212. package/src/utils/tcbrApi/tcbr-cloud-api-request.ts +0 -66
  213. package/types/utils/tcbrApi/tcbr-cloud-api/cloud-api-service.d.ts +0 -51
  214. package/types/utils/tcbrApi/tcbr-cloud-api/error.d.ts +0 -20
  215. package/types/utils/tcbrApi/tcbr-cloud-api/index.d.ts +0 -1
  216. package/types/utils/tcbrApi/tcbr-cloud-api/request.d.ts +0 -4
  217. package/types/utils/tcbrApi/tcbr-cloud-api-request.d.ts +0 -9
@@ -1,105 +1,105 @@
1
- import inquirer from 'inquirer'
2
- import { Command, ICommand } from '../common'
3
- import { CloudBaseError } from '../../error'
4
- import { InjectParams, CmdContext, ArgsParams } from '../../decorators'
5
- import { batchDeleteTriggers, deleteFunctionTrigger } from '../../function'
6
-
7
- @ICommand()
8
- export class DeleteTrigger extends Command {
9
- get options() {
10
- return {
11
- cmd: 'fn',
12
- childCmd: { cmd: 'trigger', desc: '函数触发器操作' },
13
- childSubCmd: 'delete [functionName] [triggerName]',
14
- deprecateCmd: 'functions:trigger:delete [functionName] [triggerName]',
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 {
28
- envId,
29
- config: { functions }
30
- } = ctx
31
-
32
- const name = params?.[0]
33
- const triggerName = params?.[1]
34
-
35
- let isBatchDeleteTriggers
36
- let isBatchDeleteFunctionTriggers = false
37
-
38
- // 不指定云函数名称,删除配置文件中所有函数的所有触发器
39
- if (!name) {
40
- const answer = await inquirer.prompt({
41
- type: 'confirm',
42
- name: 'isBatch',
43
- message: '无云函数名称,是否需要删除配置文件中的【全部云函数】的全部触发器?',
44
- default: false
45
- })
46
-
47
- // 危险操作,再次确认
48
- if (answer.isBatch) {
49
- const { reConfirm } = await inquirer.prompt({
50
- type: 'confirm',
51
- name: 'reConfirm',
52
- message: '确定要删除配置文件中的【全部云函数】的全部触发器?',
53
- default: false
54
- })
55
- isBatchDeleteTriggers = reConfirm
56
- }
57
-
58
- if (!isBatchDeleteTriggers) {
59
- throw new CloudBaseError('请指定云函数名称以及触发器名称!')
60
- }
61
- }
62
-
63
- if (isBatchDeleteTriggers) {
64
- return batchDeleteTriggers({
65
- envId,
66
- functions
67
- })
68
- }
69
-
70
- // 指定了函数名称,但没有指定触发器名称,删除此函数的所有触发器
71
- if (!triggerName && name) {
72
- const { isBatch } = await inquirer.prompt({
73
- type: 'confirm',
74
- name: 'isBatch',
75
- message: '没有指定触发器名称,是否需要此云函数的全部触发器?',
76
- default: false
77
- })
78
-
79
- isBatchDeleteFunctionTriggers = isBatch
80
-
81
- if (!isBatchDeleteFunctionTriggers) {
82
- throw new CloudBaseError('请指定云函数名称以及触发器名称!')
83
- }
84
- }
85
-
86
- if (isBatchDeleteFunctionTriggers) {
87
- const func = functions.find((item) => item.name === name)
88
- return batchDeleteTriggers({
89
- envId,
90
- functions: [func]
91
- })
92
- }
93
-
94
- if (!triggerName) {
95
- throw new CloudBaseError('触发器名称不能为空')
96
- }
97
-
98
- // 删除指定函数的单个触发器
99
- await deleteFunctionTrigger({
100
- envId,
101
- functionName: name,
102
- triggerName
103
- })
104
- }
105
- }
1
+ import inquirer from 'inquirer'
2
+ import { Command, ICommand } from '../common'
3
+ import { CloudBaseError } from '../../error'
4
+ import { InjectParams, CmdContext, ArgsParams } from '../../decorators'
5
+ import { batchDeleteTriggers, deleteFunctionTrigger } from '../../function'
6
+
7
+ @ICommand()
8
+ export class DeleteTrigger extends Command {
9
+ get options() {
10
+ return {
11
+ cmd: 'fn',
12
+ childCmd: { cmd: 'trigger', desc: '函数触发器操作' },
13
+ childSubCmd: 'delete [functionName] [triggerName]',
14
+ deprecateCmd: 'functions:trigger:delete [functionName] [triggerName]',
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 {
28
+ envId,
29
+ config: { functions }
30
+ } = ctx
31
+
32
+ const name = params?.[0]
33
+ const triggerName = params?.[1]
34
+
35
+ let isBatchDeleteTriggers
36
+ let isBatchDeleteFunctionTriggers = false
37
+
38
+ // 不指定云函数名称,删除配置文件中所有函数的所有触发器
39
+ if (!name) {
40
+ const answer = await inquirer.prompt({
41
+ type: 'confirm',
42
+ name: 'isBatch',
43
+ message: '无云函数名称,是否需要删除配置文件中的【全部云函数】的全部触发器?',
44
+ default: false
45
+ })
46
+
47
+ // 危险操作,再次确认
48
+ if (answer.isBatch) {
49
+ const { reConfirm } = await inquirer.prompt({
50
+ type: 'confirm',
51
+ name: 'reConfirm',
52
+ message: '确定要删除配置文件中的【全部云函数】的全部触发器?',
53
+ default: false
54
+ })
55
+ isBatchDeleteTriggers = reConfirm
56
+ }
57
+
58
+ if (!isBatchDeleteTriggers) {
59
+ throw new CloudBaseError('请指定云函数名称以及触发器名称!')
60
+ }
61
+ }
62
+
63
+ if (isBatchDeleteTriggers) {
64
+ return batchDeleteTriggers({
65
+ envId,
66
+ functions
67
+ })
68
+ }
69
+
70
+ // 指定了函数名称,但没有指定触发器名称,删除此函数的所有触发器
71
+ if (!triggerName && name) {
72
+ const { isBatch } = await inquirer.prompt({
73
+ type: 'confirm',
74
+ name: 'isBatch',
75
+ message: '没有指定触发器名称,是否需要此云函数的全部触发器?',
76
+ default: false
77
+ })
78
+
79
+ isBatchDeleteFunctionTriggers = isBatch
80
+
81
+ if (!isBatchDeleteFunctionTriggers) {
82
+ throw new CloudBaseError('请指定云函数名称以及触发器名称!')
83
+ }
84
+ }
85
+
86
+ if (isBatchDeleteFunctionTriggers) {
87
+ const func = functions.find((item) => item.name === name)
88
+ return batchDeleteTriggers({
89
+ envId,
90
+ functions: [func]
91
+ })
92
+ }
93
+
94
+ if (!triggerName) {
95
+ throw new CloudBaseError('触发器名称不能为空')
96
+ }
97
+
98
+ // 删除指定函数的单个触发器
99
+ await deleteFunctionTrigger({
100
+ envId,
101
+ functionName: name,
102
+ triggerName
103
+ })
104
+ }
105
+ }
@@ -1,2 +1,2 @@
1
- export * from './publish'
1
+ export * from './publish'
2
2
  export * from './list'
@@ -1,73 +1,73 @@
1
-
2
- import { Command, ICommand } from '../../common'
3
- import { CloudBaseError } from '../../../error'
4
- import { loadingFactory, printHorizontalTable } from '../../../utils'
5
- import { listFunctionVersions } from '../../../function'
6
- import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
7
- import { StatusMap } from '../../../constant'
8
-
9
-
10
- @ICommand()
11
- export class ListFunctionVersion extends Command {
12
- get options() {
13
- return {
14
- cmd: 'fn',
15
- childCmd: 'list-function-versions <name>',
16
- options: [
17
- {
18
- flags: '-e, --envId <envId>',
19
- desc: '环境 Id'
20
- },
21
- { flags: '-l, --limit <limit>', desc: '返回数据长度,默认值为 20' },
22
- {
23
- flags: '-o, --offset <offset>',
24
- desc: '数据偏移量,默认值为 0'
25
- }
26
- ],
27
- desc: '展示函数版本列表'
28
- }
29
- }
30
-
31
- @InjectParams()
32
- async execute(@CmdContext() ctx, @ArgsParams() params, @ArgsOptions() options) {
33
- const name = params?.[0]
34
- let { limit = 20, offset = 0 } = options
35
- limit = Number(limit)
36
- offset = Number(offset)
37
- if (!Number.isInteger(limit) || !Number.isInteger(offset)) {
38
- throw new CloudBaseError('limit 和 offset 必须为整数')
39
- }
40
-
41
- if (limit < 0 || offset < 0) {
42
- throw new CloudBaseError('limit 和 offset 必须为大于 0 的整数')
43
- }
44
-
45
- const {
46
- envId
47
- } = ctx
48
-
49
- const loading = loadingFactory()
50
- loading.start(`拉取函数 [${name}] 版本列表中...`)
51
-
52
- const res = await listFunctionVersions({
53
- envId,
54
- functionName: name,
55
- offset,
56
- limit
57
- })
58
-
59
- loading.stop()
60
-
61
- const head: string[] = ['版本', '描述', '创建时间', '修改时间', '状态']
62
-
63
- const tableData = res.Versions.map((item) => [
64
- item.Version,
65
- item.Description,
66
- item.AddTime,
67
- item.ModTime,
68
- StatusMap[item.Status]
69
- ])
70
-
71
- printHorizontalTable(head, tableData)
72
- }
73
- }
1
+
2
+ import { Command, ICommand } from '../../common'
3
+ import { CloudBaseError } from '../../../error'
4
+ import { loadingFactory, printHorizontalTable } from '../../../utils'
5
+ import { listFunctionVersions } from '../../../function'
6
+ import { InjectParams, CmdContext, ArgsParams, ArgsOptions } from '../../../decorators'
7
+ import { StatusMap } from '../../../constant'
8
+
9
+
10
+ @ICommand()
11
+ export class ListFunctionVersion extends Command {
12
+ get options() {
13
+ return {
14
+ cmd: 'fn',
15
+ childCmd: 'list-function-versions <name>',
16
+ options: [
17
+ {
18
+ flags: '-e, --envId <envId>',
19
+ desc: '环境 Id'
20
+ },
21
+ { flags: '-l, --limit <limit>', desc: '返回数据长度,默认值为 20' },
22
+ {
23
+ flags: '-o, --offset <offset>',
24
+ desc: '数据偏移量,默认值为 0'
25
+ }
26
+ ],
27
+ desc: '展示函数版本列表'
28
+ }
29
+ }
30
+
31
+ @InjectParams()
32
+ async execute(@CmdContext() ctx, @ArgsParams() params, @ArgsOptions() options) {
33
+ const name = params?.[0]
34
+ let { limit = 20, offset = 0 } = options
35
+ limit = Number(limit)
36
+ offset = Number(offset)
37
+ if (!Number.isInteger(limit) || !Number.isInteger(offset)) {
38
+ throw new CloudBaseError('limit 和 offset 必须为整数')
39
+ }
40
+
41
+ if (limit < 0 || offset < 0) {
42
+ throw new CloudBaseError('limit 和 offset 必须为大于 0 的整数')
43
+ }
44
+
45
+ const {
46
+ envId
47
+ } = ctx
48
+
49
+ const loading = loadingFactory()
50
+ loading.start(`拉取函数 [${name}] 版本列表中...`)
51
+
52
+ const res = await listFunctionVersions({
53
+ envId,
54
+ functionName: name,
55
+ offset,
56
+ limit
57
+ })
58
+
59
+ loading.stop()
60
+
61
+ const head: string[] = ['版本', '描述', '创建时间', '修改时间', '状态']
62
+
63
+ const tableData = res.Versions.map((item) => [
64
+ item.Version,
65
+ item.Description,
66
+ item.AddTime,
67
+ item.ModTime,
68
+ StatusMap[item.Status]
69
+ ])
70
+
71
+ printHorizontalTable(head, tableData)
72
+ }
73
+ }
@@ -1,43 +1,43 @@
1
-
2
- import { Command, ICommand } from '../../common'
3
- import { CloudBaseError } from '../../../error'
4
- import { loadingFactory } from '../../../utils'
5
- import { publishVersion } from '../../../function'
6
- import { InjectParams, CmdContext, ArgsParams } from '../../../decorators'
7
-
8
- @ICommand()
9
- export class PublishFunctionVersion extends Command {
10
- get options() {
11
- return {
12
- cmd: 'fn',
13
- childCmd: 'publish-version <name> [description]',
14
- options: [
15
- {
16
- flags: '-e, --envId <envId>',
17
- desc: '环境 Id'
18
- }
19
- ],
20
- desc: '发布函数新版本'
21
- }
22
- }
23
-
24
- @InjectParams()
25
- async execute(@CmdContext() ctx, @ArgsParams() params) {
26
- const name = params?.[0]
27
- const description = params?.[1]
28
- const {
29
- envId
30
- } = ctx
31
-
32
- const loading = loadingFactory()
33
- loading.start(`发布函数 [${name}] 新版本中...`)
34
-
35
- await publishVersion({
36
- envId,
37
- functionName: name,
38
- description
39
- })
40
-
41
- loading.succeed(`发布函数 [${name}] 新版本成功!`)
42
- }
43
- }
1
+
2
+ import { Command, ICommand } from '../../common'
3
+ import { CloudBaseError } from '../../../error'
4
+ import { loadingFactory } from '../../../utils'
5
+ import { publishVersion } from '../../../function'
6
+ import { InjectParams, CmdContext, ArgsParams } from '../../../decorators'
7
+
8
+ @ICommand()
9
+ export class PublishFunctionVersion extends Command {
10
+ get options() {
11
+ return {
12
+ cmd: 'fn',
13
+ childCmd: 'publish-version <name> [description]',
14
+ options: [
15
+ {
16
+ flags: '-e, --envId <envId>',
17
+ desc: '环境 Id'
18
+ }
19
+ ],
20
+ desc: '发布函数新版本'
21
+ }
22
+ }
23
+
24
+ @InjectParams()
25
+ async execute(@CmdContext() ctx, @ArgsParams() params) {
26
+ const name = params?.[0]
27
+ const description = params?.[1]
28
+ const {
29
+ envId
30
+ } = ctx
31
+
32
+ const loading = loadingFactory()
33
+ loading.start(`发布函数 [${name}] 新版本中...`)
34
+
35
+ await publishVersion({
36
+ envId,
37
+ functionName: name,
38
+ description
39
+ })
40
+
41
+ loading.succeed(`发布函数 [${name}] 新版本成功!`)
42
+ }
43
+ }
@@ -1,109 +1,109 @@
1
- import { prompt } from 'enquirer'
2
- import { Command, ICommand } from '../common'
3
- import { CloudBaseError } from '../../error'
4
- import { createGateway, queryGatewayDomain } from '../../gateway'
5
- import { listFunction } from '../../function'
6
- import { assertTruthy } from '../../utils/validator'
7
- import { loadingFactory, genClickableLink } from '../../utils'
8
- import { InjectParams, EnvId, ArgsOptions } from '../../decorators'
9
-
10
- @ICommand()
11
- export class CreateService extends Command {
12
- get options() {
13
- return {
14
- cmd: 'service',
15
- childCmd: 'create',
16
- deprecateCmd: 'service:create',
17
- options: [
18
- {
19
- flags: '-e, --envId <envId>',
20
- desc: '环境 Id'
21
- },
22
- {
23
- flags: '-p, --service-path <servicePath>',
24
- desc: 'HTTP 访问服务路径,如 api'
25
- },
26
- {
27
- flags: '-f, --function <name>',
28
- desc: 'HTTP 访问服务路径绑定的云函数名称'
29
- }
30
- ],
31
- desc: '创建 HTTP 访问服务'
32
- }
33
- }
34
-
35
- @InjectParams()
36
- async execute(@EnvId() envId, @ArgsOptions() options) {
37
- let { function: functionName, servicePath } = options
38
- const loading = loadingFactory()
39
-
40
- if (!servicePath || !functionName) {
41
- loading.start('数据加载中...')
42
- const functions = await listFunction({
43
- envId,
44
- limit: 100,
45
- offset: 0
46
- })
47
-
48
- loading.stop()
49
-
50
- if (!functions.length) {
51
- throw new CloudBaseError('当前环境下不存在可用的云函数,请先创建云函数!')
52
- }
53
-
54
- let { name } = await prompt<any>({
55
- type: 'select',
56
- name: 'name',
57
- message: '请选择创建HTTP 访问服务的云函数',
58
- choices: functions.map((item) => item.FunctionName)
59
- })
60
-
61
- let { path } = await prompt<any>({
62
- type: 'input',
63
- name: 'path',
64
- message: '请输入HTTP 访问服务路径'
65
- })
66
-
67
- functionName = name
68
- servicePath = path
69
- }
70
-
71
- assertTruthy(servicePath, '请指定需要创建的HTTP 访问服务路径!')
72
-
73
- // 创建云函数网关
74
- loading.start(`[${functionName}] HTTP 访问服务创建中...`)
75
-
76
- // 补充 / 符号
77
- servicePath = servicePath[0] === '/' ? servicePath : `/${servicePath}`
78
-
79
- try {
80
- // step1: 判断云函数是否存在
81
- const functionList = await listFunction({
82
- envId,
83
- limit: 100
84
- })
85
- const isExisted = functionList.filter((item) => item.FunctionName === functionName)
86
- if (isExisted.length <= 0) {
87
- throw new CloudBaseError(`[${functionName}] 云函数不存在!`)
88
- }
89
-
90
- // step2: 创建云函数网关
91
- await createGateway({
92
- envId,
93
- path: servicePath,
94
- name: functionName
95
- })
96
-
97
- // 查询访问域名
98
- const res = await queryGatewayDomain({ envId })
99
- const link = genClickableLink(`https://${res.DefaultDomain}${servicePath}`)
100
- loading.succeed(`HTTP 访问服务创建成功!\n点击访问> ${link}`)
101
- } catch (e) {
102
- loading.stop()
103
- if (e.code === 'InvalidParameter.APICreated') {
104
- throw new CloudBaseError('路径已存在!')
105
- }
106
- throw e
107
- }
108
- }
109
- }
1
+ import { prompt } from 'enquirer'
2
+ import { Command, ICommand } from '../common'
3
+ import { CloudBaseError } from '../../error'
4
+ import { createGateway, queryGatewayDomain } from '../../gateway'
5
+ import { listFunction } from '../../function'
6
+ import { assertTruthy } from '../../utils/validator'
7
+ import { loadingFactory, genClickableLink } from '../../utils'
8
+ import { InjectParams, EnvId, ArgsOptions } from '../../decorators'
9
+
10
+ @ICommand()
11
+ export class CreateService extends Command {
12
+ get options() {
13
+ return {
14
+ cmd: 'service',
15
+ childCmd: 'create',
16
+ deprecateCmd: 'service:create',
17
+ options: [
18
+ {
19
+ flags: '-e, --envId <envId>',
20
+ desc: '环境 Id'
21
+ },
22
+ {
23
+ flags: '-p, --service-path <servicePath>',
24
+ desc: 'HTTP 访问服务路径,如 api'
25
+ },
26
+ {
27
+ flags: '-f, --function <name>',
28
+ desc: 'HTTP 访问服务路径绑定的云函数名称'
29
+ }
30
+ ],
31
+ desc: '创建 HTTP 访问服务'
32
+ }
33
+ }
34
+
35
+ @InjectParams()
36
+ async execute(@EnvId() envId, @ArgsOptions() options) {
37
+ let { function: functionName, servicePath } = options
38
+ const loading = loadingFactory()
39
+
40
+ if (!servicePath || !functionName) {
41
+ loading.start('数据加载中...')
42
+ const functions = await listFunction({
43
+ envId,
44
+ limit: 100,
45
+ offset: 0
46
+ })
47
+
48
+ loading.stop()
49
+
50
+ if (!functions.length) {
51
+ throw new CloudBaseError('当前环境下不存在可用的云函数,请先创建云函数!')
52
+ }
53
+
54
+ let { name } = await prompt<any>({
55
+ type: 'select',
56
+ name: 'name',
57
+ message: '请选择创建HTTP 访问服务的云函数',
58
+ choices: functions.map((item) => item.FunctionName)
59
+ })
60
+
61
+ let { path } = await prompt<any>({
62
+ type: 'input',
63
+ name: 'path',
64
+ message: '请输入HTTP 访问服务路径'
65
+ })
66
+
67
+ functionName = name
68
+ servicePath = path
69
+ }
70
+
71
+ assertTruthy(servicePath, '请指定需要创建的HTTP 访问服务路径!')
72
+
73
+ // 创建云函数网关
74
+ loading.start(`[${functionName}] HTTP 访问服务创建中...`)
75
+
76
+ // 补充 / 符号
77
+ servicePath = servicePath[0] === '/' ? servicePath : `/${servicePath}`
78
+
79
+ try {
80
+ // step1: 判断云函数是否存在
81
+ const functionList = await listFunction({
82
+ envId,
83
+ limit: 100
84
+ })
85
+ const isExisted = functionList.filter((item) => item.FunctionName === functionName)
86
+ if (isExisted.length <= 0) {
87
+ throw new CloudBaseError(`[${functionName}] 云函数不存在!`)
88
+ }
89
+
90
+ // step2: 创建云函数网关
91
+ await createGateway({
92
+ envId,
93
+ path: servicePath,
94
+ name: functionName
95
+ })
96
+
97
+ // 查询访问域名
98
+ const res = await queryGatewayDomain({ envId })
99
+ const link = genClickableLink(`https://${res.DefaultDomain}${servicePath}`)
100
+ loading.succeed(`HTTP 访问服务创建成功!\n点击访问> ${link}`)
101
+ } catch (e) {
102
+ loading.stop()
103
+ if (e.code === 'InvalidParameter.APICreated') {
104
+ throw new CloudBaseError('路径已存在!')
105
+ }
106
+ throw e
107
+ }
108
+ }
109
+ }