aws-iam-policy-tool
Version:
AWS IAM role/policy management cli tool
57 lines (56 loc) • 2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
* delete matched IAM polices
*/
const StreamUtils = require('@tilfin/stream-utils');
const promisedLife = require('promised-lifestream');
const prompt_1 = __importDefault(require("./utils/prompt"));
const list_stream_1 = require("./aws/list_stream");
const stream_1 = require("./utils/stream");
const result_writer_1 = require("./utils/result_writer");
const policy_cleaner_1 = require("./logic/policy_cleaner");
async function main(nameMatcher, opts = {}) {
const needConfirm = !opts.noconfirm;
try {
const policies = await promisedLife([
new list_stream_1.ListPolicyStream({
OnlyAttached: false,
Scope: 'Local',
}),
stream_1.filterStream((policy) => {
if (policy.PolicyName.match(nameMatcher)) {
if (needConfirm)
console.info(policy.Arn);
return true;
}
return false;
}),
], { needResult: true });
if (policies.length === 0) {
console.info('Not found policies');
return;
}
if (needConfirm) {
const answer = await prompt_1.default('Do you really delete above policies? yes|no> ');
if (answer !== 'yes') {
console.info('Abort.');
return;
}
}
const policyCleaner = new policy_cleaner_1.PolicyCleaner();
return promisedLife([
StreamUtils.readArray(policies),
stream_1.promisedStream((policy) => policyCleaner.delete(policy)),
result_writer_1.createWriter(opts),
]);
}
catch (err) {
console.error(err.stack);
return false;
}
}
exports.main = main;