@cloudbase/cli 2.0.3-alpha.1 → 2.0.3

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 (201) 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/.vscode/settings.json +3 -0
  7. package/LICENSE +5 -5
  8. package/README.md +35 -35
  9. package/bin/cloudbase.js +5 -5
  10. package/bin/tcb.js +0 -0
  11. package/changelog.md +6 -6
  12. package/jest.config.js +17 -17
  13. package/lib/commands/account/login.js +18 -18
  14. package/lib/commands/storage/storage.js +1 -1
  15. package/lib/env/login.js +7 -7
  16. package/lib/run/service/deployPackage.js +2 -2
  17. package/package.json +3 -3
  18. package/post-install.js +61 -61
  19. package/runtime/nodejs/bootstrap.js +255 -255
  20. package/runtime/nodejs/runtime.js +183 -183
  21. package/src/auth/index.ts +1 -1
  22. package/src/auth/login.ts +91 -91
  23. package/src/auth/logout.ts +7 -7
  24. package/src/commands/account/index.ts +2 -2
  25. package/src/commands/account/login.ts +192 -192
  26. package/src/commands/account/logout.ts +24 -24
  27. package/src/commands/env/base.ts +90 -90
  28. package/src/commands/env/create.ts +92 -92
  29. package/src/commands/env/domain.ts +186 -186
  30. package/src/commands/env/index.ts +4 -4
  31. package/src/commands/env/login.ts +235 -235
  32. package/src/commands/framework/index.ts +124 -124
  33. package/src/commands/functions/alias/getRoute.ts +76 -76
  34. package/src/commands/functions/alias/index.ts +2 -2
  35. package/src/commands/functions/alias/setRoute.ts +82 -82
  36. package/src/commands/functions/code-download.ts +100 -100
  37. package/src/commands/functions/code-update.ts +62 -62
  38. package/src/commands/functions/concurrency/delete.ts +45 -45
  39. package/src/commands/functions/concurrency/index.ts +2 -2
  40. package/src/commands/functions/concurrency/list.ts +58 -58
  41. package/src/commands/functions/concurrency/set.ts +47 -47
  42. package/src/commands/functions/config-update.ts +76 -76
  43. package/src/commands/functions/copy.ts +62 -62
  44. package/src/commands/functions/delete.ts +79 -79
  45. package/src/commands/functions/deploy.ts +293 -293
  46. package/src/commands/functions/detail.ts +138 -138
  47. package/src/commands/functions/index.ts +16 -16
  48. package/src/commands/functions/invoke.ts +121 -121
  49. package/src/commands/functions/layer/bind.ts +182 -182
  50. package/src/commands/functions/layer/common.ts +8 -8
  51. package/src/commands/functions/layer/create.ts +49 -49
  52. package/src/commands/functions/layer/delete.ts +73 -73
  53. package/src/commands/functions/layer/download.ts +92 -92
  54. package/src/commands/functions/layer/index.ts +7 -7
  55. package/src/commands/functions/layer/list.ts +94 -94
  56. package/src/commands/functions/layer/sort.ts +76 -76
  57. package/src/commands/functions/list.ts +68 -68
  58. package/src/commands/functions/log.ts +148 -148
  59. package/src/commands/functions/run.ts +249 -249
  60. package/src/commands/functions/trigger-create.ts +79 -79
  61. package/src/commands/functions/trigger-delete.ts +105 -105
  62. package/src/commands/functions/version/index.ts +1 -1
  63. package/src/commands/functions/version/list.ts +73 -73
  64. package/src/commands/functions/version/publish.ts +43 -43
  65. package/src/commands/gateway/create.ts +109 -109
  66. package/src/commands/gateway/delete.ts +81 -81
  67. package/src/commands/gateway/domain.ts +159 -159
  68. package/src/commands/gateway/index.ts +5 -5
  69. package/src/commands/gateway/list.ts +76 -76
  70. package/src/commands/gateway/switch.ts +107 -107
  71. package/src/commands/helpers/index.ts +2 -2
  72. package/src/commands/helpers/init.ts +431 -431
  73. package/src/commands/helpers/new.ts +117 -117
  74. package/src/commands/helpers/open.ts +67 -67
  75. package/src/commands/hosting/hosting.ts +360 -360
  76. package/src/commands/index.ts +13 -13
  77. package/src/commands/lowcode/app.ts +34 -34
  78. package/src/commands/lowcode/comps.ts +322 -322
  79. package/src/commands/lowcode/index.ts +1 -1
  80. package/src/commands/lowcode/utils.ts +24 -24
  81. package/src/commands/run/image/index.ts +4 -4
  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/service/deployPackage.ts +1 -1
  137. package/src/run/standalonegateway/create.ts +24 -24
  138. package/src/run/standalonegateway/destroy.ts +19 -19
  139. package/src/run/standalonegateway/index.ts +4 -4
  140. package/src/run/standalonegateway/list.ts +74 -74
  141. package/src/run/standalonegateway/package/list.ts +24 -24
  142. package/src/run/standalonegateway/turn/index.ts +1 -1
  143. package/src/run/standalonegateway/turn/off.ts +19 -19
  144. package/src/run/standalonegateway/turn/on.ts +19 -19
  145. package/src/run/version/create.ts +68 -68
  146. package/src/run/version/delete.ts +15 -15
  147. package/src/run/version/index.ts +5 -5
  148. package/src/run/version/list.ts +16 -16
  149. package/src/run/version/modify.ts +16 -16
  150. package/src/run/version/repo.ts +27 -27
  151. package/src/run/version/update.ts +58 -58
  152. package/src/storage.ts +114 -114
  153. package/src/third/index.ts +12 -12
  154. package/src/utils/auth.ts +15 -15
  155. package/src/utils/cli-table.ts +23 -23
  156. package/src/utils/config.ts +39 -39
  157. package/src/utils/env.ts +244 -244
  158. package/src/utils/fs/del.ts +5 -5
  159. package/src/utils/fs/index.ts +71 -71
  160. package/src/utils/function-packer.ts +97 -97
  161. package/src/utils/log.ts +81 -81
  162. package/src/utils/net/cloud-api-request.ts +62 -62
  163. package/src/utils/net/credential.ts +53 -53
  164. package/src/utils/net/index.ts +4 -4
  165. package/src/utils/net/manager-service.ts +36 -36
  166. package/src/utils/net/proxy.ts +6 -6
  167. package/src/utils/notice.ts +28 -28
  168. package/src/utils/output/highlight.ts +5 -5
  169. package/src/utils/output/index.ts +2 -2
  170. package/src/utils/output/link.ts +10 -10
  171. package/src/utils/output/loading.ts +82 -82
  172. package/src/utils/parallel.ts +82 -82
  173. package/src/utils/platform/index.ts +2 -2
  174. package/src/utils/platform/mac.ts +21 -21
  175. package/src/utils/platform/os.ts +64 -64
  176. package/src/utils/platform/port.ts +10 -10
  177. package/src/utils/progress-bar.ts +38 -38
  178. package/src/utils/prompt/select.ts +59 -59
  179. package/src/utils/reporter/agree.ts +20 -20
  180. package/src/utils/reporter/download.ts +26 -26
  181. package/src/utils/reporter/index.ts +3 -3
  182. package/src/utils/reporter/usage.ts +20 -20
  183. package/src/utils/store/auth.ts +49 -49
  184. package/src/utils/store/common.ts +8 -8
  185. package/src/utils/store/db.ts +68 -68
  186. package/src/utils/store/index.ts +4 -4
  187. package/src/utils/store/usage.ts +12 -12
  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
