UNPKG

aws-iam-policy-tool

Version:
45 lines (44 loc) 1.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * export IAM polices to JSON files */ const promisedLife = require('promised-lifestream'); const stream_1 = require("./utils/stream"); const result_writer_1 = require("./utils/result_writer"); const file_1 = require("./utils/file"); const list_stream_1 = require("./aws/list_stream"); const result_1 = require("./utils/result"); const policy_1 = require("./aws/policy"); async function writePolicyFile(parentDir, entry) { const fileName = `${entry.policyName}.json`; try { await file_1.writeJSONFile(parentDir, fileName, entry.asJson()); return result_1.OK('Wrote %1', fileName); } catch (err) { return result_1.NG('Failed to write %1', fileName); } } async function main(outDir, nameMatcher, opts = {}) { const policyFetcher = new policy_1.PolicyFetcher(); try { return await promisedLife([ new list_stream_1.ListPolicyStream({ OnlyAttached: false, Scope: 'Local', }), stream_1.filterStream((policy) => { return !nameMatcher || policy.PolicyName.match(nameMatcher); }), stream_1.promisedStream((policy) => policyFetcher.getPolicyEntry(policy.Arn, policy.DefaultVersionId)), stream_1.promisedStream((entry) => writePolicyFile(outDir, entry)), result_writer_1.createWriter(opts), ]); } catch (err) { console.error(err.stack); return false; } } exports.main = main;