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

Commit dace477

Browse files
committed
refactor local store & update dependencies
1 parent 20015bb commit dace477

90 files changed

Lines changed: 3648 additions & 2504 deletions

Some content is hidden

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

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,14 @@ yarn global add @cloudbase/cli
2222
0.1.5
2323
```
2424

25+
## CloudBase CLI 运行要求
26+
27+
**Node.js 8.6.0+**
28+
2529
## 文档
2630

2731
请访问[教程与文档](https://tencentcloudbase.github.io/2019-09-03-cli/)了解详细的使用方法。
2832

2933
## 意见反馈
3034

31-
您可以到 GitHub Repo 新建一个 [issue](https://github.com/TencentCloudBase/cloud-base-cli/issues) 反馈您在使用过程中遇到的问题或建议。
35+
您可以到 GitHub Repo 新建一个 [issue](https://github.com/TencentCloudBase/cloud-base-cli/issues) 反馈您在使用过程中遇到的问题或建议。

bin/cloudbase.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/usr/bin/env node
2+
const os = require('os')
23
const chalk = require('chalk')
34
const Sentry = require('@sentry/node')
45
const program = require('commander')
@@ -11,7 +12,11 @@ const isBeta = pkg.version.indexOf('-') > -1
1112
// Sentry 错误上报
1213
Sentry.init({
1314
release: pkg.version,
14-
dsn: 'https://fff0077d06624655ad70d1ee25df419e@report.url.cn/sentry/1782'
15+
dsn: 'https://fff0077d06624655ad70d1ee25df419e@report.url.cn/sentry/1782',
16+
httpsProxy: process.env.http_proxy || '',
17+
serverName: os.hostname()
18+
// 忽略错误,正则匹配
19+
// ignoreErrors
1520
})
1621

1722
// 检查更新
@@ -33,6 +38,20 @@ notifier.notify({
3338
// 注册命令
3439
require('../lib')
3540

41+
const store = require('../lib/utils/store')
42+
43+
// 设置用户的 uin
44+
Sentry.configureScope(scope => {
45+
try {
46+
const credential = store.authStore.get('credential') || {}
47+
scope.setUser({
48+
uin: credential.uin || ''
49+
})
50+
} catch (e) {
51+
Sentry.captureException(e)
52+
}
53+
})
54+
3655
program.option(
3756
'--config-file <path>',
3857
'设置配置文件,默认为 ./cloudbaserc.js 或 .cloudbaserc.json'
@@ -81,6 +100,9 @@ function errorHandler(err) {
81100
// 3 空格,兼容中文字符编码长度问题
82101
console.log(logSymbols.error + ' ' + err.message)
83102
process.emit('tcbExit')
103+
setTimeout(() => {
104+
process.exit(1)
105+
}, 1000)
84106
}
85107

86108
process.on('uncaughtException', errorHandler)

lib/auth/auth.js

Lines changed: 0 additions & 117 deletions
This file was deleted.

lib/auth/index.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,5 @@ function __export(m) {
33
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
44
}
55
Object.defineProperty(exports, "__esModule", { value: true });
6-
__export(require("./auth"));
76
__export(require("./login"));
87
__export(require("./logout"));

lib/auth/login.js

Lines changed: 55 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
"use strict";
2+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3+
return new (P || (P = Promise))(function (resolve, reject) {
4+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6+
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7+
step((generator = generator.apply(thisArg, _arguments || [])).next());
8+
});
9+
};
210
Object.defineProperty(exports, "__esModule", { value: true });
3-
const auth_1 = require("./auth");
411
const utils_1 = require("../utils");
512
const constant_1 = require("../constant");
6-
const configstore_1 = require("../utils/configstore");
713
const tcbService = new utils_1.CloudService('tcb', '2018-06-08');
8-
async function checkAuth(credential) {
9-
const { tmpSecretId, tmpSecretKey, tmpToken } = credential;
10-
tcbService.setCredential(tmpSecretId, tmpSecretKey, tmpToken);
11-
return await tcbService.request('DescribeEnvs');
14+
function checkAuth(credential) {
15+
return __awaiter(this, void 0, void 0, function* () {
16+
const { tmpSecretId, tmpSecretKey, tmpToken } = credential;
17+
tcbService.setCredential(tmpSecretId, tmpSecretKey, tmpToken);
18+
return yield tcbService.request('DescribeEnvs');
19+
});
1220
}
1321
const LoginRes = {
1422
SUCCESS: {
@@ -36,84 +44,62 @@ const LoginRes = {
3644
};
3745
}
3846
};
39-
async function loginWithToken() {
40-
const tcbrc = utils_1.getCredentialConfig();
41-
if (tcbrc.secretId && tcbrc.secretKey) {
42-
try {
43-
const { secretId, secretKey } = tcbrc;
44-
await checkAuth({
45-
tmpSecretId: secretId,
46-
tmpSecretKey: secretKey
47-
});
47+
function loginWithToken() {
48+
return __awaiter(this, void 0, void 0, function* () {
49+
const isLogin = yield utils_1.checkAndGetCredential();
50+
if (isLogin) {
4851
return LoginRes.SUCCESS;
4952
}
53+
let credential;
54+
try {
55+
credential = yield utils_1.getAuthTokenFromWeb();
56+
}
5057
catch (e) {
51-
configstore_1.configStore.delete('secretId');
52-
configstore_1.configStore.delete('secretKey');
58+
return LoginRes.UNKNOWN_ERROR(e.message);
59+
}
60+
if (!credential.refreshToken || !credential.uin) {
61+
return LoginRes.INVALID_TOKEN;
5362
}
54-
}
55-
if (tcbrc.refreshToken) {
5663
try {
57-
await checkAuth(tcbrc);
58-
return LoginRes.SUCCESS;
64+
yield checkAuth(credential);
5965
}
6066
catch (e) {
67+
return LoginRes.UNKNOWN_ERROR(e.message);
6168
}
62-
}
63-
let credential;
64-
try {
65-
credential = await auth_1.getAuthTokenFromWeb();
66-
}
67-
catch (e) {
68-
return LoginRes.UNKNOWN_ERROR(e.message);
69-
}
70-
if (!credential.refreshToken || !credential.uin) {
71-
return LoginRes.INVALID_TOKEN;
72-
}
73-
try {
74-
await checkAuth(credential);
75-
}
76-
catch (e) {
77-
return LoginRes.UNKNOWN_ERROR(e.message);
78-
}
79-
configstore_1.configStore.set(constant_1.ConfigItems.credentail, credential);
80-
return LoginRes.SUCCESS;
69+
utils_1.authStore.set(constant_1.ConfigItems.credentail, credential);
70+
return LoginRes.SUCCESS;
71+
});
8172
}
8273
exports.loginWithToken = loginWithToken;
83-
async function loginWithKey(secretId, secretKey) {
84-
const tcbrc = await utils_1.getCredentialConfig();
85-
if (tcbrc.secretId && tcbrc.secretKey) {
86-
try {
87-
const { secretId, secretKey } = tcbrc;
88-
await checkAuth({
89-
tmpSecretId: secretId,
90-
tmpSecretKey: secretKey
91-
});
74+
function loginWithKey(secretId, secretKey) {
75+
return __awaiter(this, void 0, void 0, function* () {
76+
const hasLogin = yield utils_1.checkAndGetCredential();
77+
if (hasLogin) {
9278
return LoginRes.SUCCESS;
9379
}
80+
if (!secretId || !secretKey) {
81+
return LoginRes.INVALID_PARAM('SecretID 或 SecretKey 不能为空');
82+
}
83+
try {
84+
yield checkAuth({ tmpSecretId: secretId, tmpSecretKey: secretKey });
85+
}
9486
catch (e) {
87+
return LoginRes.CHECK_LOGIN_FAILED;
9588
}
96-
}
97-
if (!secretId || !secretKey) {
98-
return LoginRes.INVALID_PARAM('SecretID 或 SecretKey 不能为空');
99-
}
100-
try {
101-
await checkAuth({ tmpSecretId: secretId, tmpSecretKey: secretKey });
102-
}
103-
catch (e) {
104-
return LoginRes.CHECK_LOGIN_FAILED;
105-
}
106-
configstore_1.configStore.set(constant_1.ConfigItems.credentail, { secretId, secretKey });
107-
return LoginRes.SUCCESS;
89+
utils_1.authStore.set(constant_1.ConfigItems.credentail, { secretId, secretKey });
90+
return LoginRes.SUCCESS;
91+
});
10892
}
10993
exports.loginWithKey = loginWithKey;
110-
async function login(options) {
111-
if (options && options.key) {
112-
const { secretId, secretKey } = options;
113-
return await loginWithKey(secretId, secretKey);
114-
}
115-
else {
116-
return await loginWithToken();
117-
}
94+
function login(options) {
95+
return __awaiter(this, void 0, void 0, function* () {
96+
if (options && options.key) {
97+
const { secretId, secretKey } = options;
98+
return yield loginWithKey(secretId, secretKey);
99+
}
100+
else {
101+
return yield loginWithToken();
102+
}
103+
});
118104
}
119105
exports.login = login;

lib/auth/logout.js

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,31 @@
11
"use strict";
2+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3+
return new (P || (P = Promise))(function (resolve, reject) {
4+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6+
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7+
step((generator = generator.apply(thisArg, _arguments || [])).next());
8+
});
9+
};
210
Object.defineProperty(exports, "__esModule", { value: true });
3-
const configstore_1 = require("../utils/configstore");
11+
const utils_1 = require("../utils");
412
const constant_1 = require("../constant");
513
const logger_1 = require("../logger");
6-
const auth_1 = require("./auth");
7-
const utils_1 = require("../utils");
8-
async function logout() {
9-
const credentail = utils_1.getCredentialConfig();
10-
try {
11-
await auth_1.refreshTmpToken(Object.assign({}, credentail, { isLogout: true }));
12-
configstore_1.configStore.delete(constant_1.ConfigItems.credentail);
13-
configstore_1.configStore.delete(constant_1.ConfigItems.ssh);
14-
logger_1.successLog('注销登录成功!');
15-
}
16-
catch (e) {
17-
configstore_1.configStore.delete(constant_1.ConfigItems.credentail);
18-
configstore_1.configStore.delete(constant_1.ConfigItems.ssh);
19-
logger_1.successLog('注销登录成功!');
20-
}
14+
const error_1 = require("../error");
15+
function logout() {
16+
return __awaiter(this, void 0, void 0, function* () {
17+
const credentail = utils_1.getCredentialData();
18+
try {
19+
yield utils_1.refreshTmpToken(Object.assign({}, credentail, { isLogout: true }));
20+
utils_1.authStore.delete(constant_1.ConfigItems.credentail);
21+
utils_1.authStore.delete(constant_1.ConfigItems.ssh);
22+
logger_1.successLog('注销登录成功!');
23+
}
24+
catch (e) {
25+
utils_1.authStore.delete(constant_1.ConfigItems.credentail);
26+
utils_1.authStore.delete(constant_1.ConfigItems.ssh);
27+
throw new error_1.CloudBaseError('云端设备登录记录删除失败,请手动删除!');
28+
}
29+
});
2130
}
2231
exports.logout = logout;

0 commit comments

Comments
 (0)