@cloudbase/cli 2.0.12 → 2.1.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 (277) hide show
  1. package/.history/.gitignore_20220624162613 +84 -0
  2. package/.history/.gitignore_20220627114054 +86 -0
  3. package/.history/package_20220711204706.json +88 -0
  4. package/.history/package_20220711204818.json +88 -0
  5. package/.history/package_20220712151717.json +88 -0
  6. package/.history/package_20220712212537.json +88 -0
  7. package/.history/package_20220722205058.json +88 -0
  8. package/.history/package_20220726110155.json +88 -0
  9. package/.history/package_20220726110201.json +88 -0
  10. package/.history/package_20220728110905.json +88 -0
  11. package/.history/package_20220728110936.json +88 -0
  12. package/.history/package_20220728111531.json +89 -0
  13. package/.history/package_20220728111810.json +89 -0
  14. package/.history/src/commands/lowcode/app_20220728111717.ts +52 -0
  15. package/{src/commands/lowcode/app.ts → .history/src/commands/lowcode/app_20220728112031.ts} +2 -2
  16. package/{src/index.ts → .history/src/index_20220624162613.ts} +0 -0
  17. package/.history/src/index_20220627113609.ts +15 -0
  18. package/.history/src/index_20220627114102.ts +13 -0
  19. package/.vscode/launch.json +10 -0
  20. package/bin/cloudbase.js +0 -0
  21. package/bin/tcb.js +5 -5
  22. package/lib/commands/account/login.js +3 -6
  23. package/lib/commands/env/index.js +0 -1
  24. package/lib/commands/lowcode/app.js +1 -1
  25. package/lib/commands/run/index.js +0 -1
  26. package/lib/commands/run/service/deploy.js +6 -1
  27. package/lib/commands/run/service/index.js +0 -1
  28. package/lib/commands/run/service/update.js +4 -0
  29. package/lib/constant.js +15 -1
  30. package/lib/env/index.js +1 -11
  31. package/lib/run/index.js +0 -1
  32. package/lib/run/service/common.js +20 -7
  33. package/lib/run/service/config.js +2 -3
  34. package/lib/run/service/deployPackage.js +2 -9
  35. package/lib/run/service/index.js +0 -1
  36. package/lib/run/service/update.js +1 -1
  37. package/lib/utils/debug-logger.js +30 -0
  38. package/lib/utils/net/cloud-api-request.js +7 -1
  39. package/lib/utils/net/http-request.js +16 -5
  40. package/package.json +2 -2
  41. package/types/commands/env/index.d.ts +0 -1
  42. package/types/commands/run/index.d.ts +0 -1
  43. package/types/commands/run/service/index.d.ts +0 -1
  44. package/types/env/index.d.ts +0 -6
  45. package/types/run/index.d.ts +0 -1
  46. package/types/run/service/common.d.ts +8 -1
  47. package/types/run/service/index.d.ts +0 -1
  48. package/types/types.d.ts +4 -0
  49. package/types/utils/debug-logger.d.ts +1 -0
  50. package/types/utils/net/http-request.d.ts +6 -2
  51. package/lib/commands/env/create.js +0 -115
  52. package/lib/commands/run/create.js +0 -162
  53. package/lib/commands/run/service/create.js +0 -144
  54. package/lib/run/create.js +0 -19
  55. package/lib/run/service/create.js +0 -67
  56. package/src/auth/index.ts +0 -2
  57. package/src/auth/login.ts +0 -91
  58. package/src/auth/logout.ts +0 -7
  59. package/src/commands/account/index.ts +0 -2
  60. package/src/commands/account/login.ts +0 -192
  61. package/src/commands/account/logout.ts +0 -24
  62. package/src/commands/common.ts +0 -246
  63. package/src/commands/env/base.ts +0 -90
  64. package/src/commands/env/create.ts +0 -92
  65. package/src/commands/env/domain.ts +0 -186
  66. package/src/commands/env/index.ts +0 -4
  67. package/src/commands/env/login.ts +0 -235
  68. package/src/commands/framework/index.ts +0 -124
  69. package/src/commands/functions/alias/getRoute.ts +0 -76
  70. package/src/commands/functions/alias/index.ts +0 -2
  71. package/src/commands/functions/alias/setRoute.ts +0 -82
  72. package/src/commands/functions/code-download.ts +0 -100
  73. package/src/commands/functions/code-update.ts +0 -62
  74. package/src/commands/functions/concurrency/delete.ts +0 -45
  75. package/src/commands/functions/concurrency/index.ts +0 -3
  76. package/src/commands/functions/concurrency/list.ts +0 -58
  77. package/src/commands/functions/concurrency/set.ts +0 -47
  78. package/src/commands/functions/config-update.ts +0 -76
  79. package/src/commands/functions/copy.ts +0 -62
  80. package/src/commands/functions/delete.ts +0 -79
  81. package/src/commands/functions/deploy.ts +0 -293
  82. package/src/commands/functions/detail.ts +0 -138
  83. package/src/commands/functions/index.ts +0 -16
  84. package/src/commands/functions/invoke.ts +0 -121
  85. package/src/commands/functions/layer/bind.ts +0 -182
  86. package/src/commands/functions/layer/common.ts +0 -8
  87. package/src/commands/functions/layer/create.ts +0 -49
  88. package/src/commands/functions/layer/delete.ts +0 -73
  89. package/src/commands/functions/layer/download.ts +0 -92
  90. package/src/commands/functions/layer/index.ts +0 -7
  91. package/src/commands/functions/layer/list.ts +0 -94
  92. package/src/commands/functions/layer/sort.ts +0 -76
  93. package/src/commands/functions/list.ts +0 -68
  94. package/src/commands/functions/log.ts +0 -148
  95. package/src/commands/functions/run.ts +0 -249
  96. package/src/commands/functions/trigger-create.ts +0 -79
  97. package/src/commands/functions/trigger-delete.ts +0 -105
  98. package/src/commands/functions/version/index.ts +0 -2
  99. package/src/commands/functions/version/list.ts +0 -73
  100. package/src/commands/functions/version/publish.ts +0 -43
  101. package/src/commands/gateway/create.ts +0 -109
  102. package/src/commands/gateway/delete.ts +0 -81
  103. package/src/commands/gateway/domain.ts +0 -159
  104. package/src/commands/gateway/index.ts +0 -5
  105. package/src/commands/gateway/list.ts +0 -76
  106. package/src/commands/gateway/switch.ts +0 -107
  107. package/src/commands/helpers/index.ts +0 -3
  108. package/src/commands/helpers/init.ts +0 -431
  109. package/src/commands/helpers/new.ts +0 -117
  110. package/src/commands/helpers/open.ts +0 -67
  111. package/src/commands/hosting/hosting.ts +0 -360
  112. package/src/commands/hosting/index.ts +0 -1
  113. package/src/commands/index.ts +0 -13
  114. package/src/commands/lowcode/comps.ts +0 -325
  115. package/src/commands/lowcode/index.ts +0 -2
  116. package/src/commands/lowcode/utils.ts +0 -25
  117. package/src/commands/run/create.ts +0 -153
  118. package/src/commands/run/delete.ts +0 -77
  119. package/src/commands/run/image/common.ts +0 -8
  120. package/src/commands/run/image/delete.ts +0 -68
  121. package/src/commands/run/image/download.ts +0 -68
  122. package/src/commands/run/image/index.ts +0 -5
  123. package/src/commands/run/image/list.ts +0 -84
  124. package/src/commands/run/image/upload.ts +0 -76
  125. package/src/commands/run/index.ts +0 -7
  126. package/src/commands/run/list.ts +0 -83
  127. package/src/commands/run/service/config.ts +0 -81
  128. package/src/commands/run/service/create.ts +0 -122
  129. package/src/commands/run/service/deploy.ts +0 -125
  130. package/src/commands/run/service/index.ts +0 -5
  131. package/src/commands/run/service/list.ts +0 -94
  132. package/src/commands/run/service/update.ts +0 -108
  133. package/src/commands/run/standalonegateway/common.ts +0 -8
  134. package/src/commands/run/standalonegateway/create.ts +0 -85
  135. package/src/commands/run/standalonegateway/destroy.ts +0 -59
  136. package/src/commands/run/standalonegateway/index.ts +0 -5
  137. package/src/commands/run/standalonegateway/list.ts +0 -53
  138. package/src/commands/run/standalonegateway/package.ts +0 -62
  139. package/src/commands/run/standalonegateway/turn.ts +0 -63
  140. package/src/commands/run/version/common.ts +0 -8
  141. package/src/commands/run/version/create.ts +0 -369
  142. package/src/commands/run/version/delete.ts +0 -64
  143. package/src/commands/run/version/index.ts +0 -5
  144. package/src/commands/run/version/list.ts +0 -91
  145. package/src/commands/run/version/modify.ts +0 -137
  146. package/src/commands/run/version/update.ts +0 -398
  147. package/src/commands/smart.ts +0 -132
  148. package/src/commands/storage/index.ts +0 -1
  149. package/src/commands/storage/storage.ts +0 -464
  150. package/src/commands/third/index.ts +0 -1
  151. package/src/commands/third/thirdAttach.ts +0 -49
  152. package/src/completion/index.ts +0 -13
  153. package/src/constant.ts +0 -154
  154. package/src/decorators/captureError.ts +0 -25
  155. package/src/decorators/constants.ts +0 -12
  156. package/src/decorators/deprecate.ts +0 -25
  157. package/src/decorators/guard.ts +0 -42
  158. package/src/decorators/index.ts +0 -7
  159. package/src/decorators/injectParams.ts +0 -54
  160. package/src/decorators/params/common.ts +0 -28
  161. package/src/decorators/params/index.ts +0 -35
  162. package/src/env/domain.ts +0 -33
  163. package/src/env/index.ts +0 -63
  164. package/src/env/login.ts +0 -80
  165. package/src/error.ts +0 -36
  166. package/src/function/alias.ts +0 -43
  167. package/src/function/base.ts +0 -253
  168. package/src/function/code.ts +0 -55
  169. package/src/function/concurrency.ts +0 -57
  170. package/src/function/create.ts +0 -78
  171. package/src/function/delete.ts +0 -42
  172. package/src/function/index.ts +0 -11
  173. package/src/function/layer/attach.ts +0 -68
  174. package/src/function/layer/create.ts +0 -63
  175. package/src/function/layer/delete.ts +0 -21
  176. package/src/function/layer/download.ts +0 -54
  177. package/src/function/layer/index.ts +0 -7
  178. package/src/function/layer/list.ts +0 -32
  179. package/src/function/layer/sort.ts +0 -24
  180. package/src/function/trigger.ts +0 -97
  181. package/src/function/update.ts +0 -35
  182. package/src/function/version.ts +0 -39
  183. package/src/function/vpc.ts +0 -22
  184. package/src/gateway/index.ts +0 -137
  185. package/src/help.ts +0 -50
  186. package/src/hosting.ts +0 -212
  187. package/src/logger.ts +0 -17
  188. package/src/run/create.ts +0 -23
  189. package/src/run/delete.ts +0 -15
  190. package/src/run/image/build.ts +0 -36
  191. package/src/run/image/delete.ts +0 -14
  192. package/src/run/image/index.ts +0 -4
  193. package/src/run/image/info.ts +0 -27
  194. package/src/run/image/list.ts +0 -23
  195. package/src/run/index.ts +0 -8
  196. package/src/run/list.ts +0 -30
  197. package/src/run/repo.ts +0 -25
  198. package/src/run/service/common.ts +0 -311
  199. package/src/run/service/config.ts +0 -77
  200. package/src/run/service/create.ts +0 -52
  201. package/src/run/service/deployPackage.ts +0 -65
  202. package/src/run/service/index.ts +0 -7
  203. package/src/run/service/list.ts +0 -29
  204. package/src/run/service/showLogs.ts +0 -98
  205. package/src/run/service/update.ts +0 -82
  206. package/src/run/standalonegateway/create.ts +0 -24
  207. package/src/run/standalonegateway/destroy.ts +0 -19
  208. package/src/run/standalonegateway/index.ts +0 -5
  209. package/src/run/standalonegateway/list.ts +0 -74
  210. package/src/run/standalonegateway/package/index.ts +0 -1
  211. package/src/run/standalonegateway/package/list.ts +0 -24
  212. package/src/run/standalonegateway/turn/index.ts +0 -2
  213. package/src/run/standalonegateway/turn/off.ts +0 -19
  214. package/src/run/standalonegateway/turn/on.ts +0 -19
  215. package/src/run/version/create.ts +0 -68
  216. package/src/run/version/delete.ts +0 -16
  217. package/src/run/version/index.ts +0 -6
  218. package/src/run/version/list.ts +0 -17
  219. package/src/run/version/modify.ts +0 -17
  220. package/src/run/version/repo.ts +0 -28
  221. package/src/run/version/update.ts +0 -59
  222. package/src/storage.ts +0 -114
  223. package/src/third/index.ts +0 -13
  224. package/src/types.ts +0 -672
  225. package/src/utils/auth.ts +0 -15
  226. package/src/utils/checkTcbrEnv.ts +0 -69
  227. package/src/utils/cli-table.ts +0 -23
  228. package/src/utils/commonParamsCheck.ts +0 -65
  229. package/src/utils/config.ts +0 -39
  230. package/src/utils/env.ts +0 -244
  231. package/src/utils/fs/del.ts +0 -5
  232. package/src/utils/fs/index.ts +0 -71
  233. package/src/utils/function-packer.ts +0 -97
  234. package/src/utils/index.ts +0 -25
  235. package/src/utils/log.ts +0 -82
  236. package/src/utils/net/cloud-api-request.ts +0 -62
  237. package/src/utils/net/credential.ts +0 -53
  238. package/src/utils/net/http-request.ts +0 -84
  239. package/src/utils/net/index.ts +0 -5
  240. package/src/utils/net/manager-service.ts +0 -36
  241. package/src/utils/net/proxy.ts +0 -6
  242. package/src/utils/notice.ts +0 -28
  243. package/src/utils/output/highlight.ts +0 -5
  244. package/src/utils/output/index.ts +0 -3
  245. package/src/utils/output/link.ts +0 -10
  246. package/src/utils/output/loading.ts +0 -82
  247. package/src/utils/parallel.ts +0 -82
  248. package/src/utils/platform/index.ts +0 -3
  249. package/src/utils/platform/mac.ts +0 -21
  250. package/src/utils/platform/os.ts +0 -64
  251. package/src/utils/platform/port.ts +0 -10
  252. package/src/utils/progress-bar.ts +0 -38
  253. package/src/utils/prompt/index.ts +0 -1
  254. package/src/utils/prompt/select.ts +0 -60
  255. package/src/utils/reporter/agree.ts +0 -20
  256. package/src/utils/reporter/download.ts +0 -26
  257. package/src/utils/reporter/index.ts +0 -3
  258. package/src/utils/reporter/usage.ts +0 -20
  259. package/src/utils/store/auth.ts +0 -49
  260. package/src/utils/store/common.ts +0 -8
  261. package/src/utils/store/db.ts +0 -68
  262. package/src/utils/store/index.ts +0 -5
  263. package/src/utils/store/usage.ts +0 -12
  264. package/src/utils/tcbrApi/callTcbrApi.ts +0 -28
  265. package/src/utils/tcbrApi/index.ts +0 -1
  266. package/src/utils/template.ts +0 -170
  267. package/src/utils/tools/encoding.ts +0 -8
  268. package/src/utils/tools/index.ts +0 -4
  269. package/src/utils/tools/object.ts +0 -33
  270. package/src/utils/tools/time.ts +0 -38
  271. package/src/utils/tools/uid.ts +0 -19
  272. package/src/utils/validator.ts +0 -65
  273. package/types/commands/env/create.d.ts +0 -12
  274. package/types/commands/run/create.d.ts +0 -13
  275. package/types/commands/run/service/create.d.ts +0 -13
  276. package/types/run/create.d.ts +0 -2
  277. package/types/run/service/create.d.ts +0 -7
