Files
cli/src/command/ls-token.ts
2025-03-30 20:23:45 +08:00

149 lines
4.4 KiB
TypeScript

import { program as app, Command } from '@/program.ts';
import { getConfig, writeConfig } from '@/module/index.ts';
import { queryLogin, storage } from '@/module/query.ts';
import inquirer from 'inquirer';
import util from 'util';
const token = new Command('token').description('show token').action(async () => {
const token = storage.getItem('token');
console.log('token', token);
});
const tokenList = new Command('list')
.description('show token list')
// .option('-r --remove <number>', 'remove token by number')
.action(async (opts) => {
console.log('show token list');
queryLogin.cacheStore.init()
// const res = await queryLogin.cacheStore.cache.get('token');
console.log(queryLogin.cacheStore.cacheData);
// console.log(util.inspect(res, { colors: true, depth: 4 }));
});
token.addCommand(tokenList);
app.addCommand(token);
const baseURL = new Command('baseURL')
.alias('base')
.alias('registry')
.description('show baseURL')
.option('-a, --add <baseURL>', 'add baseURL')
.option('-r, --remove <number>', 'remove baseURL number')
.option('-s, --set <number|string>', 'set current baseURL, use number to set from list or string to set')
.option('-l, --list', 'list baseURL')
.option('-c, --clear', 'clear baseURL')
.action(async (opts) => {
let config = getConfig();
let list = (config.baseURLList as Array<string>) || [];
const quineList = (list: string[]) => {
const newList = new Set(list);
return Array.from(newList);
};
const showList = (list: string[]) => {
if (list.length === 0) {
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);
writeConfig({ ...config, baseURLList: list });
config = getConfig();
showList(list);
}
}
if (opts.remove) {
const index = Number(opts.remove) - 1;
if (index < 0 || index >= list.length) {
console.log('index out of range');
return;
}
const removeBase = list.splice(index, 1);
list = quineList(list);
showList(list);
writeConfig({ ...config, baseURLList: list });
removeBase[0];
return;
}
if (opts.set) {
const isNumber = isNumeric(opts.set);
let baseURL = '';
if (isNumber) {
const index = Number(opts.set) - 1;
if (index < 0 || index >= list.length) {
console.log('index out of range');
return;
}
baseURL = list[index];
writeConfig({ ...config, baseURL: list[index] });
showList(list);
} else {
baseURL = opts.set;
}
return;
}
if (opts.list) {
showList(list);
return;
}
if (opts.clear) {
writeConfig({ ...config, baseURLList: [] });
return;
}
if (!config.baseURL) {
config = getConfig();
writeConfig({ ...config, baseURL: 'https://kevisual.cn' });
config = getConfig();
}
console.log('current baseURL:', config.baseURL);
});
app.addCommand(baseURL);
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',
name: 'baseURL',
message: `Enter your baseURL:(current: ${config.baseURL})`,
},
]);
baseURL = answers.baseURL;
}
writeConfig({ ...config, baseURL });
});
baseURL.addCommand(setBaseURL);
// const showQueryURL = new Command('showQueryURL').description('show query URL').action(async () => {
// console.log("url", query.url);
// });
// app.addCommand(showQueryURL);