Skip to content
This repository was archived by the owner on May 6, 2025. It is now read-only.

Commit 8ee9ca8

Browse files
committed
[refactor] refactor command handler methods
1 parent e2b1916 commit 8ee9ca8

154 files changed

Lines changed: 3256 additions & 2442 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
" Press ? for help
2+
3+
.. (up a dir)
4+
</Desktop/cloud-base-cli/
5+
▸  .vscode/
6+
▸  bin/
7+
▸  cloudbase/
8+
▸  docs/
9+
▸  lib/
10+
▸  node_modules/
11+
▸  runtime/
12+
▸  scripts/
13+
▸  src/
14+
▸  templates/
15+
▸  test/
16+
▸  types/
17+
 .editorconfig
18+
 .eslintignore
19+
 .eslintrc
20+
 .gitignore
21+
 .npmignore
22+
 .prettierignore
23+
 .prettierrc.js
24+
 cloudbaserc.js
25+
 jest.config.js
26+
 LICENSE
27+
 package-lock.json
28+
 package.json
29+
 README.md
30+
 tsconfig.json
31+
 tsconfig.test.json

NERD_tree_1

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
" Press ? for help
2+
3+
.. (up a dir)
4+
</Desktop/cloud-base-cli/
5+
▸  .vscode/
6+
▸  bin/
7+
▸  cloudbase/
8+
▸  docs/
9+
▸  lib/
10+
▸  node_modules/
11+
▸  runtime/
12+
▸  scripts/
13+
▸  src/
14+
▸  templates/
15+
▸  test/
16+
▸  types/
17+
 .editorconfig
18+
 .eslintignore
19+
 .eslintrc
20+
 .gitignore
21+
 .npmignore
22+
 .prettierignore
23+
 .prettierrc.js
24+
 cloudbaserc.js
25+
 jest.config.js
26+
 LICENSE
27+
 package-lock.json
28+
 package.json
29+
 README.md
30+
 tsconfig.json
31+
 tsconfig.test.json

bin/cloudbase.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,7 @@ try {
158158
}
159159

160160
function errorHandler(err) {
161+
console.log(err)
161162
process.emit('tcbError')
162163
const stackIngoreErrors = ['TencentCloudSDKHttpException', 'CloudBaseError']
163164
// 忽略自定义错误的错误栈

cloudbaserc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module.exports = {
2-
envId: 'tcli',
2+
envId: 'test-6df222',
33
functionRoot: './cloudbase/functions',
44
functions: [
55
{

lib/commands/account/index.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
const command_1 = require("../command");
4+
const login_1 = require("./login");
5+
const logout_1 = require("./logout");
6+
const commands = [
7+
{
8+
cmd: 'login',
9+
options: [
10+
{
11+
flags: '-k, --key',
12+
desc: '使用永久密钥登录'
13+
}
14+
],
15+
desc: '登录腾讯云账号',
16+
handler: login_1.accountLogin,
17+
requiredEnvId: false
18+
},
19+
{
20+
cmd: 'logout',
21+
options: [],
22+
desc: '登出腾讯云账号',
23+
handler: logout_1.accountLogout,
24+
requiredEnvId: false
25+
}
26+
];
27+
commands.forEach(item => {
28+
const command = new command_1.Command(item);
29+
command.init();
30+
});
Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
1313
};
1414
Object.defineProperty(exports, "__esModule", { value: true });
1515
const chalk_1 = __importDefault(require("chalk"));
16-
const commander_1 = __importDefault(require("commander"));
1716
const inquirer_1 = __importDefault(require("inquirer"));
18-
const auth_1 = require("../auth");
19-
const env_1 = require("../env");
20-
const error_1 = require("../error");
21-
const utils_1 = require("../utils");
22-
const logger_1 = require("../logger");
17+
const auth_1 = require("../../auth");
18+
const env_1 = require("../../env");
19+
const error_1 = require("../../error");
20+
const utils_1 = require("../../utils");
21+
const logger_1 = require("../../logger");
2322
function printSuggestion() {
2423
const tips = `可使用下面命令继续操作:
2524
@@ -42,11 +41,7 @@ ${chalk_1.default.gray('–')} 查看命令使用介绍
4241
Tips:可以使用简写命令 tcb 代替 cloudbase`;
4342
console.log(tips);
4443
}
45-
commander_1.default
46-
.command('login')
47-
.option('-k, --key', '使用永久密钥登录')
48-
.description('登录腾讯云账号')
49-
.action(function (options) {
44+
function accountLogin(options) {
5045
return __awaiter(this, void 0, void 0, function* () {
5146
const loading = utils_1.loadingFactory();
5247
loading.start('检验登录状态');
@@ -116,4 +111,5 @@ commander_1.default
116111
}
117112
}
118113
});
119-
});
114+
}
115+
exports.accountLogin = accountLogin;
Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
88
step((generator = generator.apply(thisArg, _arguments || [])).next());
99
});
1010
};
11-
var __importDefault = (this && this.__importDefault) || function (mod) {
12-
return (mod && mod.__esModule) ? mod : { "default": mod };
13-
};
1411
Object.defineProperty(exports, "__esModule", { value: true });
15-
const commander_1 = __importDefault(require("commander"));
16-
const auth_1 = require("../auth");
17-
const logger_1 = require("../logger");
18-
commander_1.default
19-
.command('logout')
20-
.description('登出腾讯云账号')
21-
.action(() => __awaiter(void 0, void 0, void 0, function* () {
22-
yield auth_1.logout();
23-
logger_1.successLog('注销登录成功!');
24-
}));
12+
const auth_1 = require("../../auth");
13+
const logger_1 = require("../../logger");
14+
function accountLogout() {
15+
return __awaiter(this, void 0, void 0, function* () {
16+
yield auth_1.logout();
17+
logger_1.successLog('注销登录成功!');
18+
});
19+
}
20+
exports.accountLogout = accountLogout;

