alks
Version:
CLI for working with ALKS
66 lines (57 loc) • 1.71 kB
text/typescript
import clc from 'cli-color';
import commander from 'commander';
import { contains } from 'underscore';
import { checkForUpdate } from '../checkForUpdate';
import { errorAndExit } from '../errorAndExit';
import { getAlks } from '../getAlks';
import { getAuth } from '../getAuth';
import { log } from '../log';
import { getOutputValuesRoleTypes } from '../getOutputValues';
export async function handleAlksIamRoleTypes(options: commander.OptionValues) {
const outputVals = getOutputValuesRoleTypes();
const output = options.output;
if (!contains(outputVals, output)) {
errorAndExit(
'The output provided (' +
output +
') is not in the allowed values: ' +
outputVals.join(', ')
);
}
try {
log('getting auth');
const auth = await getAuth();
const alks = await getAlks({
...auth,
});
log('getting list of role types from REST API');
let roleTypes;
try {
roleTypes = await alks.getAllAWSRoleTypes({});
} catch (err) {
errorAndExit(err as Error);
}
log(
'outputting list of ' +
(roleTypes ? roleTypes.length : -1) +
' role types'
);
console.error(clc.white.underline.bold('\nAvailable IAM Role Types'));
if (output === 'list') {
for (const [index, roleType] of roleTypes.entries()) {
console.log(
clc.white(
`${String(index).padStart(2, ' ')}) ${roleType.roleTypeName}`
)
);
}
} else {
console.log(
JSON.stringify(roleTypes.map((roleType) => roleType.roleTypeName))
);
}
await checkForUpdate();
} catch (err) {
errorAndExit((err as Error).message, err as Error);
}
}