@cloudbase/cli 2.0.0 → 2.0.3-alpha.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.
- package/.editorconfig +9 -9
- package/.eslintignore +7 -7
- package/.eslintrc +35 -35
- package/.prettierrc.js +29 -29
- package/.vscode/launch.json +16 -16
- package/LICENSE +5 -5
- package/README.md +35 -35
- package/bin/cloudbase.js +5 -5
- package/bin/tcb.js +6 -4
- package/changelog.md +6 -6
- package/jest.config.js +17 -17
- package/lib/commands/account/login.js +18 -18
- package/lib/commands/storage/storage.js +1 -1
- package/lib/env/login.js +7 -7
- package/lib/run/service/deployPackage.js +6 -4
- package/lib/utils/net/http-request.js +4 -4
- package/lib/utils/tcbrApi/tcbr-cloud-api/request.js +3 -3
- package/package.json +17 -17
- package/post-install.js +61 -61
- package/runtime/nodejs/bootstrap.js +255 -255
- package/runtime/nodejs/runtime.js +183 -183
- package/src/auth/index.ts +1 -1
- package/src/auth/login.ts +91 -91
- package/src/auth/logout.ts +7 -7
- package/src/commands/account/index.ts +2 -2
- package/src/commands/account/login.ts +192 -192
- package/src/commands/account/logout.ts +24 -24
- package/src/commands/common.ts +246 -246
- package/src/commands/env/base.ts +90 -90
- package/src/commands/env/create.ts +92 -92
- package/src/commands/env/domain.ts +186 -186
- package/src/commands/env/index.ts +4 -4
- package/src/commands/env/login.ts +235 -235
- package/src/commands/framework/index.ts +124 -124
- package/src/commands/functions/alias/getRoute.ts +76 -76
- package/src/commands/functions/alias/index.ts +2 -2
- package/src/commands/functions/alias/setRoute.ts +82 -82
- package/src/commands/functions/code-download.ts +100 -100
- package/src/commands/functions/code-update.ts +62 -62
- package/src/commands/functions/concurrency/delete.ts +45 -45
- package/src/commands/functions/concurrency/index.ts +2 -2
- package/src/commands/functions/concurrency/list.ts +58 -58
- package/src/commands/functions/concurrency/set.ts +47 -47
- package/src/commands/functions/config-update.ts +76 -76
- package/src/commands/functions/copy.ts +62 -62
- package/src/commands/functions/delete.ts +79 -79
- package/src/commands/functions/deploy.ts +293 -293
- package/src/commands/functions/detail.ts +138 -138
- package/src/commands/functions/index.ts +16 -16
- package/src/commands/functions/invoke.ts +121 -121
- package/src/commands/functions/layer/bind.ts +182 -182
- package/src/commands/functions/layer/common.ts +8 -8
- package/src/commands/functions/layer/create.ts +49 -49
- package/src/commands/functions/layer/delete.ts +73 -73
- package/src/commands/functions/layer/download.ts +92 -92
- package/src/commands/functions/layer/index.ts +7 -7
- package/src/commands/functions/layer/list.ts +94 -94
- package/src/commands/functions/layer/sort.ts +76 -76
- package/src/commands/functions/list.ts +68 -68
- package/src/commands/functions/log.ts +148 -148
- package/src/commands/functions/run.ts +249 -249
- package/src/commands/functions/trigger-create.ts +79 -79
- package/src/commands/functions/trigger-delete.ts +105 -105
- package/src/commands/functions/version/index.ts +1 -1
- package/src/commands/functions/version/list.ts +73 -73
- package/src/commands/functions/version/publish.ts +43 -43
- package/src/commands/gateway/create.ts +109 -109
- package/src/commands/gateway/delete.ts +81 -81
- package/src/commands/gateway/domain.ts +159 -159
- package/src/commands/gateway/index.ts +5 -5
- package/src/commands/gateway/list.ts +76 -76
- package/src/commands/gateway/switch.ts +107 -107
- package/src/commands/helpers/index.ts +2 -2
- package/src/commands/helpers/init.ts +431 -431
- package/src/commands/helpers/new.ts +117 -117
- package/src/commands/helpers/open.ts +67 -67
- package/src/commands/hosting/hosting.ts +360 -360
- package/src/commands/index.ts +13 -13
- package/src/commands/lowcode/app.ts +34 -34
- package/src/commands/lowcode/comps.ts +322 -322
- package/src/commands/lowcode/index.ts +1 -1
- package/src/commands/lowcode/utils.ts +24 -24
- package/src/commands/run/image/index.ts +4 -4
- package/src/commands/run/standalonegateway/common.ts +7 -7
- package/src/commands/run/standalonegateway/create.ts +85 -85
- package/src/commands/run/standalonegateway/destroy.ts +59 -59
- package/src/commands/run/standalonegateway/index.ts +4 -4
- package/src/commands/run/standalonegateway/list.ts +53 -53
- package/src/commands/run/standalonegateway/package.ts +62 -62
- package/src/commands/run/standalonegateway/turn.ts +63 -63
- package/src/commands/run/version/index.ts +4 -4
- package/src/commands/smart.ts +132 -132
- package/src/commands/storage/storage.ts +464 -464
- package/src/commands/third/thirdAttach.ts +49 -49
- package/src/completion/index.ts +13 -13
- package/src/decorators/captureError.ts +25 -25
- package/src/decorators/constants.ts +12 -12
- package/src/decorators/deprecate.ts +25 -25
- package/src/decorators/guard.ts +42 -42
- package/src/decorators/index.ts +7 -7
- package/src/decorators/injectParams.ts +54 -54
- package/src/decorators/params/common.ts +28 -28
- package/src/decorators/params/index.ts +35 -35
- package/src/env/domain.ts +33 -33
- package/src/env/index.ts +63 -63
- package/src/env/login.ts +80 -80
- package/src/error.ts +36 -36
- package/src/function/alias.ts +43 -43
- package/src/function/base.ts +253 -253
- package/src/function/code.ts +55 -55
- package/src/function/concurrency.ts +57 -57
- package/src/function/create.ts +78 -78
- package/src/function/delete.ts +42 -42
- package/src/function/index.ts +10 -10
- package/src/function/layer/attach.ts +68 -68
- package/src/function/layer/create.ts +63 -63
- package/src/function/layer/delete.ts +21 -21
- package/src/function/layer/download.ts +54 -54
- package/src/function/layer/index.ts +7 -7
- package/src/function/layer/list.ts +32 -32
- package/src/function/layer/sort.ts +24 -24
- package/src/function/trigger.ts +97 -97
- package/src/function/update.ts +35 -35
- package/src/function/version.ts +38 -38
- package/src/function/vpc.ts +22 -22
- package/src/gateway/index.ts +137 -137
- package/src/hosting.ts +212 -212
- package/src/index.ts +13 -13
- package/src/logger.ts +17 -17
- package/src/run/create.ts +23 -23
- package/src/run/delete.ts +15 -15
- package/src/run/image/build.ts +36 -36
- package/src/run/image/delete.ts +13 -13
- package/src/run/image/index.ts +3 -3
- package/src/run/image/info.ts +26 -26
- package/src/run/list.ts +29 -29
- package/src/run/repo.ts +24 -24
- package/src/run/service/deployPackage.ts +6 -4
- package/src/run/standalonegateway/create.ts +24 -24
- package/src/run/standalonegateway/destroy.ts +19 -19
- package/src/run/standalonegateway/index.ts +4 -4
- package/src/run/standalonegateway/list.ts +74 -74
- package/src/run/standalonegateway/package/list.ts +24 -24
- package/src/run/standalonegateway/turn/index.ts +1 -1
- package/src/run/standalonegateway/turn/off.ts +19 -19
- package/src/run/standalonegateway/turn/on.ts +19 -19
- package/src/run/version/create.ts +68 -68
- package/src/run/version/delete.ts +15 -15
- package/src/run/version/index.ts +5 -5
- package/src/run/version/list.ts +16 -16
- package/src/run/version/modify.ts +16 -16
- package/src/run/version/repo.ts +27 -27
- package/src/run/version/update.ts +58 -58
- package/src/storage.ts +114 -114
- package/src/third/index.ts +12 -12
- package/src/utils/auth.ts +15 -15
- package/src/utils/cli-table.ts +23 -23
- package/src/utils/config.ts +39 -39
- package/src/utils/env.ts +244 -244
- package/src/utils/fs/del.ts +5 -5
- package/src/utils/fs/index.ts +71 -71
- package/src/utils/function-packer.ts +97 -97
- package/src/utils/log.ts +81 -81
- package/src/utils/net/cloud-api-request.ts +62 -62
- package/src/utils/net/credential.ts +53 -53
- package/src/utils/net/http-request.ts +84 -84
- package/src/utils/net/index.ts +4 -4
- package/src/utils/net/manager-service.ts +36 -36
- package/src/utils/net/proxy.ts +6 -6
- package/src/utils/notice.ts +28 -28
- package/src/utils/output/highlight.ts +5 -5
- package/src/utils/output/index.ts +2 -2
- package/src/utils/output/link.ts +10 -10
- package/src/utils/output/loading.ts +82 -82
- package/src/utils/parallel.ts +82 -82
- package/src/utils/platform/index.ts +2 -2
- package/src/utils/platform/mac.ts +21 -21
- package/src/utils/platform/os.ts +64 -64
- package/src/utils/platform/port.ts +10 -10
- package/src/utils/progress-bar.ts +38 -38
- package/src/utils/prompt/select.ts +59 -59
- package/src/utils/reporter/agree.ts +20 -20
- package/src/utils/reporter/download.ts +26 -26
- package/src/utils/reporter/index.ts +3 -3
- package/src/utils/reporter/usage.ts +20 -20
- package/src/utils/store/auth.ts +49 -49
- package/src/utils/store/common.ts +8 -8
- package/src/utils/store/db.ts +68 -68
- package/src/utils/store/index.ts +4 -4
- package/src/utils/store/usage.ts +12 -12
- package/src/utils/tcbrApi/tcbr-cloud-api/request.ts +13 -13
- package/src/utils/template.ts +170 -170
- package/src/utils/tools/encoding.ts +8 -8
- package/src/utils/tools/index.ts +4 -4
- package/src/utils/tools/object.ts +33 -33
- package/src/utils/tools/time.ts +38 -38
- package/src/utils/tools/uid.ts +19 -19
- package/templates/html/loginFail.html +90 -90
- package/templates/html/loginSuccess.html +86 -86
- package/templates/server/node/_gitignore +54 -54
- package/templates/server/node/cloudbaserc.json +10 -10
- package/templates/server/node/index.js +5 -5
- package/templates/server/node/package.json +9 -9
- package/tsconfig.json +19 -19
- package/tsconfig.test.json +13 -13
- package/.vscode/settings.json +0 -3
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
import { prompt } from 'enquirer'
|
|
2
|
-
import { Command, ICommand } from '../common'
|
|
3
|
-
import { loadingFactory } from '../../utils'
|
|
4
|
-
import { InjectParams, EnvId, ArgsOptions } from '../../decorators'
|
|
5
|
-
import { deleteGateway, queryGateway } from '../../gateway'
|
|
6
|
-
|
|
7
|
-
@ICommand()
|
|
8
|
-
export class DeleteServiceCommand extends Command {
|
|
9
|
-
get options() {
|
|
10
|
-
return {
|
|
11
|
-
cmd: 'service',
|
|
12
|
-
childCmd: 'delete',
|
|
13
|
-
deprecateCmd: 'service:delete',
|
|
14
|
-
options: [
|
|
15
|
-
{
|
|
16
|
-
flags: '-e, --envId <envId>',
|
|
17
|
-
desc: '环境 Id'
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
flags: '-p, --service-path <servicePath>',
|
|
21
|
-
desc: 'HTTP 访问服务路径,删除此路径对应的 HTTP 访问服务'
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
flags: '-i, --service-id <serviceId>',
|
|
25
|
-
desc: 'HTTP 访问服务 Id,删除此 Id 对应的 HTTP 访问服务'
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
flags: '-n, --name <name>',
|
|
29
|
-
desc: '云函数函数名称,删除此函数绑定的所有 HTTP 访问服务'
|
|
30
|
-
}
|
|
31
|
-
],
|
|
32
|
-
desc: '删除 HTTP 访问服务'
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
@InjectParams()
|
|
37
|
-
async execute(@EnvId() envId, @ArgsOptions() options) {
|
|
38
|
-
let { servicePath, serviceId, name } = options
|
|
39
|
-
|
|
40
|
-
// 当没有指定要删除的服务时,获取所有服务列表,并提示
|
|
41
|
-
if (!servicePath && !serviceId && (!name || typeof name !== 'string')) {
|
|
42
|
-
const { APISet: allServices } = await queryGateway({
|
|
43
|
-
envId
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
const { selected } = await prompt<any>({
|
|
47
|
-
type: 'select',
|
|
48
|
-
name: 'selected',
|
|
49
|
-
message: '请选择需要删除的 Service',
|
|
50
|
-
choices: allServices.map((item) => ({
|
|
51
|
-
name: `函数名:${item.Name}/路径:${item.Path}`,
|
|
52
|
-
value: item.APIId
|
|
53
|
-
})),
|
|
54
|
-
result(choices) {
|
|
55
|
-
return Object.values(this.map(choices)) as any
|
|
56
|
-
}
|
|
57
|
-
})
|
|
58
|
-
serviceId = selected?.[0]
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (servicePath) {
|
|
62
|
-
servicePath = servicePath[0] === '/' ? servicePath : `/${servicePath}`
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const loading = loadingFactory()
|
|
66
|
-
loading.start('HTTP 访问服务删除中...')
|
|
67
|
-
|
|
68
|
-
try {
|
|
69
|
-
await deleteGateway({
|
|
70
|
-
envId,
|
|
71
|
-
name,
|
|
72
|
-
path: servicePath,
|
|
73
|
-
gatewayId: serviceId
|
|
74
|
-
})
|
|
75
|
-
loading.succeed('HTTP 访问服务删除成功!')
|
|
76
|
-
} catch (e) {
|
|
77
|
-
loading.stop()
|
|
78
|
-
throw e
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
1
|
+
import { prompt } from 'enquirer'
|
|
2
|
+
import { Command, ICommand } from '../common'
|
|
3
|
+
import { loadingFactory } from '../../utils'
|
|
4
|
+
import { InjectParams, EnvId, ArgsOptions } from '../../decorators'
|
|
5
|
+
import { deleteGateway, queryGateway } from '../../gateway'
|
|
6
|
+
|
|
7
|
+
@ICommand()
|
|
8
|
+
export class DeleteServiceCommand extends Command {
|
|
9
|
+
get options() {
|
|
10
|
+
return {
|
|
11
|
+
cmd: 'service',
|
|
12
|
+
childCmd: 'delete',
|
|
13
|
+
deprecateCmd: 'service:delete',
|
|
14
|
+
options: [
|
|
15
|
+
{
|
|
16
|
+
flags: '-e, --envId <envId>',
|
|
17
|
+
desc: '环境 Id'
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
flags: '-p, --service-path <servicePath>',
|
|
21
|
+
desc: 'HTTP 访问服务路径,删除此路径对应的 HTTP 访问服务'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
flags: '-i, --service-id <serviceId>',
|
|
25
|
+
desc: 'HTTP 访问服务 Id,删除此 Id 对应的 HTTP 访问服务'
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
flags: '-n, --name <name>',
|
|
29
|
+
desc: '云函数函数名称,删除此函数绑定的所有 HTTP 访问服务'
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
desc: '删除 HTTP 访问服务'
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@InjectParams()
|
|
37
|
+
async execute(@EnvId() envId, @ArgsOptions() options) {
|
|
38
|
+
let { servicePath, serviceId, name } = options
|
|
39
|
+
|
|
40
|
+
// 当没有指定要删除的服务时,获取所有服务列表,并提示
|
|
41
|
+
if (!servicePath && !serviceId && (!name || typeof name !== 'string')) {
|
|
42
|
+
const { APISet: allServices } = await queryGateway({
|
|
43
|
+
envId
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
const { selected } = await prompt<any>({
|
|
47
|
+
type: 'select',
|
|
48
|
+
name: 'selected',
|
|
49
|
+
message: '请选择需要删除的 Service',
|
|
50
|
+
choices: allServices.map((item) => ({
|
|
51
|
+
name: `函数名:${item.Name}/路径:${item.Path}`,
|
|
52
|
+
value: item.APIId
|
|
53
|
+
})),
|
|
54
|
+
result(choices) {
|
|
55
|
+
return Object.values(this.map(choices)) as any
|
|
56
|
+
}
|
|
57
|
+
})
|
|
58
|
+
serviceId = selected?.[0]
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (servicePath) {
|
|
62
|
+
servicePath = servicePath[0] === '/' ? servicePath : `/${servicePath}`
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const loading = loadingFactory()
|
|
66
|
+
loading.start('HTTP 访问服务删除中...')
|
|
67
|
+
|
|
68
|
+
try {
|
|
69
|
+
await deleteGateway({
|
|
70
|
+
envId,
|
|
71
|
+
name,
|
|
72
|
+
path: servicePath,
|
|
73
|
+
gatewayId: serviceId
|
|
74
|
+
})
|
|
75
|
+
loading.succeed('HTTP 访问服务删除成功!')
|
|
76
|
+
} catch (e) {
|
|
77
|
+
loading.stop()
|
|
78
|
+
throw e
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -1,159 +1,159 @@
|
|
|
1
|
-
import { Command, ICommand } from '../common'
|
|
2
|
-
import { CloudBaseError } from '../../error'
|
|
3
|
-
import { loadingFactory, printHorizontalTable, formatDate } from '../../utils'
|
|
4
|
-
import { InjectParams, EnvId, ArgsParams, ArgsOptions, Log, Logger } from '../../decorators'
|
|
5
|
-
import { bindGatewayDomain, queryGatewayDomain, unbindGatewayDomain } from '../../gateway'
|
|
6
|
-
|
|
7
|
-
const SERVICE_STATUS_MAP = {
|
|
8
|
-
1: '部署中',
|
|
9
|
-
2: '部署失败',
|
|
10
|
-
3: '部署成功',
|
|
11
|
-
4: '删除中',
|
|
12
|
-
5: '删除失败'
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// 暂时无法支持
|
|
16
|
-
export class BindCustomDomainCommand extends Command {
|
|
17
|
-
get options() {
|
|
18
|
-
return {
|
|
19
|
-
cmd: 'service',
|
|
20
|
-
childCmd: { cmd: 'domain', desc: 'HTTP 访问服务域名管理' },
|
|
21
|
-
childSubCmd: 'bind <domain>',
|
|
22
|
-
deprecateCmd: 'service:domain:bind <domain>',
|
|
23
|
-
options: [
|
|
24
|
-
{
|
|
25
|
-
flags: '-e, --envId <envId>',
|
|
26
|
-
desc: '环境 Id'
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
desc: '绑定自定义HTTP 访问服务域名'
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
@InjectParams()
|
|
34
|
-
async execute(@EnvId() envId, @ArgsParams() params) {
|
|
35
|
-
const domain = params?.[0]
|
|
36
|
-
|
|
37
|
-
console.log(domain)
|
|
38
|
-
|
|
39
|
-
if (!domain) {
|
|
40
|
-
throw new CloudBaseError('请指定需要绑定的HTTP 访问服务域名!')
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const loading = loadingFactory()
|
|
44
|
-
loading.start(`HTTP 访问服务域名 [${domain}] 绑定中...`)
|
|
45
|
-
|
|
46
|
-
try {
|
|
47
|
-
await bindGatewayDomain({
|
|
48
|
-
envId,
|
|
49
|
-
domain
|
|
50
|
-
})
|
|
51
|
-
loading.succeed(`HTTP 访问服务域名[${domain}] 绑定成功!`)
|
|
52
|
-
} catch (e) {
|
|
53
|
-
loading.stop()
|
|
54
|
-
throw e
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
@ICommand()
|
|
60
|
-
export class GetCustomDomainsCommand extends Command {
|
|
61
|
-
get options() {
|
|
62
|
-
return {
|
|
63
|
-
cmd: 'service',
|
|
64
|
-
childCmd: 'domain',
|
|
65
|
-
childSubCmd: 'list',
|
|
66
|
-
deprecateCmd: 'service:domain:list',
|
|
67
|
-
options: [
|
|
68
|
-
{
|
|
69
|
-
flags: '-e, --envId <envId>',
|
|
70
|
-
desc: '环境 Id'
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
flags: '-d, --domain <domain>',
|
|
74
|
-
desc: '域名'
|
|
75
|
-
}
|
|
76
|
-
],
|
|
77
|
-
desc: '查询 HTTP 访问服务自定义域名'
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
@InjectParams()
|
|
82
|
-
async execute(@EnvId() envId, @ArgsOptions() options, @Log() log: Logger) {
|
|
83
|
-
const { domain: domainName } = options
|
|
84
|
-
|
|
85
|
-
if (!envId && !domainName) {
|
|
86
|
-
throw new CloudBaseError('请指定需要查询的环境 ID 或HTTP 访问服务域名!')
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
const loading = loadingFactory()
|
|
90
|
-
loading.start('查询HTTP 访问服务域名中...')
|
|
91
|
-
|
|
92
|
-
try {
|
|
93
|
-
const res = await queryGatewayDomain({
|
|
94
|
-
envId,
|
|
95
|
-
domain: domainName
|
|
96
|
-
})
|
|
97
|
-
|
|
98
|
-
loading.succeed('查询HTTP 访问服务域名成功!')
|
|
99
|
-
|
|
100
|
-
if (!res?.ServiceSet?.length) {
|
|
101
|
-
log.info('HTTP 访问服务域名为空!')
|
|
102
|
-
return
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const head = ['域名', '状态', '创建时间']
|
|
106
|
-
const tableData = res.ServiceSet.map((item) => [
|
|
107
|
-
item.Domain,
|
|
108
|
-
SERVICE_STATUS_MAP[item.Status],
|
|
109
|
-
formatDate(item.OpenTime * 1000, 'yyyy-MM-dd hh:mm:ss')
|
|
110
|
-
])
|
|
111
|
-
printHorizontalTable(head, tableData)
|
|
112
|
-
} catch (e) {
|
|
113
|
-
loading.stop()
|
|
114
|
-
throw e
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
@ICommand()
|
|
120
|
-
export class UnbindCustomDomainCommand extends Command {
|
|
121
|
-
get options() {
|
|
122
|
-
return {
|
|
123
|
-
cmd: 'service',
|
|
124
|
-
childCmd: 'domain',
|
|
125
|
-
childSubCmd: 'unbind <domain>',
|
|
126
|
-
deprecateCmd: 'service:domain:unbind <domain>',
|
|
127
|
-
options: [
|
|
128
|
-
{
|
|
129
|
-
flags: '-e, --envId <envId>',
|
|
130
|
-
desc: '环境 Id'
|
|
131
|
-
}
|
|
132
|
-
],
|
|
133
|
-
desc: '解绑自定义HTTP 访问服务域名'
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
@InjectParams()
|
|
138
|
-
async execute(@EnvId() envId, @ArgsParams() params) {
|
|
139
|
-
const domain = params?.[0]
|
|
140
|
-
|
|
141
|
-
if (!domain) {
|
|
142
|
-
throw new CloudBaseError('请指定需要解绑的HTTP 访问服务域名!')
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
const loading = loadingFactory()
|
|
146
|
-
loading.start(`HTTP Service域名 [${domain}] 解绑中...`)
|
|
147
|
-
|
|
148
|
-
try {
|
|
149
|
-
await unbindGatewayDomain({
|
|
150
|
-
envId,
|
|
151
|
-
domain
|
|
152
|
-
})
|
|
153
|
-
loading.succeed(`HTTP Service域名 [${domain}] 解绑成功!`)
|
|
154
|
-
} catch (e) {
|
|
155
|
-
loading.stop()
|
|
156
|
-
throw e
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
1
|
+
import { Command, ICommand } from '../common'
|
|
2
|
+
import { CloudBaseError } from '../../error'
|
|
3
|
+
import { loadingFactory, printHorizontalTable, formatDate } from '../../utils'
|
|
4
|
+
import { InjectParams, EnvId, ArgsParams, ArgsOptions, Log, Logger } from '../../decorators'
|
|
5
|
+
import { bindGatewayDomain, queryGatewayDomain, unbindGatewayDomain } from '../../gateway'
|
|
6
|
+
|
|
7
|
+
const SERVICE_STATUS_MAP = {
|
|
8
|
+
1: '部署中',
|
|
9
|
+
2: '部署失败',
|
|
10
|
+
3: '部署成功',
|
|
11
|
+
4: '删除中',
|
|
12
|
+
5: '删除失败'
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// 暂时无法支持
|
|
16
|
+
export class BindCustomDomainCommand extends Command {
|
|
17
|
+
get options() {
|
|
18
|
+
return {
|
|
19
|
+
cmd: 'service',
|
|
20
|
+
childCmd: { cmd: 'domain', desc: 'HTTP 访问服务域名管理' },
|
|
21
|
+
childSubCmd: 'bind <domain>',
|
|
22
|
+
deprecateCmd: 'service:domain:bind <domain>',
|
|
23
|
+
options: [
|
|
24
|
+
{
|
|
25
|
+
flags: '-e, --envId <envId>',
|
|
26
|
+
desc: '环境 Id'
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
desc: '绑定自定义HTTP 访问服务域名'
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@InjectParams()
|
|
34
|
+
async execute(@EnvId() envId, @ArgsParams() params) {
|
|
35
|
+
const domain = params?.[0]
|
|
36
|
+
|
|
37
|
+
console.log(domain)
|
|
38
|
+
|
|
39
|
+
if (!domain) {
|
|
40
|
+
throw new CloudBaseError('请指定需要绑定的HTTP 访问服务域名!')
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const loading = loadingFactory()
|
|
44
|
+
loading.start(`HTTP 访问服务域名 [${domain}] 绑定中...`)
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
await bindGatewayDomain({
|
|
48
|
+
envId,
|
|
49
|
+
domain
|
|
50
|
+
})
|
|
51
|
+
loading.succeed(`HTTP 访问服务域名[${domain}] 绑定成功!`)
|
|
52
|
+
} catch (e) {
|
|
53
|
+
loading.stop()
|
|
54
|
+
throw e
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@ICommand()
|
|
60
|
+
export class GetCustomDomainsCommand extends Command {
|
|
61
|
+
get options() {
|
|
62
|
+
return {
|
|
63
|
+
cmd: 'service',
|
|
64
|
+
childCmd: 'domain',
|
|
65
|
+
childSubCmd: 'list',
|
|
66
|
+
deprecateCmd: 'service:domain:list',
|
|
67
|
+
options: [
|
|
68
|
+
{
|
|
69
|
+
flags: '-e, --envId <envId>',
|
|
70
|
+
desc: '环境 Id'
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
flags: '-d, --domain <domain>',
|
|
74
|
+
desc: '域名'
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
desc: '查询 HTTP 访问服务自定义域名'
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@InjectParams()
|
|
82
|
+
async execute(@EnvId() envId, @ArgsOptions() options, @Log() log: Logger) {
|
|
83
|
+
const { domain: domainName } = options
|
|
84
|
+
|
|
85
|
+
if (!envId && !domainName) {
|
|
86
|
+
throw new CloudBaseError('请指定需要查询的环境 ID 或HTTP 访问服务域名!')
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const loading = loadingFactory()
|
|
90
|
+
loading.start('查询HTTP 访问服务域名中...')
|
|
91
|
+
|
|
92
|
+
try {
|
|
93
|
+
const res = await queryGatewayDomain({
|
|
94
|
+
envId,
|
|
95
|
+
domain: domainName
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
loading.succeed('查询HTTP 访问服务域名成功!')
|
|
99
|
+
|
|
100
|
+
if (!res?.ServiceSet?.length) {
|
|
101
|
+
log.info('HTTP 访问服务域名为空!')
|
|
102
|
+
return
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const head = ['域名', '状态', '创建时间']
|
|
106
|
+
const tableData = res.ServiceSet.map((item) => [
|
|
107
|
+
item.Domain,
|
|
108
|
+
SERVICE_STATUS_MAP[item.Status],
|
|
109
|
+
formatDate(item.OpenTime * 1000, 'yyyy-MM-dd hh:mm:ss')
|
|
110
|
+
])
|
|
111
|
+
printHorizontalTable(head, tableData)
|
|
112
|
+
} catch (e) {
|
|
113
|
+
loading.stop()
|
|
114
|
+
throw e
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@ICommand()
|
|
120
|
+
export class UnbindCustomDomainCommand extends Command {
|
|
121
|
+
get options() {
|
|
122
|
+
return {
|
|
123
|
+
cmd: 'service',
|
|
124
|
+
childCmd: 'domain',
|
|
125
|
+
childSubCmd: 'unbind <domain>',
|
|
126
|
+
deprecateCmd: 'service:domain:unbind <domain>',
|
|
127
|
+
options: [
|
|
128
|
+
{
|
|
129
|
+
flags: '-e, --envId <envId>',
|
|
130
|
+
desc: '环境 Id'
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
desc: '解绑自定义HTTP 访问服务域名'
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
@InjectParams()
|
|
138
|
+
async execute(@EnvId() envId, @ArgsParams() params) {
|
|
139
|
+
const domain = params?.[0]
|
|
140
|
+
|
|
141
|
+
if (!domain) {
|
|
142
|
+
throw new CloudBaseError('请指定需要解绑的HTTP 访问服务域名!')
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const loading = loadingFactory()
|
|
146
|
+
loading.start(`HTTP Service域名 [${domain}] 解绑中...`)
|
|
147
|
+
|
|
148
|
+
try {
|
|
149
|
+
await unbindGatewayDomain({
|
|
150
|
+
envId,
|
|
151
|
+
domain
|
|
152
|
+
})
|
|
153
|
+
loading.succeed(`HTTP Service域名 [${domain}] 解绑成功!`)
|
|
154
|
+
} catch (e) {
|
|
155
|
+
loading.stop()
|
|
156
|
+
throw e
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './create'
|
|
2
|
-
export * from './delete'
|
|
3
|
-
export * from './domain'
|
|
4
|
-
export * from './list'
|
|
5
|
-
export * from './switch'
|
|
1
|
+
export * from './create'
|
|
2
|
+
export * from './delete'
|
|
3
|
+
export * from './domain'
|
|
4
|
+
export * from './list'
|
|
5
|
+
export * from './switch'
|
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import { Command, ICommand } from '../common'
|
|
2
|
-
import { CloudBaseError } from '../../error'
|
|
3
|
-
import { queryGateway } from '../../gateway'
|
|
4
|
-
|
|
5
|
-
import { InjectParams, EnvId, ArgsOptions, Log, Logger } from '../../decorators'
|
|
6
|
-
import { printHorizontalTable, loadingFactory, formatDate } from '../../utils'
|
|
7
|
-
|
|
8
|
-
@ICommand()
|
|
9
|
-
export class ListServiceCommand extends Command {
|
|
10
|
-
get options() {
|
|
11
|
-
return {
|
|
12
|
-
cmd: 'service',
|
|
13
|
-
childCmd: 'list',
|
|
14
|
-
deprecateCmd: 'service:list',
|
|
15
|
-
options: [
|
|
16
|
-
{
|
|
17
|
-
flags: '-e, --envId <envId>',
|
|
18
|
-
desc: '环境 Id'
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
flags: '-d, --domain <domain>',
|
|
22
|
-
desc: '自定义域名'
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
flags: '-p, --service-path <servicePath>',
|
|
26
|
-
desc: 'Service Path'
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
flags: '-id, --service-id <serviceId>',
|
|
30
|
-
desc: 'Service Id'
|
|
31
|
-
}
|
|
32
|
-
],
|
|
33
|
-
desc: '获取 HTTP 访问服务列表'
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
@InjectParams()
|
|
38
|
-
async execute(@EnvId() envId, @ArgsOptions() options, @Log() log: Logger) {
|
|
39
|
-
const { domain: domainName, servicePath, serviceId } = options
|
|
40
|
-
|
|
41
|
-
if (!envId && !domainName) {
|
|
42
|
-
throw new CloudBaseError('请指定需要查询的环境 ID 或HTTP 访问服务自定义域名!')
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const loading = loadingFactory()
|
|
46
|
-
loading.start('查询HTTP 访问服务中...')
|
|
47
|
-
|
|
48
|
-
try {
|
|
49
|
-
const res = await queryGateway({
|
|
50
|
-
envId,
|
|
51
|
-
domain: domainName,
|
|
52
|
-
path: servicePath,
|
|
53
|
-
gatewayId: serviceId
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
loading.stop()
|
|
57
|
-
|
|
58
|
-
if (res?.APISet?.length === 0) {
|
|
59
|
-
log.info('HTTP 访问服务为空')
|
|
60
|
-
return
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
const head = ['触发路径', '关联资源', '触发类型', '创建时间']
|
|
64
|
-
const tableData = res.APISet.map((item) => [
|
|
65
|
-
item.Path,
|
|
66
|
-
item.Name,
|
|
67
|
-
item.Type === 1 ? '云函数' : '云托管',
|
|
68
|
-
formatDate(item.CreateTime * 1000, 'yyyy-MM-dd hh:mm:ss')
|
|
69
|
-
])
|
|
70
|
-
printHorizontalTable(head, tableData)
|
|
71
|
-
} catch (e) {
|
|
72
|
-
loading.stop()
|
|
73
|
-
throw e
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
1
|
+
import { Command, ICommand } from '../common'
|
|
2
|
+
import { CloudBaseError } from '../../error'
|
|
3
|
+
import { queryGateway } from '../../gateway'
|
|
4
|
+
|
|
5
|
+
import { InjectParams, EnvId, ArgsOptions, Log, Logger } from '../../decorators'
|
|
6
|
+
import { printHorizontalTable, loadingFactory, formatDate } from '../../utils'
|
|
7
|
+
|
|
8
|
+
@ICommand()
|
|
9
|
+
export class ListServiceCommand extends Command {
|
|
10
|
+
get options() {
|
|
11
|
+
return {
|
|
12
|
+
cmd: 'service',
|
|
13
|
+
childCmd: 'list',
|
|
14
|
+
deprecateCmd: 'service:list',
|
|
15
|
+
options: [
|
|
16
|
+
{
|
|
17
|
+
flags: '-e, --envId <envId>',
|
|
18
|
+
desc: '环境 Id'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
flags: '-d, --domain <domain>',
|
|
22
|
+
desc: '自定义域名'
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
flags: '-p, --service-path <servicePath>',
|
|
26
|
+
desc: 'Service Path'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
flags: '-id, --service-id <serviceId>',
|
|
30
|
+
desc: 'Service Id'
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
desc: '获取 HTTP 访问服务列表'
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@InjectParams()
|
|
38
|
+
async execute(@EnvId() envId, @ArgsOptions() options, @Log() log: Logger) {
|
|
39
|
+
const { domain: domainName, servicePath, serviceId } = options
|
|
40
|
+
|
|
41
|
+
if (!envId && !domainName) {
|
|
42
|
+
throw new CloudBaseError('请指定需要查询的环境 ID 或HTTP 访问服务自定义域名!')
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const loading = loadingFactory()
|
|
46
|
+
loading.start('查询HTTP 访问服务中...')
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
const res = await queryGateway({
|
|
50
|
+
envId,
|
|
51
|
+
domain: domainName,
|
|
52
|
+
path: servicePath,
|
|
53
|
+
gatewayId: serviceId
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
loading.stop()
|
|
57
|
+
|
|
58
|
+
if (res?.APISet?.length === 0) {
|
|
59
|
+
log.info('HTTP 访问服务为空')
|
|
60
|
+
return
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const head = ['触发路径', '关联资源', '触发类型', '创建时间']
|
|
64
|
+
const tableData = res.APISet.map((item) => [
|
|
65
|
+
item.Path,
|
|
66
|
+
item.Name,
|
|
67
|
+
item.Type === 1 ? '云函数' : '云托管',
|
|
68
|
+
formatDate(item.CreateTime * 1000, 'yyyy-MM-dd hh:mm:ss')
|
|
69
|
+
])
|
|
70
|
+
printHorizontalTable(head, tableData)
|
|
71
|
+
} catch (e) {
|
|
72
|
+
loading.stop()
|
|
73
|
+
throw e
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|