lib/commands/command.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
"use strict";
2+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4+
return new (P || (P = Promise))(function (resolve, reject) {
5+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8+
step((generator = generator.apply(thisArg, _arguments || [])).next());
9+
});
10+
};
11+
var __importDefault = (this && this.__importDefault) || function (mod) {
12+
return (mod && mod.__esModule) ? mod : { "default": mod };
13+
};
14+
Object.defineProperty(exports, "__esModule", { value: true });
15+
const commander_1 = __importDefault(require("commander"));
16+
const events_1 = require("events");
17+
const utils_1 = require("../utils");
18+
const error_1 = require("../error");
19+
const validOptions = options => {
20+
if (!options || !options.parent) {
21+
throw new error_1.CloudBaseError('参数异常,请检查您是否输入了正确的命令!');
22+
}
23+
};
24+
class Command extends events_1.EventEmitter {
25+
constructor(options) {
26+
super();
27+
this.options = options;
28+
}
29+
on(event, listener) {
30+
super.on(event, listener);
31+
return this;
32+
}
33+
init() {
34+
const { cmd, options, desc, handler, requiredEnvId = true } = this.options;
35+
let instance = commander_1.default.command(cmd);
36+
options.forEach(option => {
37+
instance = instance.option(option.flags, option.desc);
38+
});
39+
instance.description(desc);
40+
instance.action((...args) => __awaiter(this, void 0, void 0, function* () {
41+
var _a, _b, _c;
42+
const cmdOptions = (_a = args.splice(-1)) === null || _a === void 0 ? void 0 : _a[0];
43+
const configPath = (_c = (_b = cmdOptions) === null || _b === void 0 ? void 0 : _b.parent) === null || _c === void 0 ? void 0 : _c.configFile;
44+
const config = yield utils_1.resolveCloudBaseConfig(configPath);
45+
const envId = yield utils_1.getEnvId(cmdOptions);
46+
if (!envId && requiredEnvId) {
47+
throw new error_1.CloudBaseError('未识别到有效的环境 Id 变量,请在项目根目录进行操作或通过 -e 参数指定环境 Id');
48+
}
49+
validOptions(cmdOptions);
50+
const ctx = {
51+
cmd,
52+
envId,
53+
config,
54+
options: cmdOptions
55+
};
56+
this.emit('pre-run', ctx, args);
57+
this.preRun();
58+
handler(ctx, ...args);
59+
}));
60+
}
61+
preRun() { }
62+
}
63+
exports.Command = Command;

lib/commands/env/base.js

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
88
step((generator = generator.apply(thisArg, _arguments || [])).next());
99
});
1010
};
11-
var __importDefault = (this && this.__importDefault) || function (mod) {
12-
return (mod && mod.__esModule) ? mod : { "default": mod };
13-
};
1411
Object.defineProperty(exports, "__esModule", { value: true });
15-
const commander_1 = __importDefault(require("commander"));
1612
const env_1 = require("../../env");
1713
const utils_1 = require("../../utils");
1814
const error_1 = require("../../error");
1915
const logger_1 = require("../../logger");
20-
commander_1.default
21-
.command('env:list')
22-
.description('展示云开发环境信息')
23-
.action(function () {
16+
function list() {
2417
return __awaiter(this, void 0, void 0, function* () {
2518
const data = yield env_1.listEnvs();
2619
const head = ['名称', '环境 Id', '套餐版本', '来源', '创建时间', '环境状态'];
@@ -47,21 +40,18 @@ commander_1.default
4740
logger_1.warnLog(`您的环境中存在不可用的环境:[${unavailableEnv.EnvId}],请留意!`);
4841
}
4942
});
50-
});
51-
commander_1.default
52-
.command('env:rename <name>')
53-
.option('-e, --envId <envId>', '环境 Id')
54-
.description('修改云开发环境别名')
55-
.action(function (name, options) {
43+
}
44+
exports.list = list;
45+
function rename(ctx, name) {
5646
return __awaiter(this, void 0, void 0, function* () {
5747
if (!name) {
5848
throw new error_1.CloudBaseError('环境名称不能为空!');
5949
}
60-
const assignEnvId = yield utils_1.getEnvId(options);
6150
yield env_1.updateEnvInfo({
62-
envId: assignEnvId,
51+
envId: ctx.envId,
6352
alias: name
6453
});
6554
logger_1.successLog('更新环境名成功 !');
6655
});
67-
});
56+
}
57+
exports.rename = rename;

lib/commands/env/create.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
1212
return (mod && mod.__esModule) ? mod : { "default": mod };
1313
};
1414
Object.defineProperty(exports, "__esModule", { value: true });
15-
const commander_1 = __importDefault(require("commander"));
1615
const inquirer_1 = __importDefault(require("inquirer"));
1716
const env_1 = require("../../env");
1817
const utils_1 = require("../../utils");
1918
const error_1 = require("../../error");
20-
commander_1.default
21-
.command('env:create <alias>')
22-
.description('创建云开发免费环境')
23-
.action(function (alias) {
19+
function create(ctx, alias) {
2420
return __awaiter(this, void 0, void 0, function* () {
2521
if (!alias) {
2622
throw new error_1.CloudBaseError('环境名称不能为空!');
@@ -68,4 +64,5 @@ commander_1.default
6864
loading.succeed('创建环境成功,初始化预计需要花费 3 分钟');
6965
console.log('你可以使用 cloudbase init 创建云开发项目');
7066
});
71-
});
67+
}
68+
exports.create = create;

0 commit comments

Comments
 (0)