@cloudbase/cli 2.0.0 → 2.0.1

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 (206) hide show
  1. package/.editorconfig +9 -9
  2. package/.eslintignore +7 -7
  3. package/.eslintrc +35 -35
  4. package/.prettierrc.js +29 -29
  5. package/.vscode/launch.json +16 -16
  6. package/LICENSE +5 -5
  7. package/README.md +35 -35
  8. package/bin/cloudbase.js +5 -5
  9. package/bin/tcb.js +6 -4
  10. package/changelog.md +6 -6
  11. package/jest.config.js +17 -17
  12. package/lib/commands/account/login.js +18 -18
  13. package/lib/commands/storage/storage.js +1 -1
  14. package/lib/env/login.js +7 -7
  15. package/lib/run/service/deployPackage.js +6 -4
  16. package/lib/utils/net/http-request.js +4 -4
  17. package/lib/utils/tcbrApi/tcbr-cloud-api/request.js +3 -3
  18. package/package.json +16 -16
  19. package/post-install.js +61 -61
  20. package/runtime/nodejs/bootstrap.js +255 -255
  21. package/runtime/nodejs/runtime.js +183 -183
  22. package/src/auth/index.ts +1 -1
  23. package/src/auth/login.ts +91 -91
  24. package/src/auth/logout.ts +7 -7
  25. package/src/commands/account/index.ts +2 -2
  26. package/src/commands/account/login.ts +192 -192
  27. package/src/commands/account/logout.ts +24 -24
  28. package/src/commands/common.ts +246 -246
  29. package/src/commands/env/base.ts +90 -90
  30. package/src/commands/env/create.ts +92 -92
  31. package/src/commands/env/domain.ts +186 -186
  32. package/src/commands/env/index.ts +4 -4
  33. package/src/commands/env/login.ts +235 -235
  34. package/src/commands/framework/index.ts +124 -124
  35. package/src/commands/functions/alias/getRoute.ts +76 -76
  36. package/src/commands/functions/alias/index.ts +2 -2
  37. package/src/commands/functions/alias/setRoute.ts +82 -82
  38. package/src/commands/functions/code-download.ts +100 -100
  39. package/src/commands/functions/code-update.ts +62 -62
  40. package/src/commands/functions/concurrency/delete.ts +45 -45
  41. package/src/commands/functions/concurrency/index.ts +2 -2
  42. package/src/commands/functions/concurrency/list.ts +58 -58
  43. package/src/commands/functions/concurrency/set.ts +47 -47
  44. package/src/commands/functions/config-update.ts +76 -76
  45. package/src/commands/functions/copy.ts +62 -62
  46. package/src/commands/functions/delete.ts +79 -79
  47. package/src/commands/functions/deploy.ts +293 -293
  48. package/src/commands/functions/detail.ts +138 -138
  49. package/src/commands/functions/index.ts +16 -16
  50. package/src/commands/functions/invoke.ts +121 -121
  51. package/src/commands/functions/layer/bind.ts +182 -182
  52. package/src/commands/functions/layer/common.ts +8 -8
  53. package/src/commands/functions/layer/create.ts +49 -49
  54. package/src/commands/functions/layer/delete.ts +73 -73
  55. package/src/commands/functions/layer/download.ts +92 -92
  56. package/src/commands/functions/layer/index.ts +7 -7
  57. package/src/commands/functions/layer/list.ts +94 -94
  58. package/src/commands/functions/layer/sort.ts +76 -76
  59. package/src/commands/functions/list.ts +68 -68
  60. package/src/commands/functions/log.ts +148 -148
  61. package/src/commands/functions/run.ts +249 -249
  62. package/src/commands/functions/trigger-create.ts +79 -79
  63. package/src/commands/functions/trigger-delete.ts +105 -105
  64. package/src/commands/functions/version/index.ts +1 -1
  65. package/src/commands/functions/version/list.ts +73 -73
  66. package/src/commands/functions/version/publish.ts +43 -43
  67. package/src/commands/gateway/create.ts +109 -109
  68. package/src/commands/gateway/delete.ts +81 -81
  69. package/src/commands/gateway/domain.ts +159 -159
  70. package/src/commands/gateway/index.ts +5 -5
  71. package/src/commands/gateway/list.ts +76 -76
  72. package/src/commands/gateway/switch.ts +107 -107
  73. package/src/commands/helpers/index.ts +2 -2
  74. package/src/commands/helpers/init.ts +431 -431
  75. package/src/commands/helpers/new.ts +117 -117
  76. package/src/commands/helpers/open.ts +67 -67
  77. package/src/commands/hosting/hosting.ts +360 -360
  78. package/src/commands/index.ts +13 -13
  79. package/src/commands/lowcode/app.ts +34 -34
  80. package/src/commands/lowcode/comps.ts +322 -322
  81. package/src/commands/lowcode/index.ts +1 -1
  82. package/src/commands/lowcode/utils.ts +24 -24
  83. package/src/commands/run/image/index.ts +4 -4
  84. package/src/commands/run/standalonegateway/common.ts +7 -7
  85. package/src/commands/run/standalonegateway/create.ts +85 -85
  86. package/src/commands/run/standalonegateway/destroy.ts +59 -59
  87. package/src/commands/run/standalonegateway/index.ts +4 -4
  88. package/src/commands/run/standalonegateway/list.ts +53 -53
  89. package/src/commands/run/standalonegateway/package.ts +62 -62
  90. package/src/commands/run/standalonegateway/turn.ts +63 -63
  91. package/src/commands/run/version/index.ts +4 -4
  92. package/src/commands/smart.ts +132 -132
  93. package/src/commands/storage/storage.ts +464 -464
  94. package/src/commands/third/thirdAttach.ts +49 -49
  95. package/src/completion/index.ts +13 -13
  96. package/src/decorators/captureError.ts +25 -25
  97. package/src/decorators/constants.ts +12 -12
  98. package/src/decorators/deprecate.ts +25 -25
  99. package/src/decorators/guard.ts +42 -42
  100. package/src/decorators/index.ts +7 -7
  101. package/src/decorators/injectParams.ts +54 -54
  102. package/src/decorators/params/common.ts +28 -28
  103. package/src/decorators/params/index.ts +35 -35
  104. package/src/env/domain.ts +33 -33
  105. package/src/env/index.ts +63 -63
  106. package/src/env/login.ts +80 -80
  107. package/src/error.ts +36 -36
  108. package/src/function/alias.ts +43 -43
  109. package/src/function/base.ts +253 -253
  110. package/src/function/code.ts +55 -55
  111. package/src/function/concurrency.ts +57 -57
  112. package/src/function/create.ts +78 -78
  113. package/src/function/delete.ts +42 -42
  114. package/src/function/index.ts +10 -10
  115. package/src/function/layer/attach.ts +68 -68
  116. package/src/function/layer/create.ts +63 -63
  117. package/src/function/layer/delete.ts +21 -21
  118. package/src/function/layer/download.ts +54 -54
  119. package/src/function/layer/index.ts +7 -7
  120. package/src/function/layer/list.ts +32 -32
  121. package/src/function/layer/sort.ts +24 -24
  122. package/src/function/trigger.ts +97 -97
  123. package/src/function/update.ts +35 -35
  124. package/src/function/version.ts +38 -38
  125. package/src/function/vpc.ts +22 -22
  126. package/src/gateway/index.ts +137 -137
  127. package/src/hosting.ts +212 -212
  128. package/src/index.ts +13 -13
  129. package/src/logger.ts +17 -17
  130. package/src/run/create.ts +23 -23
  131. package/src/run/delete.ts +15 -15
  132. package/src/run/image/build.ts +36 -36
  133. package/src/run/image/delete.ts +13 -13
  134. package/src/run/image/index.ts +3 -3
  135. package/src/run/image/info.ts +26 -26
  136. package/src/run/list.ts +29 -29
  137. package/src/run/repo.ts +24 -24
  138. package/src/run/service/deployPackage.ts +6 -4
  139. package/src/run/standalonegateway/create.ts +24 -24
  140. package/src/run/standalonegateway/destroy.ts +19 -19
  141. package/src/run/standalonegateway/index.ts +4 -4
  142. package/src/run/standalonegateway/list.ts +74 -74
  143. package/src/run/standalonegateway/package/list.ts +24 -24
  144. package/src/run/standalonegateway/turn/index.ts +1 -1
  145. package/src/run/standalonegateway/turn/off.ts +19 -19
  146. package/src/run/standalonegateway/turn/on.ts +19 -19
  147. package/src/run/version/create.ts +68 -68
  148. package/src/run/version/delete.ts +15 -15
  149. package/src/run/version/index.ts +5 -5
  150. package/src/run/version/list.ts +16 -16
  151. package/src/run/version/modify.ts +16 -16
  152. package/src/run/version/repo.ts +27 -27
  153. package/src/run/version/update.ts +58 -58
  154. package/src/storage.ts +114 -114
  155. package/src/third/index.ts +12 -12
  156. package/src/utils/auth.ts +15 -15
  157. package/src/utils/cli-table.ts +23 -23
  158. package/src/utils/config.ts +39 -39
  159. package/src/utils/env.ts +244 -244
  160. package/src/utils/fs/del.ts +5 -5
  161. package/src/utils/fs/index.ts +71 -71
  162. package/src/utils/function-packer.ts +97 -97
  163. package/src/utils/log.ts +81 -81
  164. package/src/utils/net/cloud-api-request.ts +62 -62
  165. package/src/utils/net/credential.ts +53 -53
  166. package/src/utils/net/http-request.ts +84 -84
  167. package/src/utils/net/index.ts +4 -4
  168. package/src/utils/net/manager-service.ts +36 -36
  169. package/src/utils/net/proxy.ts +6 -6
  170. package/src/utils/notice.ts +28 -28
  171. package/src/utils/output/highlight.ts +5 -5
  172. package/src/utils/output/index.ts +2 -2
  173. package/src/utils/output/link.ts +10 -10
  174. package/src/utils/output/loading.ts +82 -82
  175. package/src/utils/parallel.ts +82 -82
  176. package/src/utils/platform/index.ts +2 -2
  177. package/src/utils/platform/mac.ts +21 -21
  178. package/src/utils/platform/os.ts +64 -64
  179. package/src/utils/platform/port.ts +10 -10
  180. package/src/utils/progress-bar.ts +38 -38
  181. package/src/utils/prompt/select.ts +59 -59
  182. package/src/utils/reporter/agree.ts +20 -20
  183. package/src/utils/reporter/download.ts +26 -26
  184. package/src/utils/reporter/index.ts +3 -3
  185. package/src/utils/reporter/usage.ts +20 -20
  186. package/src/utils/store/auth.ts +49 -49
  187. package/src/utils/store/common.ts +8 -8
  188. package/src/utils/store/db.ts +68 -68
  189. package/src/utils/store/index.ts +4 -4
  190. package/src/utils/store/usage.ts +12 -12
  191. package/src/utils/tcbrApi/tcbr-cloud-api/request.ts +13 -13
  192. package/src/utils/template.ts +170 -170
  193. package/src/utils/tools/encoding.ts +8 -8
  194. package/src/utils/tools/index.ts +4 -4
  195. package/src/utils/tools/object.ts +33 -33
  196. package/src/utils/tools/time.ts +38 -38
  197. package/src/utils/tools/uid.ts +19 -19
  198. package/templates/html/loginFail.html +90 -90
  199. package/templates/html/loginSuccess.html +86 -86
  200. package/templates/server/node/_gitignore +54 -54
  201. package/templates/server/node/cloudbaserc.json +10 -10
  202. package/templates/server/node/index.js +5 -5
  203. package/templates/server/node/package.json +9 -9
  204. package/tsconfig.json +19 -19
  205. package/tsconfig.test.json +13 -13
  206. package/.vscode/settings.json +0 -3
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
  }