@cloudbase/cli 2.0.12-alpha.1 → 2.0.13
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/.vscode/launch.json +0 -10
- package/.vscode/settings.json +3 -0
- package/bin/cloudbase.js +0 -0
- package/bin/tcb.js +0 -0
- package/lib/commands/lowcode/app.js +2 -30
- package/lib/run/service/deployPackage.js +2 -9
- package/lib/utils/checkTcbrEnv.js +5 -4
- package/lib/utils/debug-logger.js +30 -0
- package/lib/utils/net/cloud-api-request.js +7 -1
- package/lib/utils/net/http-request.js +16 -5
- package/package.json +5 -4
- package/types/commands/lowcode/app.d.ts +0 -10
- package/types/utils/debug-logger.d.ts +1 -0
- package/types/utils/net/http-request.d.ts +6 -2
- package/.history/.gitignore_20220624162613 +0 -84
- package/.history/.gitignore_20220627114054 +0 -86
- package/.history/package_20220711204706.json +0 -88
- package/.history/package_20220711204818.json +0 -88
- package/.history/package_20220712151717.json +0 -88
- package/.history/src/commands/lowcode/app_20220624162613.ts +0 -34
- package/.history/src/commands/lowcode/app_20220627114205.ts +0 -52
- package/.history/src/index_20220624162613.ts +0 -13
- package/.history/src/index_20220627113609.ts +0 -15
- package/.history/src/index_20220627114102.ts +0 -13
- package/src/auth/index.ts +0 -2
- package/src/auth/login.ts +0 -91
- package/src/auth/logout.ts +0 -7
- package/src/commands/account/index.ts +0 -2
- package/src/commands/account/login.ts +0 -192
- package/src/commands/account/logout.ts +0 -24
- package/src/commands/common.ts +0 -246
- package/src/commands/env/base.ts +0 -90
- package/src/commands/env/create.ts +0 -92
- package/src/commands/env/domain.ts +0 -186
- package/src/commands/env/index.ts +0 -4
- package/src/commands/env/login.ts +0 -235
- package/src/commands/framework/index.ts +0 -124
- package/src/commands/functions/alias/getRoute.ts +0 -76
- package/src/commands/functions/alias/index.ts +0 -2
- package/src/commands/functions/alias/setRoute.ts +0 -82
- package/src/commands/functions/code-download.ts +0 -100
- package/src/commands/functions/code-update.ts +0 -62
- package/src/commands/functions/concurrency/delete.ts +0 -45
- package/src/commands/functions/concurrency/index.ts +0 -3
- package/src/commands/functions/concurrency/list.ts +0 -58
- package/src/commands/functions/concurrency/set.ts +0 -47
- package/src/commands/functions/config-update.ts +0 -76
- package/src/commands/functions/copy.ts +0 -62
- package/src/commands/functions/delete.ts +0 -79
- package/src/commands/functions/deploy.ts +0 -293
- package/src/commands/functions/detail.ts +0 -138
- package/src/commands/functions/index.ts +0 -16
- package/src/commands/functions/invoke.ts +0 -121
- package/src/commands/functions/layer/bind.ts +0 -182
- package/src/commands/functions/layer/common.ts +0 -8
- package/src/commands/functions/layer/create.ts +0 -49
- package/src/commands/functions/layer/delete.ts +0 -73
- package/src/commands/functions/layer/download.ts +0 -92
- package/src/commands/functions/layer/index.ts +0 -7
- package/src/commands/functions/layer/list.ts +0 -94
- package/src/commands/functions/layer/sort.ts +0 -76
- package/src/commands/functions/list.ts +0 -68
- package/src/commands/functions/log.ts +0 -148
- package/src/commands/functions/run.ts +0 -249
- package/src/commands/functions/trigger-create.ts +0 -79
- package/src/commands/functions/trigger-delete.ts +0 -105
- package/src/commands/functions/version/index.ts +0 -2
- package/src/commands/functions/version/list.ts +0 -73
- package/src/commands/functions/version/publish.ts +0 -43
- package/src/commands/gateway/create.ts +0 -109
- package/src/commands/gateway/delete.ts +0 -81
- package/src/commands/gateway/domain.ts +0 -159
- package/src/commands/gateway/index.ts +0 -5
- package/src/commands/gateway/list.ts +0 -76
- package/src/commands/gateway/switch.ts +0 -107
- package/src/commands/helpers/index.ts +0 -3
- package/src/commands/helpers/init.ts +0 -431
- package/src/commands/helpers/new.ts +0 -117
- package/src/commands/helpers/open.ts +0 -67
- package/src/commands/hosting/hosting.ts +0 -360
- package/src/commands/hosting/index.ts +0 -1
- package/src/commands/index.ts +0 -13
- package/src/commands/lowcode/app.ts +0 -52
- package/src/commands/lowcode/comps.ts +0 -325
- package/src/commands/lowcode/index.ts +0 -2
- package/src/commands/lowcode/utils.ts +0 -25
- package/src/commands/run/create.ts +0 -153
- package/src/commands/run/delete.ts +0 -77
- package/src/commands/run/image/common.ts +0 -8
- package/src/commands/run/image/delete.ts +0 -68
- package/src/commands/run/image/download.ts +0 -68
- package/src/commands/run/image/index.ts +0 -5
- package/src/commands/run/image/list.ts +0 -84
- package/src/commands/run/image/upload.ts +0 -76
- package/src/commands/run/index.ts +0 -7
- package/src/commands/run/list.ts +0 -83
- package/src/commands/run/service/config.ts +0 -81
- package/src/commands/run/service/create.ts +0 -122
- package/src/commands/run/service/deploy.ts +0 -125
- package/src/commands/run/service/index.ts +0 -5
- package/src/commands/run/service/list.ts +0 -94
- package/src/commands/run/service/update.ts +0 -108
- package/src/commands/run/standalonegateway/common.ts +0 -8
- package/src/commands/run/standalonegateway/create.ts +0 -85
- package/src/commands/run/standalonegateway/destroy.ts +0 -59
- package/src/commands/run/standalonegateway/index.ts +0 -5
- package/src/commands/run/standalonegateway/list.ts +0 -53
- package/src/commands/run/standalonegateway/package.ts +0 -62
- package/src/commands/run/standalonegateway/turn.ts +0 -63
- package/src/commands/run/version/common.ts +0 -8
- package/src/commands/run/version/create.ts +0 -369
- package/src/commands/run/version/delete.ts +0 -64
- package/src/commands/run/version/index.ts +0 -5
- package/src/commands/run/version/list.ts +0 -91
- package/src/commands/run/version/modify.ts +0 -137
- package/src/commands/run/version/update.ts +0 -398
- package/src/commands/smart.ts +0 -132
- package/src/commands/storage/index.ts +0 -1
- package/src/commands/storage/storage.ts +0 -464
- package/src/commands/third/index.ts +0 -1
- package/src/commands/third/thirdAttach.ts +0 -49
- package/src/completion/index.ts +0 -13
- package/src/constant.ts +0 -154
- package/src/decorators/captureError.ts +0 -25
- package/src/decorators/constants.ts +0 -12
- package/src/decorators/deprecate.ts +0 -25
- package/src/decorators/guard.ts +0 -42
- package/src/decorators/index.ts +0 -7
- package/src/decorators/injectParams.ts +0 -54
- package/src/decorators/params/common.ts +0 -28
- package/src/decorators/params/index.ts +0 -35
- package/src/env/domain.ts +0 -33
- package/src/env/index.ts +0 -63
- package/src/env/login.ts +0 -80
- package/src/error.ts +0 -36
- package/src/function/alias.ts +0 -43
- package/src/function/base.ts +0 -253
- package/src/function/code.ts +0 -55
- package/src/function/concurrency.ts +0 -57
- package/src/function/create.ts +0 -78
- package/src/function/delete.ts +0 -42
- package/src/function/index.ts +0 -11
- package/src/function/layer/attach.ts +0 -68
- package/src/function/layer/create.ts +0 -63
- package/src/function/layer/delete.ts +0 -21
- package/src/function/layer/download.ts +0 -54
- package/src/function/layer/index.ts +0 -7
- package/src/function/layer/list.ts +0 -32
- package/src/function/layer/sort.ts +0 -24
- package/src/function/trigger.ts +0 -97
- package/src/function/update.ts +0 -35
- package/src/function/version.ts +0 -39
- package/src/function/vpc.ts +0 -22
- package/src/gateway/index.ts +0 -137
- package/src/help.ts +0 -50
- package/src/hosting.ts +0 -212
- package/src/index.ts +0 -13
- package/src/logger.ts +0 -17
- package/src/run/create.ts +0 -23
- package/src/run/delete.ts +0 -15
- package/src/run/image/build.ts +0 -36
- package/src/run/image/delete.ts +0 -14
- package/src/run/image/index.ts +0 -4
- package/src/run/image/info.ts +0 -27
- package/src/run/image/list.ts +0 -23
- package/src/run/index.ts +0 -8
- package/src/run/list.ts +0 -30
- package/src/run/repo.ts +0 -25
- package/src/run/service/common.ts +0 -311
- package/src/run/service/config.ts +0 -77
- package/src/run/service/create.ts +0 -52
- package/src/run/service/deployPackage.ts +0 -65
- package/src/run/service/index.ts +0 -7
- package/src/run/service/list.ts +0 -29
- package/src/run/service/showLogs.ts +0 -98
- package/src/run/service/update.ts +0 -82
- package/src/run/standalonegateway/create.ts +0 -24
- package/src/run/standalonegateway/destroy.ts +0 -19
- package/src/run/standalonegateway/index.ts +0 -5
- package/src/run/standalonegateway/list.ts +0 -74
- package/src/run/standalonegateway/package/index.ts +0 -1
- package/src/run/standalonegateway/package/list.ts +0 -24
- package/src/run/standalonegateway/turn/index.ts +0 -2
- package/src/run/standalonegateway/turn/off.ts +0 -19
- package/src/run/standalonegateway/turn/on.ts +0 -19
- package/src/run/version/create.ts +0 -68
- package/src/run/version/delete.ts +0 -16
- package/src/run/version/index.ts +0 -6
- package/src/run/version/list.ts +0 -17
- package/src/run/version/modify.ts +0 -17
- package/src/run/version/repo.ts +0 -28
- package/src/run/version/update.ts +0 -59
- package/src/storage.ts +0 -114
- package/src/third/index.ts +0 -13
- package/src/types.ts +0 -672
- package/src/utils/auth.ts +0 -15
- package/src/utils/checkTcbrEnv.ts +0 -67
- package/src/utils/cli-table.ts +0 -23
- package/src/utils/commonParamsCheck.ts +0 -65
- package/src/utils/config.ts +0 -39
- package/src/utils/env.ts +0 -244
- package/src/utils/fs/del.ts +0 -5
- package/src/utils/fs/index.ts +0 -71
- package/src/utils/function-packer.ts +0 -97
- package/src/utils/index.ts +0 -25
- package/src/utils/log.ts +0 -82
- package/src/utils/net/cloud-api-request.ts +0 -62
- package/src/utils/net/credential.ts +0 -53
- package/src/utils/net/http-request.ts +0 -84
- package/src/utils/net/index.ts +0 -5
- package/src/utils/net/manager-service.ts +0 -36
- package/src/utils/net/proxy.ts +0 -6
- package/src/utils/notice.ts +0 -28
- package/src/utils/output/highlight.ts +0 -5
- package/src/utils/output/index.ts +0 -3
- package/src/utils/output/link.ts +0 -10
- package/src/utils/output/loading.ts +0 -82
- package/src/utils/parallel.ts +0 -82
- package/src/utils/platform/index.ts +0 -3
- package/src/utils/platform/mac.ts +0 -21
- package/src/utils/platform/os.ts +0 -64
- package/src/utils/platform/port.ts +0 -10
- package/src/utils/progress-bar.ts +0 -38
- package/src/utils/prompt/index.ts +0 -1
- package/src/utils/prompt/select.ts +0 -60
- package/src/utils/reporter/agree.ts +0 -20
- package/src/utils/reporter/download.ts +0 -26
- package/src/utils/reporter/index.ts +0 -3
- package/src/utils/reporter/usage.ts +0 -20
- package/src/utils/store/auth.ts +0 -49
- package/src/utils/store/common.ts +0 -8
- package/src/utils/store/db.ts +0 -68
- package/src/utils/store/index.ts +0 -5
- package/src/utils/store/usage.ts +0 -12
- package/src/utils/tcbrApi/callTcbrApi.ts +0 -28
- package/src/utils/tcbrApi/index.ts +0 -1
- package/src/utils/template.ts +0 -170
- package/src/utils/tools/encoding.ts +0 -8
- package/src/utils/tools/index.ts +0 -4
- package/src/utils/tools/object.ts +0 -33
- package/src/utils/tools/time.ts +0 -38
- package/src/utils/tools/uid.ts +0 -19
- package/src/utils/validator.ts +0 -65
- package/yarn-error.log +0 -12841
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import _ from 'lodash'
|
|
2
|
-
import path from 'path'
|
|
3
|
-
import chalk from 'chalk'
|
|
4
|
-
import execa from 'execa'
|
|
5
|
-
import { getRegion } from '@cloudbase/toolbox'
|
|
6
|
-
|
|
7
|
-
import { Command, ICommand } from '../common'
|
|
8
|
-
import {
|
|
9
|
-
getSelectedEnv,
|
|
10
|
-
downloadTemplate,
|
|
11
|
-
initProjectConfig,
|
|
12
|
-
getSelectRegion,
|
|
13
|
-
delSync
|
|
14
|
-
} from '../../utils'
|
|
15
|
-
import { InjectParams, Log, Logger, CmdContext } from '../../decorators'
|
|
16
|
-
import { checkLogin } from '../../auth'
|
|
17
|
-
|
|
18
|
-
@ICommand()
|
|
19
|
-
export class NewCommand extends Command {
|
|
20
|
-
get options() {
|
|
21
|
-
return {
|
|
22
|
-
// templateUri 是 Git 地址或模板名
|
|
23
|
-
cmd: 'new [appName] [templateUri]',
|
|
24
|
-
options: [
|
|
25
|
-
{
|
|
26
|
-
flags: '-e, --envId <envId>',
|
|
27
|
-
desc: '环境 Id'
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
flags: '--clone',
|
|
31
|
-
desc: '从 Git 创建模板时是否 Clone 整个仓库'
|
|
32
|
-
}
|
|
33
|
-
],
|
|
34
|
-
desc: '创建一个新的云开发应用',
|
|
35
|
-
requiredEnvId: false,
|
|
36
|
-
withoutAuth: true
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
@InjectParams()
|
|
41
|
-
async execute(@CmdContext() ctx, @Log() log?: Logger) {
|
|
42
|
-
const { params, options, envId } = ctx
|
|
43
|
-
const { clone } = options
|
|
44
|
-
|
|
45
|
-
let appName = params?.[0]
|
|
46
|
-
const templateUri = params?.[1]
|
|
47
|
-
|
|
48
|
-
// 检查登录
|
|
49
|
-
await checkLogin()
|
|
50
|
-
|
|
51
|
-
let region = await getRegion(true)
|
|
52
|
-
|
|
53
|
-
// 配置文件中不存在 region,选择 region
|
|
54
|
-
if (!region) {
|
|
55
|
-
region = await getSelectRegion()
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// 获取 envId
|
|
59
|
-
let env = envId
|
|
60
|
-
if (!env) {
|
|
61
|
-
env = await getSelectedEnv(envId)
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
let projectPath
|
|
65
|
-
|
|
66
|
-
if (templateUri && isGitUrl(templateUri)) {
|
|
67
|
-
// git 仓库
|
|
68
|
-
if (clone) {
|
|
69
|
-
// clone 完整的仓库
|
|
70
|
-
await execa('git', ['clone', templateUri, appName], {
|
|
71
|
-
stdio: 'inherit'
|
|
72
|
-
})
|
|
73
|
-
} else {
|
|
74
|
-
await execa('git', ['clone', '--depth', 1, templateUri, appName], {
|
|
75
|
-
stdio: 'inherit'
|
|
76
|
-
})
|
|
77
|
-
// 删除 .git 文件夹
|
|
78
|
-
await delSync([path.join(process.cwd(), appName, '.git')])
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// 下载 Git 仓库文件,不包含完整的 Git 记录
|
|
82
|
-
projectPath = path.join(process.cwd(), appName)
|
|
83
|
-
} else {
|
|
84
|
-
// 下载模板
|
|
85
|
-
projectPath = await downloadTemplate({
|
|
86
|
-
appName,
|
|
87
|
-
projectPath,
|
|
88
|
-
templateUri,
|
|
89
|
-
newProject: true
|
|
90
|
-
})
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
await initProjectConfig(env, region, projectPath)
|
|
94
|
-
|
|
95
|
-
// 成功提示
|
|
96
|
-
this.initSuccessOutput(appName)
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// 项目初始化成功后打印提示语
|
|
100
|
-
@InjectParams()
|
|
101
|
-
initSuccessOutput(appName: string, @Log() log?: Logger) {
|
|
102
|
-
log.success(appName ? `创建应用 ${appName} 成功!\n` : '创建应用成功!')
|
|
103
|
-
|
|
104
|
-
if (appName) {
|
|
105
|
-
const command = chalk.bold.cyan(`cd ${appName}`)
|
|
106
|
-
log.info(`👉 执行命令 ${command} 进入文件夹`)
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
log.info(`👉 开发完成后,执行命令 ${chalk.bold.cyan('tcb')} 一键部署`)
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// 判断是否为 Git 仓库地址
|
|
114
|
-
export function isGitUrl(url: string) {
|
|
115
|
-
const regex = /(?:git|ssh|https?|git@[-\w.]+):(\/\/)?(.*?)(\.git)(\/?|\#[-\d\w._]+?)$/
|
|
116
|
-
return regex.test(url)
|
|
117
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import open from 'open'
|
|
2
|
-
import chalk from 'chalk'
|
|
3
|
-
import inquirer from 'inquirer'
|
|
4
|
-
import { CloudBaseError } from '../../error'
|
|
5
|
-
import { Command, ICommand } from '../common'
|
|
6
|
-
import { InjectParams, ArgsParams } from '../../decorators'
|
|
7
|
-
|
|
8
|
-
interface Link {
|
|
9
|
-
name: string
|
|
10
|
-
value: string
|
|
11
|
-
consolePath?: string
|
|
12
|
-
url?: string
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const links: Link[] = [
|
|
16
|
-
{
|
|
17
|
-
name: 'CLI 文档',
|
|
18
|
-
value: 'cli-doc',
|
|
19
|
-
url: 'https://tencentcloudbase.github.io/2019-09-03-cli/'
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
@ICommand()
|
|
24
|
-
export class OpenLinkCommand extends Command {
|
|
25
|
-
get options() {
|
|
26
|
-
return {
|
|
27
|
-
cmd: 'open [link]',
|
|
28
|
-
options: [],
|
|
29
|
-
desc: '在浏览器中打开云开发相关连接',
|
|
30
|
-
requiredEnvId: false,
|
|
31
|
-
withoutAuth: true
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
@InjectParams()
|
|
36
|
-
async execute(@ArgsParams() params) {
|
|
37
|
-
let openLink: Link = null
|
|
38
|
-
const link = params?.[0]
|
|
39
|
-
|
|
40
|
-
// 如果指定了 link,直接打开链接
|
|
41
|
-
if (link) {
|
|
42
|
-
openLink = links.find((item) => item.value === link)
|
|
43
|
-
|
|
44
|
-
if (!openLink) {
|
|
45
|
-
throw new CloudBaseError(`${link} 链接不存在!`)
|
|
46
|
-
}
|
|
47
|
-
} else {
|
|
48
|
-
const { selectLink } = await inquirer.prompt({
|
|
49
|
-
type: 'list',
|
|
50
|
-
name: 'selectLink',
|
|
51
|
-
message: '请选择需要打开的链接',
|
|
52
|
-
choices: links
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
openLink = links.find((item) => item.value === selectLink)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (!openLink) {
|
|
59
|
-
throw new CloudBaseError('请指定需要打开的链接!')
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
console.log(`在您的默认浏览器中打开 ${openLink.name} 链接:`)
|
|
63
|
-
console.log(chalk.underline.bold(openLink.url))
|
|
64
|
-
|
|
65
|
-
open(openLink.url)
|
|
66
|
-
}
|
|
67
|
-
}
|
|
@@ -1,360 +0,0 @@
|
|
|
1
|
-
import fs from 'fs'
|
|
2
|
-
import path from 'path'
|
|
3
|
-
import inquirer from 'inquirer'
|
|
4
|
-
import logSymbols from 'log-symbols'
|
|
5
|
-
import { HostingService } from '@cloudbase/manager-node/types/hosting'
|
|
6
|
-
|
|
7
|
-
import { Command, ICommand } from '../common'
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
getHostingInfo,
|
|
11
|
-
hostingDeploy,
|
|
12
|
-
hostingDelete,
|
|
13
|
-
hostingList,
|
|
14
|
-
walkLocalDir
|
|
15
|
-
} from '../../hosting'
|
|
16
|
-
import { CloudBaseError } from '../../error'
|
|
17
|
-
import {
|
|
18
|
-
isDirectory,
|
|
19
|
-
loadingFactory,
|
|
20
|
-
printHorizontalTable,
|
|
21
|
-
formatDate,
|
|
22
|
-
formateFileSize,
|
|
23
|
-
createUploadProgressBar,
|
|
24
|
-
genClickableLink,
|
|
25
|
-
checkFullAccess,
|
|
26
|
-
getMangerService
|
|
27
|
-
} from '../../utils'
|
|
28
|
-
|
|
29
|
-
import { InjectParams, EnvId, ArgsParams, ArgsOptions, Log, Logger } from '../../decorators'
|
|
30
|
-
|
|
31
|
-
const HostingStatusMap = {
|
|
32
|
-
init: '初始化中',
|
|
33
|
-
process: '处理中',
|
|
34
|
-
online: '已上线',
|
|
35
|
-
destroying: '销毁中',
|
|
36
|
-
offline: '已下线',
|
|
37
|
-
create_fail: '初始化失败', // eslint-disable-line
|
|
38
|
-
destroy_fail: '销毁失败' // eslint-disable-line
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
async function getHostingService(envId: string): Promise<HostingService> {
|
|
42
|
-
const { hosting } = await getMangerService(envId)
|
|
43
|
-
return hosting
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
@ICommand()
|
|
47
|
-
export class HostingDetail extends Command {
|
|
48
|
-
get options() {
|
|
49
|
-
return {
|
|
50
|
-
cmd: 'hosting',
|
|
51
|
-
childCmd: 'detail',
|
|
52
|
-
deprecateCmd: 'hosting:detail',
|
|
53
|
-
options: [
|
|
54
|
-
{
|
|
55
|
-
flags: '-e, --envId <envId>',
|
|
56
|
-
desc: '环境 Id'
|
|
57
|
-
}
|
|
58
|
-
],
|
|
59
|
-
desc: '查看静态网站服务信息'
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
@InjectParams()
|
|
64
|
-
async execute(@EnvId() envId, @Log() log: Logger) {
|
|
65
|
-
const res = await getHostingInfo({ envId })
|
|
66
|
-
|
|
67
|
-
const website = res?.data?.[0]
|
|
68
|
-
|
|
69
|
-
if (!website) {
|
|
70
|
-
const link = genClickableLink('https://console.cloud.tencent.com/tcb')
|
|
71
|
-
throw new CloudBaseError(
|
|
72
|
-
`您还没有开启静态网站服务,请先到云开发控制台开启静态网站服务!\n 👉 ${link}`
|
|
73
|
-
)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const link = genClickableLink(`https://${website.cdnDomain}`)
|
|
77
|
-
// offline 状态不展示域名
|
|
78
|
-
if (website.status !== 'offline') {
|
|
79
|
-
log.info(`静态网站域名:${link}`)
|
|
80
|
-
}
|
|
81
|
-
log.info(`静态网站状态:【${HostingStatusMap[website.status]}】`)
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
@ICommand()
|
|
86
|
-
export class HostingDeploy extends Command {
|
|
87
|
-
get options() {
|
|
88
|
-
return {
|
|
89
|
-
cmd: 'hosting',
|
|
90
|
-
childCmd: 'deploy [filePath] [cloudPath]',
|
|
91
|
-
deprecateCmd: 'hosting:deploy [filePath] [cloudPath]',
|
|
92
|
-
options: [
|
|
93
|
-
{
|
|
94
|
-
flags: '-e, --envId <envId>',
|
|
95
|
-
desc: '环境 Id'
|
|
96
|
-
}
|
|
97
|
-
],
|
|
98
|
-
desc: '部署静态网站文件'
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
@InjectParams()
|
|
103
|
-
async execute(@EnvId() envId, @ArgsParams() params, @Log() log: Logger) {
|
|
104
|
-
const localPath = params?.[0] || '.'
|
|
105
|
-
const cloudPath = params?.[1] || ''
|
|
106
|
-
|
|
107
|
-
log.verbose('本地目录', localPath)
|
|
108
|
-
|
|
109
|
-
const resolveLocalPath = path.resolve(localPath)
|
|
110
|
-
checkFullAccess(resolveLocalPath, true)
|
|
111
|
-
const isDir = isDirectory(resolveLocalPath)
|
|
112
|
-
|
|
113
|
-
const loading = loadingFactory()
|
|
114
|
-
loading.start('准备上传中...')
|
|
115
|
-
|
|
116
|
-
let totalFiles = 0
|
|
117
|
-
|
|
118
|
-
if (isDir) {
|
|
119
|
-
let files = await walkLocalDir(envId, resolveLocalPath)
|
|
120
|
-
files = files.filter((item) => !isDirectory(item))
|
|
121
|
-
totalFiles = files.length
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// 上传进度条
|
|
125
|
-
const onProgress = createUploadProgressBar(
|
|
126
|
-
() => {
|
|
127
|
-
!isDir && log.success('文件部署成功!')
|
|
128
|
-
},
|
|
129
|
-
() => {
|
|
130
|
-
loading.stop()
|
|
131
|
-
}
|
|
132
|
-
)
|
|
133
|
-
|
|
134
|
-
const successFiles = []
|
|
135
|
-
const failedFiles = []
|
|
136
|
-
|
|
137
|
-
await hostingDeploy({
|
|
138
|
-
filePath: resolveLocalPath,
|
|
139
|
-
cloudPath,
|
|
140
|
-
envId,
|
|
141
|
-
isDir,
|
|
142
|
-
onProgress,
|
|
143
|
-
onFileFinish: (...args) => {
|
|
144
|
-
const error = args[0]
|
|
145
|
-
const fileInfo = (args as any)[2]
|
|
146
|
-
if (error) {
|
|
147
|
-
failedFiles.push(fileInfo.Key)
|
|
148
|
-
} else {
|
|
149
|
-
successFiles.push(fileInfo.Key)
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
})
|
|
153
|
-
|
|
154
|
-
const info = await getHostingInfo({
|
|
155
|
-
envId
|
|
156
|
-
})
|
|
157
|
-
|
|
158
|
-
const website = info?.data?.[0]
|
|
159
|
-
|
|
160
|
-
const link = genClickableLink(`https://${website.cdnDomain}`)
|
|
161
|
-
log.success(`\n部署完成 👉 ${link}`)
|
|
162
|
-
|
|
163
|
-
if (isDir) {
|
|
164
|
-
log.success(`文件共计 ${totalFiles} 个`)
|
|
165
|
-
log.success(`文件上传成功 ${successFiles.length} 个`)
|
|
166
|
-
// 上传成功的文件
|
|
167
|
-
if (totalFiles <= 50) {
|
|
168
|
-
printHorizontalTable(
|
|
169
|
-
['状态', '文件'],
|
|
170
|
-
successFiles.map((item) => [logSymbols.success, item])
|
|
171
|
-
)
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
// 上传失败的文件
|
|
175
|
-
log.error(`文件上传失败 ${failedFiles.length} 个`)
|
|
176
|
-
if (failedFiles.length) {
|
|
177
|
-
if (totalFiles <= 50) {
|
|
178
|
-
printHorizontalTable(
|
|
179
|
-
['状态', '文件'],
|
|
180
|
-
failedFiles.map((item) => [logSymbols.error, item])
|
|
181
|
-
)
|
|
182
|
-
} else {
|
|
183
|
-
// 写入文件到本地
|
|
184
|
-
const errorLogPath = path.resolve('./cloudbase-error.log')
|
|
185
|
-
log.error('上传失败文件:')
|
|
186
|
-
console.log(errorLogPath)
|
|
187
|
-
fs.writeFileSync(errorLogPath, failedFiles.join('\n'))
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// 抛出错误
|
|
191
|
-
throw new CloudBaseError('部分文件上传失败,进程退出')
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
@ICommand()
|
|
198
|
-
export class HostingDeleteFiles extends Command {
|
|
199
|
-
get options() {
|
|
200
|
-
return {
|
|
201
|
-
cmd: 'hosting',
|
|
202
|
-
childCmd: 'delete [cloudPath]',
|
|
203
|
-
deprecateCmd: 'hosting:delete [cloudPath]',
|
|
204
|
-
options: [
|
|
205
|
-
{
|
|
206
|
-
flags: '-e, --envId <envId>',
|
|
207
|
-
desc: '环境 Id'
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
flags: '-d, --dir',
|
|
211
|
-
desc: '删除目标是否为文件夹'
|
|
212
|
-
}
|
|
213
|
-
],
|
|
214
|
-
desc: '删除静态网站文件/文件夹,文件夹需指定 --dir 选项'
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
@InjectParams()
|
|
219
|
-
async execute(@EnvId() envId, @ArgsOptions() options, @ArgsParams() params) {
|
|
220
|
-
const cloudPath = params?.[0] || ''
|
|
221
|
-
let isDir = options.dir
|
|
222
|
-
|
|
223
|
-
// 删除所有文件,危险操作,需要提示
|
|
224
|
-
if (!cloudPath) {
|
|
225
|
-
const { confirm } = await inquirer.prompt({
|
|
226
|
-
type: 'confirm',
|
|
227
|
-
name: 'confirm',
|
|
228
|
-
message: '指定云端路径为空,将会删除所有文件,是否继续',
|
|
229
|
-
default: false
|
|
230
|
-
})
|
|
231
|
-
if (!confirm) {
|
|
232
|
-
throw new CloudBaseError('操作终止!')
|
|
233
|
-
}
|
|
234
|
-
isDir = true
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
// cloudPath 为 / 时,只能删除文件夹
|
|
238
|
-
if (cloudPath === '/') {
|
|
239
|
-
isDir = true
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
const fileText = isDir ? '文件夹' : '文件'
|
|
243
|
-
|
|
244
|
-
const loading = loadingFactory()
|
|
245
|
-
loading.start(`删除${fileText}中...`)
|
|
246
|
-
|
|
247
|
-
try {
|
|
248
|
-
await hostingDelete({
|
|
249
|
-
envId,
|
|
250
|
-
isDir,
|
|
251
|
-
cloudPath
|
|
252
|
-
})
|
|
253
|
-
loading.succeed(`删除${fileText}成功!`)
|
|
254
|
-
} catch (e) {
|
|
255
|
-
loading.fail(`删除${fileText}失败!`)
|
|
256
|
-
throw new CloudBaseError(e.message)
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
@ICommand()
|
|
262
|
-
export class HostingList extends Command {
|
|
263
|
-
get options() {
|
|
264
|
-
return {
|
|
265
|
-
cmd: 'hosting',
|
|
266
|
-
childCmd: 'list',
|
|
267
|
-
deprecateCmd: 'hosting:list',
|
|
268
|
-
options: [
|
|
269
|
-
{
|
|
270
|
-
flags: '-e, --envId <envId>',
|
|
271
|
-
desc: '环境 Id'
|
|
272
|
-
}
|
|
273
|
-
],
|
|
274
|
-
desc: '展示文件列表'
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
@InjectParams()
|
|
279
|
-
async execute(@EnvId() envId) {
|
|
280
|
-
const loading = loadingFactory()
|
|
281
|
-
loading.start('获取文件列表中...')
|
|
282
|
-
|
|
283
|
-
try {
|
|
284
|
-
const list = await hostingList({
|
|
285
|
-
envId
|
|
286
|
-
})
|
|
287
|
-
loading.stop()
|
|
288
|
-
const head = ['序号', 'Key', 'LastModified', 'ETag', 'Size(KB)']
|
|
289
|
-
const notDir = (item) => !(Number(item.Size) === 0 && /\/$/g.test(item.Key))
|
|
290
|
-
const tableData = list
|
|
291
|
-
.filter(notDir)
|
|
292
|
-
.map((item, index) => [
|
|
293
|
-
index + 1,
|
|
294
|
-
item.Key,
|
|
295
|
-
formatDate(item.LastModified, 'yyyy-MM-dd hh:mm:ss'),
|
|
296
|
-
item.ETag,
|
|
297
|
-
String(formateFileSize(item.Size, 'KB'))
|
|
298
|
-
])
|
|
299
|
-
printHorizontalTable(head, tableData)
|
|
300
|
-
} catch (e) {
|
|
301
|
-
loading.fail('获取文件列表失败!')
|
|
302
|
-
throw new CloudBaseError(e.message)
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
@ICommand()
|
|
308
|
-
export class HostingDownloadCommand extends Command {
|
|
309
|
-
get options() {
|
|
310
|
-
return {
|
|
311
|
-
cmd: 'hosting',
|
|
312
|
-
childCmd: 'download <cloudPath> [localPath]',
|
|
313
|
-
options: [
|
|
314
|
-
{
|
|
315
|
-
flags: '-e, --envId <envId>',
|
|
316
|
-
desc: '环境 Id'
|
|
317
|
-
},
|
|
318
|
-
{
|
|
319
|
-
flags: '-d, --dir',
|
|
320
|
-
desc: '下载目标是否为文件夹'
|
|
321
|
-
}
|
|
322
|
-
],
|
|
323
|
-
desc: '下载文件/文件夹,文件夹需指定 --dir 选项'
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
@InjectParams()
|
|
328
|
-
async execute(@EnvId() envId, @ArgsOptions() options, @ArgsParams() params) {
|
|
329
|
-
let cloudPath: string = params?.[0]
|
|
330
|
-
const localPath = params?.[1] || '.'
|
|
331
|
-
const hostingService = await getHostingService(envId)
|
|
332
|
-
const resolveLocalPath = path.resolve(localPath)
|
|
333
|
-
|
|
334
|
-
const { dir } = options
|
|
335
|
-
const fileText = dir ? '文件夹' : '文件'
|
|
336
|
-
|
|
337
|
-
const loading = loadingFactory()
|
|
338
|
-
|
|
339
|
-
loading.start(`下载${fileText}中`)
|
|
340
|
-
|
|
341
|
-
// cloudPath 以 / 开头
|
|
342
|
-
if (/^\/.+/.test(cloudPath)) {
|
|
343
|
-
cloudPath = cloudPath.slice(1)
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
if (dir) {
|
|
347
|
-
await hostingService.downloadDirectory({
|
|
348
|
-
cloudPath,
|
|
349
|
-
localPath: resolveLocalPath
|
|
350
|
-
})
|
|
351
|
-
} else {
|
|
352
|
-
await hostingService.downloadFile({
|
|
353
|
-
cloudPath,
|
|
354
|
-
localPath: resolveLocalPath
|
|
355
|
-
})
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
loading.succeed(`下载${fileText}成功!`)
|
|
359
|
-
}
|
|
360
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './hosting'
|
package/src/commands/index.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export * from './common'
|
|
2
|
-
export * from './account'
|
|
3
|
-
export * from './env'
|
|
4
|
-
export * from './helpers'
|
|
5
|
-
export * from './functions'
|
|
6
|
-
export * from './hosting'
|
|
7
|
-
export * from './storage'
|
|
8
|
-
export * from './gateway'
|
|
9
|
-
export * from './third'
|
|
10
|
-
export * from './framework'
|
|
11
|
-
export * from './smart'
|
|
12
|
-
export * from './lowcode'
|
|
13
|
-
export * from './run'
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import _ from 'lodash'
|
|
2
|
-
import { Command, ICommand } from '../common'
|
|
3
|
-
import { watchApp } from '@cloudbase/lowcode-cli'
|
|
4
|
-
import { InjectParams, Log, Logger, CmdContext, ArgsOptions } from '../../decorators'
|
|
5
|
-
|
|
6
|
-
@ICommand()
|
|
7
|
-
export class LowCodeWatch extends Command {
|
|
8
|
-
get options() {
|
|
9
|
-
return {
|
|
10
|
-
cmd: 'lowcode',
|
|
11
|
-
childCmd: 'watch',
|
|
12
|
-
options: [
|
|
13
|
-
{
|
|
14
|
-
flags: '--verbose',
|
|
15
|
-
desc: '是否打印详细日志'
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
flags: '--wx-devtool-path <wxDevtoolPath>',
|
|
19
|
-
desc: '微信开发者工具的安装路径'
|
|
20
|
-
}
|
|
21
|
-
],
|
|
22
|
-
desc: '开启云开发低码的本地构建模式',
|
|
23
|
-
requiredEnvId: false
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
@InjectParams()
|
|
28
|
-
async execute(@CmdContext() ctx, @ArgsOptions() options) {
|
|
29
|
-
await watchApp({
|
|
30
|
-
watchPort: 8288,
|
|
31
|
-
wxDevtoolPath: options?.wxDevtoolPath
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
@ICommand()
|
|
37
|
-
export class DanielWatch extends Command {
|
|
38
|
-
get options() {
|
|
39
|
-
return {
|
|
40
|
-
cmd: 'lowcode',
|
|
41
|
-
childCmd: 'watch-ws',
|
|
42
|
-
options: [],
|
|
43
|
-
desc: '开启云开发低码的本地开发模式',
|
|
44
|
-
requiredEnvId: false
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
@InjectParams()
|
|
49
|
-
async execute(@CmdContext() ctx, @ArgsOptions() options) {
|
|
50
|
-
console.log('>>> 启动啦')
|
|
51
|
-
}
|
|
52
|
-
}
|