fix: fix bugs
This commit is contained in:
parent
3d99214656
commit
e525833fc8
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@kevisual/envision-cli",
|
||||
"version": "0.0.26",
|
||||
"version": "0.0.27",
|
||||
"description": "envision command tools",
|
||||
"main": "dist/index.js",
|
||||
"type": "module",
|
||||
|
@ -34,6 +34,13 @@ export const getTokenList = async () => {
|
||||
}
|
||||
return res;
|
||||
};
|
||||
export const setTokenList = async (data: any[]) => {
|
||||
const res = await runApp({ path: 'config', key: 'setTokenList', payload: { data } });
|
||||
if (res.code !== 200) {
|
||||
console.log('set token list failed', res.message || '');
|
||||
}
|
||||
return res;
|
||||
};
|
||||
// 定义login命令,支持 `-u` 和 `-p` 参数来输入用户名和密码
|
||||
const loginCommand = new Command('login')
|
||||
.description('Login to the application')
|
||||
@ -45,7 +52,7 @@ const loginCommand = new Command('login')
|
||||
const config = getConfig();
|
||||
let { username, password } = options;
|
||||
if (options.web) {
|
||||
await loginInCommand();
|
||||
await loginInCommand(saveToken);
|
||||
return;
|
||||
}
|
||||
// 如果没有传递参数,则通过交互式输入
|
||||
|
@ -3,7 +3,7 @@ import { getConfig, query, writeConfig } from '@/module/index.ts';
|
||||
import inquirer from 'inquirer';
|
||||
import util from 'util';
|
||||
|
||||
import { saveToken, switchToken, deleteToken, getTokenList } from './login.ts';
|
||||
import { saveToken, switchToken, deleteToken, getTokenList, setTokenList } from './login.ts';
|
||||
const token = new Command('token').description('show token').action(async () => {
|
||||
const config = getConfig();
|
||||
console.log('token', config.token);
|
||||
@ -51,7 +51,7 @@ const baseURL = new Command('baseURL')
|
||||
.option('-l, --list', 'list baseURL')
|
||||
.option('-c, --clear', 'clear baseURL')
|
||||
.action(async (opts) => {
|
||||
const config = getConfig();
|
||||
let config = getConfig();
|
||||
let list = (config.baseURLList as Array<string>) || [];
|
||||
const quineList = (list: string[]) => {
|
||||
const newList = new Set(list);
|
||||
@ -62,18 +62,34 @@ const baseURL = new Command('baseURL')
|
||||
console.log('expand baseURLList is empty');
|
||||
return;
|
||||
}
|
||||
const config = getConfig();
|
||||
console.log('----current baseURL:' + config.baseURL + '----\n');
|
||||
list.forEach((item, index) => {
|
||||
console.log(`${index + 1}: ${item}`);
|
||||
});
|
||||
};
|
||||
function isNumeric(str: string) {
|
||||
return /^-?\d+\.?\d*$/.test(str);
|
||||
}
|
||||
if (opts.add || opts.set) {
|
||||
let change = false;
|
||||
if (opts.add) {
|
||||
change = true;
|
||||
list.push(opts.add);
|
||||
} else if (opts.set) {
|
||||
if (!isNumeric(opts.set)) {
|
||||
change = true;
|
||||
list.push(opts.set);
|
||||
writeConfig({ ...config, baseURL: opts.set });
|
||||
config = getConfig();
|
||||
}
|
||||
}
|
||||
if (change) {
|
||||
list = quineList(list);
|
||||
console.log('add baseURL success\n');
|
||||
writeConfig({ ...config, baseURLList: list });
|
||||
config = getConfig();
|
||||
showList(list);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (opts.remove) {
|
||||
const index = Number(opts.remove) - 1;
|
||||
@ -89,7 +105,7 @@ const baseURL = new Command('baseURL')
|
||||
return;
|
||||
}
|
||||
if (opts.set) {
|
||||
const isNumber = !isNaN(Number(opts.set));
|
||||
const isNumber = isNumeric(opts.set);
|
||||
let baseURL = '';
|
||||
if (isNumber) {
|
||||
const index = Number(opts.set) - 1;
|
||||
@ -99,17 +115,9 @@ const baseURL = new Command('baseURL')
|
||||
}
|
||||
baseURL = list[index];
|
||||
writeConfig({ ...config, baseURL: list[index] });
|
||||
console.log('set baseURL success:', list[index]);
|
||||
showList(list);
|
||||
} else {
|
||||
try {
|
||||
new URL(opts.set);
|
||||
} catch (error) {
|
||||
console.log('invalid baseURL:', opts.set);
|
||||
return;
|
||||
}
|
||||
baseURL = opts.set;
|
||||
writeConfig({ ...config, baseURL: opts.set });
|
||||
console.log('set baseURL success:', opts.set);
|
||||
}
|
||||
baseURL && switchToken(baseURL);
|
||||
return;
|
||||
@ -120,14 +128,22 @@ const baseURL = new Command('baseURL')
|
||||
}
|
||||
if (opts.clear) {
|
||||
writeConfig({ ...config, baseURLList: [] });
|
||||
setTokenList([]);
|
||||
return;
|
||||
}
|
||||
console.log('current baseURL:', config.baseURL);
|
||||
});
|
||||
app.addCommand(baseURL);
|
||||
|
||||
const setBaseURL = new Command('set').description('set baseURL').action(async () => {
|
||||
const setBaseURL = new Command('set')
|
||||
.option('-b, --baseURL <baseURL>', 'set baseURL')
|
||||
// .argument('<baseURL>', 'set baseURL', '')
|
||||
.description('set baseURL')
|
||||
.action(async (opt) => {
|
||||
const config = getConfig();
|
||||
let baseURL = opt.baseURL;
|
||||
// let baseURL = opt;
|
||||
if (!baseURL) {
|
||||
const answers = await inquirer.prompt([
|
||||
{
|
||||
type: 'input',
|
||||
@ -135,7 +151,8 @@ const setBaseURL = new Command('set').description('set baseURL').action(async ()
|
||||
message: `Enter your baseURL:(current: ${config.baseURL})`,
|
||||
},
|
||||
]);
|
||||
const baseURL = answers.baseURL;
|
||||
baseURL = answers.baseURL;
|
||||
}
|
||||
writeConfig({ ...config, baseURL });
|
||||
baseURL && switchToken(baseURL);
|
||||
});
|
||||
|
@ -44,4 +44,5 @@ export const getConfig = () => {
|
||||
|
||||
export const writeConfig = (config: Record<string, any>) => {
|
||||
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
||||
return config;
|
||||
};
|
||||
|
@ -4,13 +4,7 @@ import { chalk } from '../chalk.ts';
|
||||
import jsonwebtoken from 'jsonwebtoken';
|
||||
import { BaseLoad } from '@kevisual/load';
|
||||
import { getConfig, writeConfig } from '../get-config.ts';
|
||||
const saveToken = async (token: string) => {
|
||||
const config = await getConfig();
|
||||
writeConfig({
|
||||
...config,
|
||||
token,
|
||||
});
|
||||
};
|
||||
|
||||
type LoginWithWebOptions = {};
|
||||
export const loginWithWeb = async (opts?: LoginWithWebOptions) => {
|
||||
const baseURL = getBaseURL();
|
||||
@ -36,6 +30,7 @@ export const loginWithWeb = async (opts?: LoginWithWebOptions) => {
|
||||
|
||||
type PollLoginOptions = {
|
||||
tokenSecret: string;
|
||||
saveToken?: any;
|
||||
};
|
||||
export const pollLoginStatus = async (token: string, opts: PollLoginOptions) => {
|
||||
const load = new BaseLoad();
|
||||
@ -75,8 +70,9 @@ export const pollLoginStatus = async (token: string, opts: PollLoginOptions) =>
|
||||
};
|
||||
const userToken = payload.userToken;
|
||||
// console.log('token:\n\n', userToken);
|
||||
console.log(chalk.green('登录成功', payload?.user?.username));
|
||||
await saveToken(userToken.token);
|
||||
console.log(chalk.green('网页登录成功', payload?.user?.username));
|
||||
console.log(chalk.green('token:', userToken.token));
|
||||
await opts?.saveToken(userToken.token);
|
||||
return;
|
||||
} catch (error) {
|
||||
console.log(chalk.red('登录失败'), error);
|
||||
@ -85,9 +81,9 @@ export const pollLoginStatus = async (token: string, opts: PollLoginOptions) =>
|
||||
console.log(chalk.red('登录失败'), res);
|
||||
};
|
||||
|
||||
export const loginInCommand = async () => {
|
||||
export const loginInCommand = async (saveToken: any) => {
|
||||
const { url, token, tokenSecret } = await loginWithWeb();
|
||||
await pollLoginStatus(token, { tokenSecret });
|
||||
await pollLoginStatus(token, { tokenSecret, saveToken });
|
||||
return url;
|
||||
};
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { app } from '@/app.ts';
|
||||
import { Config } from './model/config.ts';
|
||||
import { writeConfig } from '@/module/get-config.ts';
|
||||
import { getConfig, writeConfig } from '@/module/get-config.ts';
|
||||
import { queryMe } from '@/query/index.ts';
|
||||
const cacheToken = 'tokenList';
|
||||
export type TokenCacheItem = {
|
||||
baseURL?: string;
|
||||
@ -151,13 +152,20 @@ app
|
||||
const tokenList: TokenCacheItem[] = configRes.body?.value || [];
|
||||
const index = tokenList.findIndex((item) => item.baseURL === baseURL);
|
||||
const token = index > -1 ? tokenList[index].token : '';
|
||||
if (index > -1 && token) {
|
||||
writeConfig({ token: tokenList[index].token });
|
||||
if (token) {
|
||||
const config = getConfig();
|
||||
const resMe = await queryMe();
|
||||
if (resMe.code !== 200) {
|
||||
writeConfig({ ...config, token: '' });
|
||||
ctx.throw(resMe.code, resMe.message || 'cache token is invalid');
|
||||
}
|
||||
writeConfig({ ...config, token: token });
|
||||
ctx.body = {
|
||||
baseURL: baseURL,
|
||||
token: tokenList[index].token,
|
||||
};
|
||||
} else {
|
||||
writeConfig({ ...getConfig(), token: '' });
|
||||
ctx.throw(404, 'Token not found');
|
||||
}
|
||||
})
|
||||
|
Loading…
x
Reference in New Issue
Block a user