package/src/hosting.ts CHANGED
@@ -1,212 +1,212 @@
1
- import path from 'path'
2
- import {
3
- CloudApiService,
4
- firstLetterToLowerCase,
5
- isDirectory,
6
- genClickableLink,
7
- checkReadable,
8
- getStorageService
9
- } from './utils'
10
- import { CloudBaseError } from './error'
11
-
12
- interface IBaseOptions {
13
- envId: string
14
- }
15
-
16
- interface IHostingFileOptions extends IBaseOptions {
17
- filePath: string
18
- cloudPath: string
19
- isDir: boolean
20
- onProgress?: (data: any) => void
21
- onFileFinish?: (...args) => void
22
- }
23
-
24
- interface IHostingCloudOptions extends IBaseOptions {
25
- cloudPath: string
26
- isDir: boolean
27
- }
28
-
29
- const HostingStatusMap = {
30
- init: '初始化中',
31
- process: '处理中',
32
- online: '上线',
33
- destroying: '销毁中',
34
- offline: '下线',
35
- create_fail: '初始化失败', // eslint-disable-line
36
- destroy_fail: '销毁失败' // eslint-disable-line
37
- }
38
-
39
- const tcbService = CloudApiService.getInstance('tcb')
40
-
41
- export async function getHostingInfo(options: IBaseOptions) {
42
- const { envId } = options
43
- const res = await tcbService.request('DescribeStaticStore', {
44
- EnvId: envId
45
- })
46
- const data = firstLetterToLowerCase(res)
47
- return data
48
- }
49
-
50
- export async function checkHostingStatus(envId: string) {
51
- const hostings = await getHostingInfo({ envId })
52
-
53
- const link = genClickableLink('https://console.cloud.tencent.com/tcb')
54
-
55
- if (!hostings.data || !hostings.data.length) {
56
- throw new CloudBaseError(
57
- `您还没有开启静态网站服务,请先到云开发控制台开启静态网站服务!\n👉 ${link}`,
58
- {
59
- code: 'INVALID_OPERATION'
60
- }
61
- )
62
- }
63
-
64
- const website = hostings.data[0]
65
-
66
- if (website.status !== 'online') {
67
- throw new CloudBaseError(
68
- `静态网站服务【${HostingStatusMap[website.status]}】,无法进行此操作!`,
69
- {
70
- code: 'INVALID_OPERATION'
71
- }
72
- )
73
- }
74
-
75
- return website
76
- }
77
-
78
- export async function enableHosting(options: IBaseOptions) {
79
- const { envId } = options
80
- const hostings = await getHostingInfo(options)
81
- if (hostings?.data?.length) {
82
- const website = hostings.data[0]
83
- // offline 状态的服务可重新开启
84
- if (website.status !== 'offline') {
85
- throw new CloudBaseError('静态网站服务已开启,请勿重复操作!')
86
- }
87
- }
88
-
89
- const res = await tcbService.request('CreateStaticStore', {
90
- EnvId: envId
91
- })
92
- const code = res.Result === 'succ' ? 0 : -1
93
- return {
94
- code,
95
- requestId: res.RequestId
96
- }
97
- }
98
-
99
- // 展示文件信息
100
- export async function hostingList(options: IBaseOptions) {
101
- const { envId } = options
102
- const hosting = await checkHostingStatus(envId)
103
- const { bucket, regoin } = hosting
104
- const storageService = await getStorageService(envId)
105
-
106
- const list = await storageService.walkCloudDirCustom({
107
- prefix: '',
108
- bucket,
109
- region: regoin
110
- })
111
-
112
- return list
113
- }
114
-
115
- export async function destroyHosting(options: IBaseOptions) {
116
- const { envId } = options
117
- const files = await hostingList(options)
118
-
119
- if (files?.length) {
120
- throw new CloudBaseError('静态网站文件不为空,无法销毁!', {
121
- code: 'INVALID_OPERATION'
122
- })
123
- }
124
-
125
- const hostings = await getHostingInfo(options)
126
-
127
- if (!hostings.data || !hostings.data.length) {
128
- throw new CloudBaseError('静态网站服务未开启!', {
129
- code: 'INVALID_OPERATION'
130
- })
131
- }
132
-
133
- const website = hostings.data[0]
134
-
135
- // destroy_fail 状态可重试
136
- if (website.status !== 'online' && website.status !== 'destroy_fail') {
137
- throw new CloudBaseError(
138
- `静态网站服务【${HostingStatusMap[website.status]}】,无法进行此操作!`,
139
- {
140
- code: 'INVALID_OPERATION'
141
- }
142
- )
143
- }
144
-
145
- const res = await tcbService.request('DestroyStaticStore', {
146
- EnvId: envId
147
- })
148
-
149
- const code = res.Result === 'succ' ? 0 : -1
150
- return {
151
- code,
152
- requestId: res.RequestId
153
- }
154
- }
155
-
156
- // 上传文件
157
- export async function hostingDeploy(options: IHostingFileOptions) {
158
- const { envId, filePath, cloudPath, onProgress, onFileFinish } = options
159
- const resolvePath = path.resolve(filePath)
160
- // 检查路径是否存在
161
- checkReadable(resolvePath, true)
162
-
163
- const hosting = await checkHostingStatus(envId)
164
- const { bucket, regoin } = hosting
165
- const storageService = await getStorageService(envId)
166
-
167
- if (isDirectory(resolvePath)) {
168
- await storageService.uploadDirectoryCustom({
169
- localPath: resolvePath,
170
- cloudPath,
171
- bucket,
172
- region: regoin,
173
- onProgress,
174
- onFileFinish,
175
- fileId: false
176
- })
177
- } else {
178
- const assignCloudPath = cloudPath || path.parse(resolvePath).base
179
- await storageService.uploadFileCustom({
180
- localPath: resolvePath,
181
- cloudPath: assignCloudPath,
182
- bucket,
183
- region: regoin,
184
- onProgress,
185
- fileId: false
186
- })
187
- }
188
- }
189
-
190
- // 删除文件
191
- export async function hostingDelete(options: IHostingCloudOptions) {
192
- const { envId, cloudPath, isDir } = options
193
- const hosting = await checkHostingStatus(envId)
194
- const { bucket, regoin } = hosting
195
- const storageService = await getStorageService(envId)
196
-
197
- if (isDir) {
198
- await storageService.deleteDirectoryCustom({
199
- cloudPath,
200
- bucket,
201
- region: regoin
202
- })
203
- } else {
204
- await storageService.deleteFileCustom([cloudPath], bucket, regoin)
205
- }
206
- }
207
-
208
- // 删除文件
209
- export async function walkLocalDir(envId: string, dir: string) {
210
- const storageService = await getStorageService(envId)
211
- return storageService.walkLocalDir(dir)
212
- }
1
+ import path from 'path'
2
+ import {
3
+ CloudApiService,
4
+ firstLetterToLowerCase,
5
+ isDirectory,
6
+ genClickableLink,
7
+ checkReadable,
8
+ getStorageService
9
+ } from './utils'
10
+ import { CloudBaseError } from './error'
11
+
12
+ interface IBaseOptions {
13
+ envId: string
14
+ }
15
+
16
+ interface IHostingFileOptions extends IBaseOptions {
17
+ filePath: string
18
+ cloudPath: string
19
+ isDir: boolean
20
+ onProgress?: (data: any) => void
21
+ onFileFinish?: (...args) => void
22
+ }
23
+
24
+ interface IHostingCloudOptions extends IBaseOptions {
25
+ cloudPath: string
26
+ isDir: boolean
27
+ }
28
+
29
+ const HostingStatusMap = {
30
+ init: '初始化中',
31
+ process: '处理中',
32
+ online: '上线',
33
+ destroying: '销毁中',
34
+ offline: '下线',
35
+ create_fail: '初始化失败', // eslint-disable-line
36
+ destroy_fail: '销毁失败' // eslint-disable-line
37
+ }
38
+
39
+ const tcbService = CloudApiService.getInstance('tcb')
40
+
41
+ export async function getHostingInfo(options: IBaseOptions) {
42
+ const { envId } = options
43
+ const res = await tcbService.request('DescribeStaticStore', {
44
+ EnvId: envId
45
+ })
46
+ const data = firstLetterToLowerCase(res)
47
+ return data
48
+ }
49
+
50
+ export async function checkHostingStatus(envId: string) {
51
+ const hostings = await getHostingInfo({ envId })
52
+
53
+ const link = genClickableLink('https://console.cloud.tencent.com/tcb')
54
+
55
+ if (!hostings.data || !hostings.data.length) {
56
+ throw new CloudBaseError(
57
+ `您还没有开启静态网站服务,请先到云开发控制台开启静态网站服务!\n👉 ${link}`,
58
+ {
59
+ code: 'INVALID_OPERATION'
60
+ }
61
+ )
62
+ }
63
+
64
+ const website = hostings.data[0]
65
+
66
+ if (website.status !== 'online') {
67
+ throw new CloudBaseError(
68
+ `静态网站服务【${HostingStatusMap[website.status]}】,无法进行此操作!`,
69
+ {
70
+ code: 'INVALID_OPERATION'
71
+ }
72
+ )
73
+ }
74
+
75
+ return website
76
+ }
77
+
78
+ export async function enableHosting(options: IBaseOptions) {
79
+ const { envId } = options
80
+ const hostings = await getHostingInfo(options)
81
+ if (hostings?.data?.length) {
82
+ const website = hostings.data[0]
83
+ // offline 状态的服务可重新开启
84
+ if (website.status !== 'offline') {
85
+ throw new CloudBaseError('静态网站服务已开启,请勿重复操作!')
86
+ }
87
+ }
88
+
89
+ const res = await tcbService.request('CreateStaticStore', {
90
+ EnvId: envId
91
+ })
92
+ const code = res.Result === 'succ' ? 0 : -1
93
+ return {
94
+ code,
95
+ requestId: res.RequestId
96
+ }
97
+ }
98
+
99
+ // 展示文件信息
100
+ export async function hostingList(options: IBaseOptions) {
101
+ const { envId } = options
102
+ const hosting = await checkHostingStatus(envId)
103
+ const { bucket, regoin } = hosting
104
+ const storageService = await getStorageService(envId)
105
+
106
+ const list = await storageService.walkCloudDirCustom({
107
+ prefix: '',
108
+ bucket,
109
+ region: regoin
110
+ })
111
+
112
+ return list
113
+ }
114
+
115
+ export async function destroyHosting(options: IBaseOptions) {
116
+ const { envId } = options
117
+ const files = await hostingList(options)
118
+
119
+ if (files?.length) {
120
+ throw new CloudBaseError('静态网站文件不为空,无法销毁!', {
121
+ code: 'INVALID_OPERATION'
122
+ })
123
+ }
124
+
125
+ const hostings = await getHostingInfo(options)
126
+
127
+ if (!hostings.data || !hostings.data.length) {
128
+ throw new CloudBaseError('静态网站服务未开启!', {
129
+ code: 'INVALID_OPERATION'
130
+ })
131
+ }
132
+
133
+ const website = hostings.data[0]
134
+
135
+ // destroy_fail 状态可重试
136
+ if (website.status !== 'online' && website.status !== 'destroy_fail') {
137
+ throw new CloudBaseError(
138
+ `静态网站服务【${HostingStatusMap[website.status]}】,无法进行此操作!`,
139
+ {
140
+ code: 'INVALID_OPERATION'
141
+ }
142
+ )
143
+ }
144
+
145
+ const res = await tcbService.request('DestroyStaticStore', {
146
+ EnvId: envId
147
+ })
148
+
149
+ const code = res.Result === 'succ' ? 0 : -1
150
+ return {
151
+ code,
152
+ requestId: res.RequestId
153
+ }
154
+ }
155
+
156
+ // 上传文件
157
+ export async function hostingDeploy(options: IHostingFileOptions) {
158
+ const { envId, filePath, cloudPath, onProgress, onFileFinish } = options
159
+ const resolvePath = path.resolve(filePath)
160
+ // 检查路径是否存在
161
+ checkReadable(resolvePath, true)
162
+
163
+ const hosting = await checkHostingStatus(envId)
164
+ const { bucket, regoin } = hosting
165
+ const storageService = await getStorageService(envId)
166
+
167
+ if (isDirectory(resolvePath)) {
168
+ await storageService.uploadDirectoryCustom({
169
+ localPath: resolvePath,
170
+ cloudPath,
171
+ bucket,
172
+ region: regoin,
173
+ onProgress,
174
+ onFileFinish,
175
+ fileId: false
176
+ })
177
+ } else {
178
+ const assignCloudPath = cloudPath || path.parse(resolvePath).base
179
+ await storageService.uploadFileCustom({
180
+ localPath: resolvePath,
181
+ cloudPath: assignCloudPath,
182
+ bucket,
183
+ region: regoin,
184
+ onProgress,
185
+ fileId: false
186
+ })
187
+ }
188
+ }
189
+
190
+ // 删除文件
191
+ export async function hostingDelete(options: IHostingCloudOptions) {
192
+ const { envId, cloudPath, isDir } = options
193
+ const hosting = await checkHostingStatus(envId)
194
+ const { bucket, regoin } = hosting
195
+ const storageService = await getStorageService(envId)
196
+
197
+ if (isDir) {
198
+ await storageService.deleteDirectoryCustom({
199
+ cloudPath,
200
+ bucket,
201
+ region: regoin
202
+ })
203
+ } else {
204
+ await storageService.deleteFileCustom([cloudPath], bucket, regoin)
205
+ }
206
+ }
207
+
208
+ // 删除文件
209
+ export async function walkLocalDir(envId: string, dir: string) {
210
+ const storageService = await getStorageService(envId)
211
+ return storageService.walkLocalDir(dir)
212
+ }
package/src/index.ts CHANGED
@@ -1,13 +1,13 @@
1
- import 'reflect-metadata'
2
- import { registerCommands } from './commands/common'
3
- import './commands'
4
-
5
- export { smartDeploy } from './commands'
6
-
7
- registerCommands()
8
-
9
- // HACK: 部分依赖使用了 globalThis,会在 Node12 以下的版本报错
10
- if (typeof globalThis === undefined) {
11
- // eslint-disable-next-line no-undef
12
- ;(globalThis as any) = global
13
- }
1
+ import 'reflect-metadata'
2
+ import { registerCommands } from './commands/common'
3
+ import './commands'
4
+
5
+ export { smartDeploy } from './commands'
6
+
7
+ registerCommands()
8
+
9
+ // HACK: 部分依赖使用了 globalThis,会在 Node12 以下的版本报错
10
+ if (typeof globalThis === undefined) {
11
+ // eslint-disable-next-line no-undef
12
+ ;(globalThis as any) = global
13
+ }
package/src/logger.ts CHANGED
@@ -1,17 +1,17 @@
1
- import chalk from 'chalk'
2
- import logSymbols from 'log-symbols'
3
-
4
- export function errorLog(msg: string) {
5
- // 空格,兼容中文字符编码长度问题
6
- console.log(`${logSymbols.error} ${msg}`)
7
- }
8
-
9
- export function successLog(msg: string) {
10
- // 空格,兼容中文字符编码长度问题
11
- console.log(`${logSymbols.success} ${msg}`)
12
- }
13
-
14
- export function warnLog(msg: string) {
15
- // 空格,兼容中文字符编码长度问题
16
- console.log(`${logSymbols.warning} ${msg}`)
17
- }
1
+ import chalk from 'chalk'
2
+ import logSymbols from 'log-symbols'
3
+
4
+ export function errorLog(msg: string) {
5
+ // 空格,兼容中文字符编码长度问题
6
+ console.log(`${logSymbols.error} ${msg}`)
7
+ }
8
+
9
+ export function successLog(msg: string) {
10
+ // 空格,兼容中文字符编码长度问题
11
+ console.log(`${logSymbols.success} ${msg}`)
12
+ }
13
+
14
+ export function warnLog(msg: string) {
15
+ // 空格,兼容中文字符编码长度问题
16
+ console.log(`${logSymbols.warning} ${msg}`)
17
+ }
package/src/run/create.ts CHANGED
@@ -1,23 +1,23 @@
1
- import { CloudApiService } from '../utils'
2
- import {
3
- ICreateRunOptions
4
- } from '../types'
5
-
6
- const tcbService = CloudApiService.getInstance('tcb')
7
-
8
- export const createRun = async (options: ICreateRunOptions) => {
9
- const { Result } = await tcbService.request('EstablishCloudBaseRunServer',
10
- {
11
- EnvId: options.envId,
12
- ServiceName: options.name,
13
- Remark: options.remark,
14
- VpcInfo: options.vpcInfo,
15
- LogType: options.logType,
16
- IsPublic: options.isPublic,
17
- ...(options.imageRepo ? { ImageRepo: options.imageRepo } : {}),
18
- ...(options.logType === 'es' ? { EsInfo: options.esInfo } : {})
19
- },
20
- )
21
-
22
- return Result
23
- }
1
+ import { CloudApiService } from '../utils'
2
+ import {
3
+ ICreateRunOptions
4
+ } from '../types'
5
+
6
+ const tcbService = CloudApiService.getInstance('tcb')
7
+
8
+ export const createRun = async (options: ICreateRunOptions) => {
9
+ const { Result } = await tcbService.request('EstablishCloudBaseRunServer',
10
+ {
11
+ EnvId: options.envId,
12
+ ServiceName: options.name,
13
+ Remark: options.remark,
14
+ VpcInfo: options.vpcInfo,
15
+ LogType: options.logType,
16
+ IsPublic: options.isPublic,
17
+ ...(options.imageRepo ? { ImageRepo: options.imageRepo } : {}),
18
+ ...(options.logType === 'es' ? { EsInfo: options.esInfo } : {})
19
+ },
20
+ )
21
+
22
+ return Result
23
+ }
package/src/run/delete.ts CHANGED
@@ -1,15 +1,15 @@
1
- import { CloudApiService } from '../utils'
2
- import {
3
- IDeleteRun
4
- } from '../types'
5
-
6
- const tcbService = CloudApiService.getInstance('tcb')
7
-
8
- export const deleteRun = async (options: IDeleteRun) => {
9
- const { Result } = await tcbService.request('DeleteCloudBaseRunServer', {
10
- EnvId: options.envId,
11
- ServerName: options.serverName
12
- })
13
-
14
- return Result
15
- }
1
+ import { CloudApiService } from '../utils'
2
+ import {
3
+ IDeleteRun
4
+ } from '../types'
5
+
6
+ const tcbService = CloudApiService.getInstance('tcb')
7
+
8
+ export const deleteRun = async (options: IDeleteRun) => {
9
+ const { Result } = await tcbService.request('DeleteCloudBaseRunServer', {
10
+ EnvId: options.envId,
11
+ ServerName: options.serverName
12
+ })
13
+
14
+ return Result
15
+ }
@@ -1,36 +1,36 @@
1
- import { createReadStream, createWriteStream, readdirSync } from 'fs'
2
- import { join } from 'path'
3
- import { zip } from 'compressing'
4
- import { CloudApiService, fetchStream } from '../../utils'
5
- import {
6
- IBuildImage
7
- } from '../../types'
8
-
9
- const tcbService = CloudApiService.getInstance('tcb')
10
-
11
- // 提交构建任务
12
- export const createBuild = async (options: IBuildImage) => {
13
- const { PackageName, PackageVersion, UploadHeaders, UploadUrl } = await tcbService.request('DescribeCloudBaseBuildService', {
14
- EnvId: options.envId,
15
- ServiceName: options.serviceName,
16
- })
17
-
18
- return { PackageName, PackageVersion, UploadHeaders, UploadUrl }
19
- }
20
-
21
- // 上传zip压缩包
22
- export const uploadZip = async (path: string, url: string, headers: { [key: string]: string }) => {
23
- let body = createReadStream(path)
24
-
25
- await fetchStream(url, {
26
- method: 'PUT',
27
- headers: {
28
- Accept: '*/*',
29
- 'Accept-Encoding': 'gzip, deflate, br',
30
- 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,en-US;q=0.6',
31
- // [headers['Key']]: headers['Value'],
32
- 'Content-Type': 'application/x-zip-compressed'
33
- },
34
- body
35
- })
36
- }
1
+ import { createReadStream, createWriteStream, readdirSync } from 'fs'
2
+ import { join } from 'path'
3
+ import { zip } from 'compressing'
4
+ import { CloudApiService, fetchStream } from '../../utils'
5
+ import {
6
+ IBuildImage
7
+ } from '../../types'
8
+
9
+ const tcbService = CloudApiService.getInstance('tcb')
10
+
11
+ // 提交构建任务
12
+ export const createBuild = async (options: IBuildImage) => {
13
+ const { PackageName, PackageVersion, UploadHeaders, UploadUrl } = await tcbService.request('DescribeCloudBaseBuildService', {
14
+ EnvId: options.envId,
15
+ ServiceName: options.serviceName,
16
+ })
17
+
18
+ return { PackageName, PackageVersion, UploadHeaders, UploadUrl }
19
+ }
20
+
21
+ // 上传zip压缩包
22
+ export const uploadZip = async (path: string, url: string, headers: { [key: string]: string }) => {
23
+ let body = createReadStream(path)
24
+
25
+ await fetchStream(url, {
26
+ method: 'PUT',
27
+ headers: {
28
+ Accept: '*/*',
29
+ 'Accept-Encoding': 'gzip, deflate, br',
30
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7,en-US;q=0.6',
31
+ // [headers['Key']]: headers['Value'],
32
+ 'Content-Type': 'application/x-zip-compressed'
33
+ },
34
+ body
35
+ })
36
+ }
@@ -1,14 +1,14 @@
1
- import { CloudApiService } from '../../utils'
2
- import { IDeleteImage } from '../../types'
3
- import { option } from 'yargs'
4
-
5
- const tcbService = CloudApiService.getInstance('tcb')
6
-
7
- export const deleteImage = async (options: IDeleteImage) => {
8
- const { Result } = await tcbService.request('DeleteCloudBaseRunImage', {
9
- EnvId: options.envId,
10
- ImageUrl: options.imageUrl
11
- })
12
-
13
- return Result
1
+ import { CloudApiService } from '../../utils'
2
+ import { IDeleteImage } from '../../types'
3
+ import { option } from 'yargs'
4
+
5
+ const tcbService = CloudApiService.getInstance('tcb')
6
+
7
+ export const deleteImage = async (options: IDeleteImage) => {
8
+ const { Result } = await tcbService.request('DeleteCloudBaseRunImage', {
9
+ EnvId: options.envId,
10
+ ImageUrl: options.imageUrl
11
+ })
12
+
13
+ return Result
14
14
  }