UNPKG

aws-iam-policy-tool

Version:
57 lines (56 loc) 2 kB
"use strict"; 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;