@@ -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
- }
@@ -1,138 +0,0 @@
1
- import chalk from 'chalk'
2
- import { Command, ICommand } from '../common'
3
- import { CloudBaseError } from '../../error'
4
- import { getFunctionDetail } from '../../function'
5
- import { loadingFactory, printHorizontalTable } from '../../utils'
6
- import { InjectParams, ArgsParams, CmdContext, Log, Logger } from '../../decorators'
7
-
8
- const StatusMap = {
9
- Active: '部署完成',
10
- Creating: '创建中',
11
- CreateFailed: '创建失败',
12
- Updating: '更新中',
13
- UpdateFailed: '更新失败'
14
- }
15
-
16
- @ICommand()
17
- export class FunctionDetail extends Command {
18
- get options() {
19
- return {
20
- cmd: 'fn',
21
- childCmd: 'detail <name>',
22
- deprecateCmd: 'functions:detail <name>',
23
- options: [
24
- {
25
- flags: '-e, --envId <envId>',
26
- desc: '环境 Id'
27
- },
28
- {
29
- flags: '--code-secret <codeSecret>',
30
- desc: '代码加密的函数的 CodeSecret'
31
- }
32
- ],
33
- desc: '获取云函数信息'
34
- }
35
- }
36
-
37
- @InjectParams()
38
- async execute(@CmdContext() ctx, @ArgsParams() params) {
39
- const { envId, options } = ctx
40
- const { codeSecret } = options
41
- const name = params?.[0]
42
-
43
- if (!name) {
44
- throw new CloudBaseError('请指定云函数名称!')
45
- }
46
-
47
- const loading = loadingFactory()
48
- loading.start('获取函数信息中...')
49
-
50
- try {
51
- const data = await getFunctionDetail({
52
- envId,
53
- functionName: name,
54
- codeSecret
55
- })
56
-
57
- loading.stop()
58
- this.logDetail(data, name)
59
- } catch (e) {
60
- if (e.code === 'ResourceNotFound.FunctionName') {
61
- throw new CloudBaseError(`[${name}] 函数不存在`)
62
- }
63
- throw e
64
- } finally {
65
- loading.stop()
66
- }
67
- }
68
-
69
- @InjectParams()
70
- logDetail(info, name, @Log() log?: Logger) {
71
- const ResMap = {
72
- Namespace: '环境 Id',
73
- FunctionName: '函数名称',
74
- Status: '状态',
75
- CodeSize: '代码大小(B)',
76
- Environment: '环境变量(key=value)',
77
- Handler: '执行方法',
78
- MemorySize: '内存配置(MB)',
79
- Runtime: '运行环境',
80
- Timeout: '超时时间(S)',
81
- VpcConfig: '网络配置',
82
- Triggers: '触发器',
83
- ModTime: '修改时间',
84
- InstallDependency: '自动安装依赖'
85
- }
86
-
87
- const head = ['信息', '值']
88
-
89
- const tableData = Object.keys(ResMap).map((key) => {
90
- if (key === 'Status') {
91
- return [ResMap[key], StatusMap[info[key]]]
92
- }
93
- // 将环境变量数组转换成 key=value 的形式
94
- if (key === 'Environment') {
95
- const data =
96
- info[key].Variables.map((item) => `${item.Key}=${item.Value}`).join('; ') ||
97
- '无'
98
- return [ResMap[key], data]
99
- }
100
-
101
- if (key === 'Triggers') {
102
- let data = info[key]
103
- .map((item) => `${item.TriggerName}:${item.TriggerDesc}`)
104
- .join('\n')
105
- data = data.length ? `${data}\n` : '无'
106
- return [ResMap[key], data]
107
- }
108
-
109
- if (key === 'VpcConfig') {
110
- const { vpc, subnet }: any = info[key]
111
- if (typeof vpc === 'string') {
112
- return [ResMap[key], `${vpc}/${subnet}`]
113
- } else if (vpc && subnet) {
114
- const data = `${vpc.VpcId}(${vpc.VpcName} | ${subnet.CidrBlock}) / ${subnet.SubnetId}(${subnet.SubnetName})`
115
-
116
- return [ResMap[key], data]
117
- } else {
118
- return [ResMap[key], '无']
119
- }
120
- }
121
-
122
- if (key === 'CodeInfo') {
123
- return [ResMap[key], info[key]]
124
- }
125
-
126
- return [ResMap[key], info[key]]
127
- })
128
-
129
- if (info.StatusDesc) {
130
- tableData.push(['状态描述', info.StatusDesc])
131
- }
132
-
133
- log.info(chalk.green(`云函数 [${name}] 详情:`))
134
- printHorizontalTable(head, tableData)
135
- log.info('函数代码(Java 函数以及入口大于 1 M 的函数不会显示)\n')
136
- log.log(info['CodeInfo'])
137
- }
138
- }
@@ -1,16 +0,0 @@
1
- export * from './deploy'
2
- export * from './list'
3
- export * from './delete'
4
- export * from './config-update'
5
- export * from './invoke'
6
- export * from './log'
7
- export * from './detail'
8
- export * from './copy'
9
- export * from './run'
10
- export * from './trigger-create'
11
- export * from './trigger-delete'
12
- export * from './code-update'
13
- export * from './code-download'
14
- export * from './version'
15
- export * from './concurrency'
16
- export * from './alias'
@@ -1,121 +0,0 @@
1
- import chalk from 'chalk'
2
- import inquirer from 'inquirer'
3
- import { Command, ICommand } from '../common'
4
- import { CloudBaseError } from '../../error'
5
- import { batchInvokeFunctions, invokeFunction } from '../../function'
6
- import { InjectParams, CmdContext, ArgsParams, Log, Logger } from '../../decorators'
7
-
8
- @ICommand()
9
- export class InvokeFunction extends Command {
10
- get options() {
11
- return {
12
- cmd: 'fn',
13
- childCmd: 'invoke [name]',
14
- deprecateCmd: 'functions:invoke [name]',
15
- options: [
16
- {
17
- flags: '-e, --envId <envId>',
18
- desc: '环境 Id'
19
- },
20
- {
21
- flags: '--params <params>',
22
- desc: '调用函数的入参,JSON 字符串形式'
23
- }
24
- ],
25
- desc: '触发云端部署的云函数'
26
- }
27
- }
28
-
29
- @InjectParams()
30
- async execute(@CmdContext() ctx, @ArgsParams() argsParams, @Log() log: Logger) {
31
- const {
32
- envId,
33
- config: { functions },
34
- options
35
- } = ctx
36
- const name = argsParams?.[0]
37
- let isBatchInvoke = false
38
-
39
- // 不指定云函数名称,触发配置文件中的所有函数
40
- if (!name) {
41
- const { isBatch } = await inquirer.prompt({
42
- type: 'confirm',
43
- name: 'isBatch',
44
- message: '无云函数名称,是否需要触发配置文件中的全部云函数?',
45
- default: false
46
- })
47
-
48
- isBatchInvoke = isBatch
49
-
50
- if (!isBatchInvoke) {
51
- throw new CloudBaseError('请指定云函数名称!')
52
- }
53
- }
54
-
55
- let params
56
- const jsonStringParams = options.params
57
- if (jsonStringParams) {
58
- try {
59
- params = JSON.parse(jsonStringParams)
60
- } catch (e) {
61
- console.log(e)
62
- throw new CloudBaseError('jsonStringParams 参数不是正确的 JSON 字符串')
63
- }
64
- }
65
-
66
- if (isBatchInvoke) {
67
- return batchInvokeFunctions({
68
- envId,
69
- functions,
70
- log: true
71
- })
72
- }
73
-
74
- const func = functions.find((item) => item.name === name)
75
-
76
- const configParams = func?.params ? func.params : undefined
77
-
78
- const result = await invokeFunction({
79
- envId,
80
- functionName: name,
81
- params: params || configParams
82
- })
83
-
84
- if (result.InvokeResult === 0) {
85
- log.success(`[${name}] 调用成功\n`)
86
- } else {
87
- log.error(`[${name}] 调用失败\n`)
88
- }
89
-
90
- const ResMap = {
91
- Duration: '运行时间',
92
- MemUsage: '内存占用',
93
- BillDuration: '计费时间',
94
- FunctionRequestId: '请求 Id ',
95
- RetMsg: '返回结果',
96
- ErrMsg: '错误信息',
97
- Log: '调用日志'
98
- }
99
-
100
- const formatInfo = {
101
- ...result,
102
- Duration: Number(result.Duration).toFixed(2) + 'ms',
103
- MemUsage: Number(Number(result.MemUsage) / Math.pow(1024, 2)).toFixed(2) + 'MB',
104
- BillDuration: result.BillDuration + 'ms'
105
- }
106
-
107
- const logInfo = Object.keys(ResMap)
108
- .map((key) => {
109
- if (key === 'Log') {
110
- return `${chalk.bold.cyan(ResMap[key])}:\n${formatInfo[key]}`
111
- } else if (result.InvokeResult === 0 && key === 'ErrMsg') {
112
- return false
113
- } else {
114
- return `${chalk.bold.cyan(ResMap[key])}:${formatInfo[key]}`
115
- }
116
- })
117
- .filter((item) => item)
118
- .join('\n')
119
- console.log(logInfo)
120
- }
121
- }