@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,92 +1,92 @@
1
- import path from 'path'
2
- import fse from 'fs-extra'
3
- import { prompt } from 'enquirer'
4
- import { loadingFactory } from '../../../utils'
5
- import { CloudBaseError } from '../../../error'
6
- import { Command, ICommand } from '../../common'
7
- import { InjectParams, EnvId, ArgsOptions } from '../../../decorators'
8
- import { downloadLayer, listLayers, listLayerVersions } from '../../../function'
9
- import { layerCommonOptions } from './common'
10
-
11
- @ICommand()
12
- export class DownloadFileLayer extends Command {
13
- get options() {
14
- return {
15
- ...layerCommonOptions('download'),
16
- deprecateCmd: 'functions:layer:download',
17
- options: [
18
- {
19
- flags: '-e, --envId <envId>',
20
- desc: '环境 Id'
21
- },
22
- {
23
- flags: '--dest <dest>',
24
- desc: '下载文件存放的地址'
25
- }
26
- ],
27
- desc: '下载云函数文件层'
28
- }
29
- }
30
-
31
- @InjectParams()
32
- async execute(@EnvId() envId, @ArgsOptions() options) {
33
- const { dest } = options
34
-
35
- const loading = loadingFactory()
36
- loading.start('数据加载中...')
37
-
38
- let layers: any[] = await listLayers({
39
- offset: 0,
40
- limit: 200
41
- })
42
-
43
- loading.stop()
44
-
45
- // 只能下载当前环境的文件层
46
- layers = layers
47
- .filter((item) => item.LayerName.includes(`_${envId}`))
48
- .map((item) => item.LayerName)
49
-
50
- if (!layers.length) {
51
- throw new CloudBaseError('当前环境没有可用的文件层,请先创建文件层!')
52
- }
53
-
54
- const { layer } = await prompt<any>({
55
- type: 'select',
56
- name: 'layer',
57
- message: '选择文件层名称',
58
- choices: layers
59
- })
60
-
61
- let versions = await listLayerVersions({
62
- name: layer
63
- })
64
-
65
- versions = versions.map((item) => String(item.LayerVersion))
66
-
67
- const { version } = await prompt<any>({
68
- type: 'select',
69
- name: 'version',
70
- message: '选择文件层版本',
71
- choices: versions
72
- })
73
-
74
- let destPath
75
-
76
- if (!dest) {
77
- destPath = path.resolve(process.cwd(), 'layers')
78
- }
79
-
80
- loading.start('文件下载中...')
81
-
82
- await fse.ensureDir(destPath)
83
- await downloadLayer({
84
- destPath,
85
- version: Number(version),
86
- name: layer,
87
- unzip: true
88
- })
89
-
90
- loading.succeed('文件下载成功!')
91
- }
92
- }
1
+ import path from 'path'
2
+ import fse from 'fs-extra'
3
+ import { prompt } from 'enquirer'
4
+ import { loadingFactory } from '../../../utils'
5
+ import { CloudBaseError } from '../../../error'
6
+ import { Command, ICommand } from '../../common'
7
+ import { InjectParams, EnvId, ArgsOptions } from '../../../decorators'
8
+ import { downloadLayer, listLayers, listLayerVersions } from '../../../function'
9
+ import { layerCommonOptions } from './common'
10
+
11
+ @ICommand()
12
+ export class DownloadFileLayer extends Command {
13
+ get options() {
14
+ return {
15
+ ...layerCommonOptions('download'),
16
+ deprecateCmd: 'functions:layer:download',
17
+ options: [
18
+ {
19
+ flags: '-e, --envId <envId>',
20
+ desc: '环境 Id'
21
+ },
22
+ {
23
+ flags: '--dest <dest>',
24
+ desc: '下载文件存放的地址'
25
+ }
26
+ ],
27
+ desc: '下载云函数文件层'
28
+ }
29
+ }
30
+
31
+ @InjectParams()
32
+ async execute(@EnvId() envId, @ArgsOptions() options) {
33
+ const { dest } = options
34
+
35
+ const loading = loadingFactory()
36
+ loading.start('数据加载中...')
37
+
38
+ let layers: any[] = await listLayers({
39
+ offset: 0,
40
+ limit: 200
41
+ })
42
+
43
+ loading.stop()
44
+
45
+ // 只能下载当前环境的文件层
46
+ layers = layers
47
+ .filter((item) => item.LayerName.includes(`_${envId}`))
48
+ .map((item) => item.LayerName)
49
+
50
+ if (!layers.length) {
51
+ throw new CloudBaseError('当前环境没有可用的文件层,请先创建文件层!')
52
+ }
53
+
54
+ const { layer } = await prompt<any>({
55
+ type: 'select',
56
+ name: 'layer',
57
+ message: '选择文件层名称',
58
+ choices: layers
59
+ })
60
+
61
+ let versions = await listLayerVersions({
62
+ name: layer
63
+ })
64
+
65
+ versions = versions.map((item) => String(item.LayerVersion))
66
+
67
+ const { version } = await prompt<any>({
68
+ type: 'select',
69
+ name: 'version',
70
+ message: '选择文件层版本',
71
+ choices: versions
72
+ })
73
+
74
+ let destPath
75
+
76
+ if (!dest) {
77
+ destPath = path.resolve(process.cwd(), 'layers')
78
+ }
79
+
80
+ loading.start('文件下载中...')
81
+
82
+ await fse.ensureDir(destPath)
83
+ await downloadLayer({
84
+ destPath,
85
+ version: Number(version),
86
+ name: layer,
87
+ unzip: true
88
+ })
89
+
90
+ loading.succeed('文件下载成功!')
91
+ }
92
+ }
@@ -1,7 +1,7 @@
1
- export * from './list'
2
- export * from './bind'
3
- export * from './delete'
4
- export * from './create'
5
- export * from './download'
6
- export * from './list'
7
- export * from './sort'
1
+ export * from './list'
2
+ export * from './bind'
3
+ export * from './delete'
4
+ export * from './create'
5
+ export * from './download'
6
+ export * from './list'
7
+ export * from './sort'
@@ -1,94 +1,94 @@
1
- import { Command, ICommand } from '../../common'
2
- import { loadingFactory, printHorizontalTable } from '../../../utils'
3
- import { InjectParams, EnvId, ArgsOptions, Log, Logger } from '../../../decorators'
4
- import { listLayers, getFunctionDetail, listLayerVersions } from '../../../function'
5
- import { layerCommonOptions } from './common'
6
-
7
- /**
8
- * 展示文件层列表
9
- * 1. 当不传入函数名时,展示所有文件层
10
- * 2. 当传入函数名时,展示函数绑定的文件层
11
- * 3. 当传入文件层别名时,展示文件层的版本信息
12
- */
13
- @ICommand()
14
- export class ListFileLayer extends Command {
15
- get options() {
16
- return {
17
- ...layerCommonOptions('list'),
18
- deprecateCmd: 'functions:layer:list',
19
- options: [
20
- {
21
- flags: '-e, --envId <envId>',
22
- desc: '环境 Id'
23
- },
24
- {
25
- flags: '--name, <name>',
26
- desc: '函数名称'
27
- },
28
- {
29
- flags: '--layer, <layer>',
30
- desc: '文件层别名'
31
- },
32
- {
33
- flags: '--code-secret, <codeSecret>',
34
- desc: '代码加密的函数的 CodeSecret'
35
- }
36
- ],
37
- desc: '展示文件层列表'
38
- }
39
- }
40
-
41
- @InjectParams()
42
- async execute(@EnvId() envId, @ArgsOptions() options, @Log() log: Logger) {
43
- const { name, layer, codeSecret } = options
44
-
45
- const loading = loadingFactory()
46
- loading.start('数据加载中...')
47
-
48
- let data
49
-
50
- // 展示文件层的版本信息
51
- if (layer && typeof layer === 'string') {
52
- const layerName = `${layer}_${envId}`
53
- data = await listLayerVersions({
54
- name: layerName
55
- })
56
- } else if (name && typeof name === 'string') {
57
- // 展示函数绑定的文件层
58
- const res = await getFunctionDetail({
59
- envId,
60
- functionName: name,
61
- codeSecret
62
- })
63
- data = res?.Layers || []
64
- } else if (envId) {
65
- // 展示所有文件层
66
- data = await listLayers({
67
- offset: 0,
68
- limit: 200
69
- })
70
- data = data.filter((item) => item.LayerName.includes(`_${envId}`))
71
- } else {
72
- // 展示所有文件层
73
- data = await listLayers({
74
- offset: 0,
75
- limit: 200
76
- })
77
- }
78
-
79
- loading.stop()
80
-
81
- const head = ['优先级', '名称', '状态', '版本', '证书', '支持运行时', '创建时间']
82
- const tableData = data.map((item, index) => [
83
- index + 1,
84
- item.LayerName,
85
- item.Status,
86
- item.LayerVersion,
87
- item.LicenseInfo || '空',
88
- item.CompatibleRuntimes.join(' | '),
89
- item.AddTime
90
- ])
91
- printHorizontalTable(head, tableData)
92
- log.info('Tips:函数绑定多个版本时,同名文件将按优先级从小到大的顺序进行覆盖执行。')
93
- }
94
- }
1
+ import { Command, ICommand } from '../../common'
2
+ import { loadingFactory, printHorizontalTable } from '../../../utils'
3
+ import { InjectParams, EnvId, ArgsOptions, Log, Logger } from '../../../decorators'
4
+ import { listLayers, getFunctionDetail, listLayerVersions } from '../../../function'
5
+ import { layerCommonOptions } from './common'
6
+
7
+ /**
8
+ * 展示文件层列表
9
+ * 1. 当不传入函数名时,展示所有文件层
10
+ * 2. 当传入函数名时,展示函数绑定的文件层
11
+ * 3. 当传入文件层别名时,展示文件层的版本信息
12
+ */
13
+ @ICommand()
14
+ export class ListFileLayer extends Command {
15
+ get options() {
16
+ return {
17
+ ...layerCommonOptions('list'),
18
+ deprecateCmd: 'functions:layer:list',
19
+ options: [
20
+ {
21
+ flags: '-e, --envId <envId>',
22
+ desc: '环境 Id'
23
+ },
24
+ {
25
+ flags: '--name, <name>',
26
+ desc: '函数名称'
27
+ },
28
+ {
29
+ flags: '--layer, <layer>',
30
+ desc: '文件层别名'
31
+ },
32
+ {
33
+ flags: '--code-secret, <codeSecret>',
34
+ desc: '代码加密的函数的 CodeSecret'
35
+ }
36
+ ],
37
+ desc: '展示文件层列表'
38
+ }
39
+ }
40
+
41
+ @InjectParams()
42
+ async execute(@EnvId() envId, @ArgsOptions() options, @Log() log: Logger) {
43
+ const { name, layer, codeSecret } = options
44
+
45
+ const loading = loadingFactory()
46
+ loading.start('数据加载中...')
47
+
48
+ let data
49
+
50
+ // 展示文件层的版本信息
51
+ if (layer && typeof layer === 'string') {
52
+ const layerName = `${layer}_${envId}`
53
+ data = await listLayerVersions({
54
+ name: layerName
55
+ })
56
+ } else if (name && typeof name === 'string') {
57
+ // 展示函数绑定的文件层
58
+ const res = await getFunctionDetail({
59
+ envId,
60
+ functionName: name,
61
+ codeSecret
62
+ })
63
+ data = res?.Layers || []
64
+ } else if (envId) {
65
+ // 展示所有文件层
66
+ data = await listLayers({
67
+ offset: 0,
68
+ limit: 200
69
+ })
70
+ data = data.filter((item) => item.LayerName.includes(`_${envId}`))
71
+ } else {
72
+ // 展示所有文件层
73
+ data = await listLayers({
74
+ offset: 0,
75
+ limit: 200
76
+ })
77
+ }
78
+
79
+ loading.stop()
80
+
81
+ const head = ['优先级', '名称', '状态', '版本', '证书', '支持运行时', '创建时间']
82
+ const tableData = data.map((item, index) => [
83
+ index + 1,
84
+ item.LayerName,
85
+ item.Status,
86
+ item.LayerVersion,
87
+ item.LicenseInfo || '空',
88
+ item.CompatibleRuntimes.join(' | '),
89
+ item.AddTime
90
+ ])
91
+ printHorizontalTable(head, tableData)
92
+ log.info('Tips:函数绑定多个版本时,同名文件将按优先级从小到大的顺序进行覆盖执行。')
93
+ }
94
+ }
@@ -1,76 +1,76 @@
1
- import _ from 'lodash'
2
- import { prompt } from 'enquirer'
3
-
4
- import { Command, ICommand } from '../../common'
5
- import { loadingFactory } from '../../../utils'
6
- import { CloudBaseError } from '../../../error'
7
- import { getFunctionDetail, sortLayer } from '../../../function'
8
- import { InjectParams, CmdContext } from '../../../decorators'
9
- import { layerCommonOptions } from './common'
10
-
11
- @ICommand()
12
- export class SortFileLayer extends Command {
13
- get options() {
14
- return {
15
- ...layerCommonOptions('sort <name>'),
16
- deprecateCmd: 'functions:layer:sort <name>',
17
- options: [
18
- {
19
- flags: '-e, --envId <envId>',
20
- desc: '环境 Id'
21
- },
22
- {
23
- flags: '--code-secret, <codeSecret>',
24
- desc: '代码加密的函数的 CodeSecret'
25
- }
26
- ],
27
- desc: '重新排列云函数绑定的文件层的顺序'
28
- }
29
- }
30
-
31
- @InjectParams()
32
- async execute(@CmdContext() ctx) {
33
- const { envId, options, params } = ctx
34
- const { codeSecret } = options
35
- const fnName = params?.[0]
36
-
37
- const loading = loadingFactory()
38
- loading.start('数据加载中...')
39
- const detail = await getFunctionDetail({
40
- envId,
41
- codeSecret,
42
- functionName: fnName
43
- })
44
- loading.stop()
45
-
46
- const layers = detail.Layers.map((item) => ({
47
- name: `${item.LayerName} - ${item.LayerVersion}`,
48
- value: item
49
- }))
50
-
51
- if (!layers.length) {
52
- throw new CloudBaseError('没有可用的文件层,请先创建文件层!')
53
- }
54
-
55
- let { sortLayers } = await prompt<any>({
56
- type: 'sort',
57
- name: 'sortLayers',
58
- message: '选择文件层',
59
- numbered: true,
60
- choices: layers,
61
- result(choices) {
62
- return Object.values(this.map(choices)) as any
63
- }
64
- })
65
-
66
- sortLayers = sortLayers.map((item) => _.pick(item, ['LayerName', 'LayerVersion']))
67
-
68
- loading.start('文件层排序中...')
69
- await sortLayer({
70
- envId,
71
- functionName: fnName,
72
- layers: sortLayers
73
- })
74
- loading.succeed('文件层排序成功!')
75
- }
76
- }
1
+ import _ from 'lodash'
2
+ import { prompt } from 'enquirer'
3
+
4
+ import { Command, ICommand } from '../../common'
5
+ import { loadingFactory } from '../../../utils'
6
+ import { CloudBaseError } from '../../../error'
7
+ import { getFunctionDetail, sortLayer } from '../../../function'
8
+ import { InjectParams, CmdContext } from '../../../decorators'
9
+ import { layerCommonOptions } from './common'
10
+
11
+ @ICommand()
12
+ export class SortFileLayer extends Command {
13
+ get options() {
14
+ return {
15
+ ...layerCommonOptions('sort <name>'),
16
+ deprecateCmd: 'functions:layer:sort <name>',
17
+ options: [
18
+ {
19
+ flags: '-e, --envId <envId>',
20
+ desc: '环境 Id'
21
+ },
22
+ {
23
+ flags: '--code-secret, <codeSecret>',
24
+ desc: '代码加密的函数的 CodeSecret'
25
+ }
26
+ ],
27
+ desc: '重新排列云函数绑定的文件层的顺序'
28
+ }
29
+ }
30
+
31
+ @InjectParams()
32
+ async execute(@CmdContext() ctx) {
33
+ const { envId, options, params } = ctx
34
+ const { codeSecret } = options
35
+ const fnName = params?.[0]
36
+
37
+ const loading = loadingFactory()
38
+ loading.start('数据加载中...')
39
+ const detail = await getFunctionDetail({
40
+ envId,
41
+ codeSecret,
42
+ functionName: fnName
43
+ })
44
+ loading.stop()
45
+
46
+ const layers = detail.Layers.map((item) => ({
47
+ name: `${item.LayerName} - ${item.LayerVersion}`,
48
+ value: item
49
+ }))
50
+
51
+ if (!layers.length) {
52
+ throw new CloudBaseError('没有可用的文件层,请先创建文件层!')
53
+ }
54
+
55
+ let { sortLayers } = await prompt<any>({
56
+ type: 'sort',
57
+ name: 'sortLayers',
58
+ message: '选择文件层',
59
+ numbered: true,
60
+ choices: layers,
61
+ result(choices) {
62
+ return Object.values(this.map(choices)) as any
63
+ }
64
+ })
65
+
66
+ sortLayers = sortLayers.map((item) => _.pick(item, ['LayerName', 'LayerVersion']))
67
+
68
+ loading.start('文件层排序中...')
69
+ await sortLayer({
70
+ envId,
71
+ functionName: fnName,
72
+ layers: sortLayers
73
+ })
74
+ loading.succeed('文件层排序成功!')
75
+ }
76
+ }