alks
Version:
CLI for working with ALKS
79 lines (68 loc) • 2.1 kB
text/typescript
import ALKS from 'alks.js';
import commander from 'commander';
import inquirer from 'inquirer';
import { contains } from 'underscore';
import { checkForUpdate } from '../checkForUpdate';
import { errorAndExit } from '../errorAndExit';
import { getAccountDelim } from '../getAccountDelim';
import { getAlks } from '../getAlks';
import { getAuth } from '../getAuth';
import { getFavorites } from '../getFavorites';
import { log } from '../log';
import { saveFavorites } from '../saveFavorites';
export async function handleAlksDeveloperFavorites(
_options: commander.OptionValues
) {
try {
log('getting auth');
const auth = await getAuth();
const alks = await getAlks({
...auth,
});
log('getting alks accounts');
const alksAccounts = await alks.getAccounts();
log('getting favorite accounts');
const favorites = await getFavorites();
const choices = [];
const deferred: ALKS.Account[] = [];
log('rendering favorite accounts');
choices.push(new inquirer.Separator(' = Standard = '));
alksAccounts.forEach((alksAccount) => {
if (!alksAccount.iamKeyActive) {
const name = [alksAccount.account, alksAccount.role].join(
getAccountDelim()
);
choices.push({
name,
value: name,
checked: contains(favorites, name),
});
} else {
deferred.push(alksAccount);
}
});
choices.push(new inquirer.Separator(' = IAM = '));
deferred.forEach((val) => {
const name = [val.account, val.role].join(getAccountDelim());
choices.push({
name,
value: name,
checked: contains(favorites, name),
});
});
const faves = await inquirer.prompt([
{
type: 'checkbox',
message: 'Select favorites',
name: 'favorites',
choices,
pageSize: 25,
},
]);
await saveFavorites({ accounts: faves });
console.log('Favorites have been saved!');
await checkForUpdate();
} catch (err) {
errorAndExit((err as Error).message, err as Error);
}
}