alks
Version:
CLI for working with ALKS
62 lines (51 loc) • 1.86 kB
text/typescript
import clc from 'cli-color';
import commander from 'commander';
import { checkForUpdate } from '../checkForUpdate';
import { errorAndExit } from '../errorAndExit';
import { log } from '../log';
import Table from 'cli-table3';
import { isEmpty } from 'underscore';
import { Developer } from '../../model/developer';
import { getPassword } from '../state/password';
import { getToken } from '../state/token';
import { getDeveloper } from '../state/developer';
export async function handleAlksDeveloperInfo(
_options: commander.OptionValues
) {
const table = new Table({
head: [clc.white.bold('Key'), clc.white.bold('Value')],
colWidths: [25, 50],
});
try {
log('getting developer');
const developer = await getDeveloper();
log('getting password');
const password = await getPassword();
log('getting 2fa token');
const token = await getToken();
const mapping: Partial<Record<keyof Developer, string>> = {
server: 'ALKS Server',
userid: 'Network Login',
alksAccount: 'Default ALKS Account',
alksRole: 'Default ALKS Role',
outputFormat: 'Default Output Format',
};
for (const [key, label] of Object.entries(mapping)) {
const value = developer[key as keyof Developer];
table.push([label, isEmpty(value) ? '' : value]);
}
const tablePassword = !isEmpty(password)
? '**********'
: clc.red('NOT SET');
table.push(['Password', tablePassword]);
const tableToken = !isEmpty(token)
? (token as string).substring(0, 4) + '**********'
: clc.red('NOT SET');
table.push(['2FA Token', tableToken]);
console.error(clc.white.underline.bold('\nDeveloper Configuration'));
console.log(clc.white(table.toString()));
await checkForUpdate();
} catch (err) {
errorAndExit((err as Error).message, err as Error);
}
}