@cloudbase/cli 2.0.2 → 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.
- package/.editorconfig +9 -9
- package/.eslintignore +7 -7
- package/.eslintrc +35 -35
- package/.prettierrc.js +29 -29
- package/.vscode/launch.json +16 -16
- package/.vscode/settings.json +3 -0
- package/LICENSE +5 -5
- package/README.md +35 -35
- package/bin/cloudbase.js +5 -5
- package/bin/tcb.js +0 -0
- 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 +2 -2
- package/package.json +2 -2
- 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/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 +1 -1
- 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/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/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
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import { Command, ICommand } from '../../common'
|
|
2
|
-
import { turnOffStandalonegateway, turnOnStandalonegateway } from '../../../run'
|
|
3
|
-
import { loadingFactory } from '@cloudbase/toolbox'
|
|
4
|
-
import { ArgsOptions, ArgsParams, EnvId, InjectParams } from '../../../decorators'
|
|
5
|
-
import { standalonegatewayCommonOptions } from './common'
|
|
6
|
-
import { CloudBaseError } from '../../../error'
|
|
7
|
-
|
|
8
|
-
@ICommand()
|
|
9
|
-
export class TurnStandalonegateway extends Command {
|
|
10
|
-
get options() {
|
|
11
|
-
return {
|
|
12
|
-
...standalonegatewayCommonOptions('turn <status>'),
|
|
13
|
-
options: [
|
|
14
|
-
{
|
|
15
|
-
flags: '-e, --envId <envId>',
|
|
16
|
-
desc: '环境 Id'
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
flags: '-gN, --gatewayName <gatewayName>',
|
|
20
|
-
desc: '网关名'
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
flags: '-sL, --serviceList <serviceList...>',
|
|
24
|
-
desc: '云托管服务列表'
|
|
25
|
-
}
|
|
26
|
-
],
|
|
27
|
-
desc: '启停小租户网关'
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@InjectParams()
|
|
32
|
-
async execute(@EnvId() envId, @ArgsParams() params, @ArgsOptions() options) {
|
|
33
|
-
const status = params?.[0]
|
|
34
|
-
if (!status || ['on', 'off'].indexOf(status) === -1) {
|
|
35
|
-
throw new CloudBaseError('请输入启停状态')
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
let { gatewayName = '', serviceList = [] } = options
|
|
39
|
-
gatewayName = String(gatewayName)
|
|
40
|
-
|
|
41
|
-
if (gatewayName === '') {
|
|
42
|
-
throw new CloudBaseError('请输入网关名')
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (serviceList.length === 0) {
|
|
46
|
-
throw new CloudBaseError('请输入云托管服务列表')
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const loading = loadingFactory()
|
|
50
|
-
|
|
51
|
-
loading.start('数据加载中...')
|
|
52
|
-
|
|
53
|
-
await (status === 'on' ? turnOnStandalonegateway : turnOffStandalonegateway)({
|
|
54
|
-
envId,
|
|
55
|
-
gatewayName,
|
|
56
|
-
serviceList
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
loading.stop()
|
|
60
|
-
|
|
61
|
-
console.log('操作执行成功')
|
|
62
|
-
}
|
|
63
|
-
}
|
|
1
|
+
import { Command, ICommand } from '../../common'
|
|
2
|
+
import { turnOffStandalonegateway, turnOnStandalonegateway } from '../../../run'
|
|
3
|
+
import { loadingFactory } from '@cloudbase/toolbox'
|
|
4
|
+
import { ArgsOptions, ArgsParams, EnvId, InjectParams } from '../../../decorators'
|
|
5
|
+
import { standalonegatewayCommonOptions } from './common'
|
|
6
|
+
import { CloudBaseError } from '../../../error'
|
|
7
|
+
|
|
8
|
+
@ICommand()
|
|
9
|
+
export class TurnStandalonegateway extends Command {
|
|
10
|
+
get options() {
|
|
11
|
+
return {
|
|
12
|
+
...standalonegatewayCommonOptions('turn <status>'),
|
|
13
|
+
options: [
|
|
14
|
+
{
|
|
15
|
+
flags: '-e, --envId <envId>',
|
|
16
|
+
desc: '环境 Id'
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
flags: '-gN, --gatewayName <gatewayName>',
|
|
20
|
+
desc: '网关名'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
flags: '-sL, --serviceList <serviceList...>',
|
|
24
|
+
desc: '云托管服务列表'
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
desc: '启停小租户网关'
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@InjectParams()
|
|
32
|
+
async execute(@EnvId() envId, @ArgsParams() params, @ArgsOptions() options) {
|
|
33
|
+
const status = params?.[0]
|
|
34
|
+
if (!status || ['on', 'off'].indexOf(status) === -1) {
|
|
35
|
+
throw new CloudBaseError('请输入启停状态')
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
let { gatewayName = '', serviceList = [] } = options
|
|
39
|
+
gatewayName = String(gatewayName)
|
|
40
|
+
|
|
41
|
+
if (gatewayName === '') {
|
|
42
|
+
throw new CloudBaseError('请输入网关名')
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (serviceList.length === 0) {
|
|
46
|
+
throw new CloudBaseError('请输入云托管服务列表')
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const loading = loadingFactory()
|
|
50
|
+
|
|
51
|
+
loading.start('数据加载中...')
|
|
52
|
+
|
|
53
|
+
await (status === 'on' ? turnOnStandalonegateway : turnOffStandalonegateway)({
|
|
54
|
+
envId,
|
|
55
|
+
gatewayName,
|
|
56
|
+
serviceList
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
loading.stop()
|
|
60
|
+
|
|
61
|
+
console.log('操作执行成功')
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './list'
|
|
2
|
-
export * from './delete'
|
|
3
|
-
export * from './modify'
|
|
4
|
-
export * from './create'
|
|
1
|
+
export * from './list'
|
|
2
|
+
export * from './delete'
|
|
3
|
+
export * from './modify'
|
|
4
|
+
export * from './create'
|
|
5
5
|
export * from './update'
|
package/src/commands/smart.ts
CHANGED
|
@@ -1,132 +1,132 @@
|
|
|
1
|
-
import fs from 'fs'
|
|
2
|
-
import os from 'os'
|
|
3
|
-
import _ from 'lodash'
|
|
4
|
-
import path from 'path'
|
|
5
|
-
import chalk from 'chalk'
|
|
6
|
-
import { prompt } from 'enquirer'
|
|
7
|
-
import { run } from '@cloudbase/framework-core'
|
|
8
|
-
import { ConfigParser, getRegion } from '@cloudbase/toolbox'
|
|
9
|
-
import {
|
|
10
|
-
logger,
|
|
11
|
-
getSelectedEnv,
|
|
12
|
-
authSupevisor,
|
|
13
|
-
loadingFactory,
|
|
14
|
-
getSelectRegion,
|
|
15
|
-
checkTcbService,
|
|
16
|
-
getCloudBaseConfig,
|
|
17
|
-
downloadTemplate,
|
|
18
|
-
initProjectConfig
|
|
19
|
-
} from '../utils'
|
|
20
|
-
import * as Hosting from '../hosting'
|
|
21
|
-
import * as Function from '../function'
|
|
22
|
-
import { checkLogin } from '../auth'
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* 智能命令
|
|
26
|
-
*/
|
|
27
|
-
export async function smartDeploy() {
|
|
28
|
-
const loading = loadingFactory()
|
|
29
|
-
loading.start('环境检测中')
|
|
30
|
-
|
|
31
|
-
// 检查登录
|
|
32
|
-
await checkLogin()
|
|
33
|
-
|
|
34
|
-
// 检查是否开通 TCB 服务
|
|
35
|
-
await checkTcbService()
|
|
36
|
-
|
|
37
|
-
const files = fs.readdirSync(process.cwd())
|
|
38
|
-
|
|
39
|
-
loading.stop()
|
|
40
|
-
|
|
41
|
-
// 获取当前目录
|
|
42
|
-
const home = os.homedir()
|
|
43
|
-
const current = process.cwd()
|
|
44
|
-
let relative = current
|
|
45
|
-
if (current.indexOf(home) > -1) {
|
|
46
|
-
relative = path.relative(home, current)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// 当期区域
|
|
50
|
-
let region = await getRegion(true)
|
|
51
|
-
|
|
52
|
-
// 当前目录为空,执行初始化项目操作
|
|
53
|
-
if (!files.length) {
|
|
54
|
-
logger.info('当前目录为空,初始化云开发项目\n')
|
|
55
|
-
// 先选择 region,再选择环境
|
|
56
|
-
region = await getSelectRegion()
|
|
57
|
-
const envId = await getSelectedEnv()
|
|
58
|
-
// 下载模板
|
|
59
|
-
const projectPath = await downloadTemplate()
|
|
60
|
-
await initProjectConfig(envId, region, projectPath)
|
|
61
|
-
// 成功提示
|
|
62
|
-
logger.success('初始化项目成功!\n')
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// 初始化项目成功,或当前目录已经存在项目,继续使用 Framework 执行部署
|
|
66
|
-
const { setup } = await prompt<any>({
|
|
67
|
-
type: 'confirm',
|
|
68
|
-
name: 'setup',
|
|
69
|
-
message: `是否使用云开发部署当前项目 <${chalk.bold.cyan(relative)}> ?`,
|
|
70
|
-
initial: true
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
if (!setup) {
|
|
74
|
-
return
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// 检测是否有 cloudbase 配置
|
|
78
|
-
const config = await getCloudBaseConfig()
|
|
79
|
-
let envId = config?.envId
|
|
80
|
-
|
|
81
|
-
// 配置文件中不存在 region,选择 region
|
|
82
|
-
if (!config?.region && !region) {
|
|
83
|
-
region = await getSelectRegion()
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// 配置文件不存在
|
|
87
|
-
if (!envId) {
|
|
88
|
-
envId = await getSelectedEnv()
|
|
89
|
-
fs.writeFileSync(
|
|
90
|
-
path.join(process.cwd(), 'cloudbaserc.json'),
|
|
91
|
-
JSON.stringify({
|
|
92
|
-
envId,
|
|
93
|
-
region,
|
|
94
|
-
version: '2.0',
|
|
95
|
-
$schema: 'https://framework-1258016615.tcloudbaseapp.com/schema/latest.json'
|
|
96
|
-
})
|
|
97
|
-
)
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// 把 region 写入到配置文件中
|
|
101
|
-
const parser = new ConfigParser()
|
|
102
|
-
parser.update('region', region)
|
|
103
|
-
|
|
104
|
-
// 调用 Framework
|
|
105
|
-
await callFramework(envId)
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
async function callFramework(envId: string) {
|
|
109
|
-
const loginState = await authSupevisor.getLoginState()
|
|
110
|
-
const { token, secretId, secretKey } = loginState
|
|
111
|
-
const config = await getCloudBaseConfig()
|
|
112
|
-
|
|
113
|
-
await run(
|
|
114
|
-
{
|
|
115
|
-
projectPath: process.cwd(),
|
|
116
|
-
cloudbaseConfig: {
|
|
117
|
-
secretId,
|
|
118
|
-
secretKey,
|
|
119
|
-
token,
|
|
120
|
-
envId
|
|
121
|
-
},
|
|
122
|
-
config,
|
|
123
|
-
logLevel: process.argv.includes('--verbose') ? 'debug' : 'info',
|
|
124
|
-
resourceProviders: {
|
|
125
|
-
hosting: Hosting,
|
|
126
|
-
function: Function
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
'deploy',
|
|
130
|
-
''
|
|
131
|
-
)
|
|
132
|
-
}
|
|
1
|
+
import fs from 'fs'
|
|
2
|
+
import os from 'os'
|
|
3
|
+
import _ from 'lodash'
|
|
4
|
+
import path from 'path'
|
|
5
|
+
import chalk from 'chalk'
|
|
6
|
+
import { prompt } from 'enquirer'
|
|
7
|
+
import { run } from '@cloudbase/framework-core'
|
|
8
|
+
import { ConfigParser, getRegion } from '@cloudbase/toolbox'
|
|
9
|
+
import {
|
|
10
|
+
logger,
|
|
11
|
+
getSelectedEnv,
|
|
12
|
+
authSupevisor,
|
|
13
|
+
loadingFactory,
|
|
14
|
+
getSelectRegion,
|
|
15
|
+
checkTcbService,
|
|
16
|
+
getCloudBaseConfig,
|
|
17
|
+
downloadTemplate,
|
|
18
|
+
initProjectConfig
|
|
19
|
+
} from '../utils'
|
|
20
|
+
import * as Hosting from '../hosting'
|
|
21
|
+
import * as Function from '../function'
|
|
22
|
+
import { checkLogin } from '../auth'
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* 智能命令
|
|
26
|
+
*/
|
|
27
|
+
export async function smartDeploy() {
|
|
28
|
+
const loading = loadingFactory()
|
|
29
|
+
loading.start('环境检测中')
|
|
30
|
+
|
|
31
|
+
// 检查登录
|
|
32
|
+
await checkLogin()
|
|
33
|
+
|
|
34
|
+
// 检查是否开通 TCB 服务
|
|
35
|
+
await checkTcbService()
|
|
36
|
+
|
|
37
|
+
const files = fs.readdirSync(process.cwd())
|
|
38
|
+
|
|
39
|
+
loading.stop()
|
|
40
|
+
|
|
41
|
+
// 获取当前目录
|
|
42
|
+
const home = os.homedir()
|
|
43
|
+
const current = process.cwd()
|
|
44
|
+
let relative = current
|
|
45
|
+
if (current.indexOf(home) > -1) {
|
|
46
|
+
relative = path.relative(home, current)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// 当期区域
|
|
50
|
+
let region = await getRegion(true)
|
|
51
|
+
|
|
52
|
+
// 当前目录为空,执行初始化项目操作
|
|
53
|
+
if (!files.length) {
|
|
54
|
+
logger.info('当前目录为空,初始化云开发项目\n')
|
|
55
|
+
// 先选择 region,再选择环境
|
|
56
|
+
region = await getSelectRegion()
|
|
57
|
+
const envId = await getSelectedEnv()
|
|
58
|
+
// 下载模板
|
|
59
|
+
const projectPath = await downloadTemplate()
|
|
60
|
+
await initProjectConfig(envId, region, projectPath)
|
|
61
|
+
// 成功提示
|
|
62
|
+
logger.success('初始化项目成功!\n')
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// 初始化项目成功,或当前目录已经存在项目,继续使用 Framework 执行部署
|
|
66
|
+
const { setup } = await prompt<any>({
|
|
67
|
+
type: 'confirm',
|
|
68
|
+
name: 'setup',
|
|
69
|
+
message: `是否使用云开发部署当前项目 <${chalk.bold.cyan(relative)}> ?`,
|
|
70
|
+
initial: true
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
if (!setup) {
|
|
74
|
+
return
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// 检测是否有 cloudbase 配置
|
|
78
|
+
const config = await getCloudBaseConfig()
|
|
79
|
+
let envId = config?.envId
|
|
80
|
+
|
|
81
|
+
// 配置文件中不存在 region,选择 region
|
|
82
|
+
if (!config?.region && !region) {
|
|
83
|
+
region = await getSelectRegion()
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// 配置文件不存在
|
|
87
|
+
if (!envId) {
|
|
88
|
+
envId = await getSelectedEnv()
|
|
89
|
+
fs.writeFileSync(
|
|
90
|
+
path.join(process.cwd(), 'cloudbaserc.json'),
|
|
91
|
+
JSON.stringify({
|
|
92
|
+
envId,
|
|
93
|
+
region,
|
|
94
|
+
version: '2.0',
|
|
95
|
+
$schema: 'https://framework-1258016615.tcloudbaseapp.com/schema/latest.json'
|
|
96
|
+
})
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// 把 region 写入到配置文件中
|
|
101
|
+
const parser = new ConfigParser()
|
|
102
|
+
parser.update('region', region)
|
|
103
|
+
|
|
104
|
+
// 调用 Framework
|
|
105
|
+
await callFramework(envId)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
async function callFramework(envId: string) {
|
|
109
|
+
const loginState = await authSupevisor.getLoginState()
|
|
110
|
+
const { token, secretId, secretKey } = loginState
|
|
111
|
+
const config = await getCloudBaseConfig()
|
|
112
|
+
|
|
113
|
+
await run(
|
|
114
|
+
{
|
|
115
|
+
projectPath: process.cwd(),
|
|
116
|
+
cloudbaseConfig: {
|
|
117
|
+
secretId,
|
|
118
|
+
secretKey,
|
|
119
|
+
token,
|
|
120
|
+
envId
|
|
121
|
+
},
|
|
122
|
+
config,
|
|
123
|
+
logLevel: process.argv.includes('--verbose') ? 'debug' : 'info',
|
|
124
|
+
resourceProviders: {
|
|
125
|
+
hosting: Hosting,
|
|
126
|
+
function: Function
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
'deploy',
|
|
130
|
+
''
|
|
131
|
+
)
|
|
132
|
+
}
|