UNPKG

aws-iam-policy-tool

Version:
69 lines (68 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const stream_1 = require("stream"); class ConsoleResultWriter extends stream_1.Writable { constructor(opts = {}) { super({ objectMode: true }); const opts_ = opts || {}; this._plain = opts_['plain'] || false; if (this._plain) { this._statusStrMap = { OK: ' [OK] ', NG: ' [NG] ', Skip: '[Skip]', }; } else { this._statusStrMap = { OK: ' \x1b[32mOK\x1b[0m ', NG: ' \x1b[31mNG\x1b[0m ', Skip: '\x1b[36mSkip\x1b[0m', }; } } _write(result, _, cb) { const st = this._statusStrMap[result.status]; expandMessage(result, !this._plain); let str = `${st} ${result.message}`; if (result.diff) str += `\n${result.diff}`; process.stdout.write(`${str}\n`); cb(); } } exports.ConsoleResultWriter = ConsoleResultWriter; class JSONResultWriter extends stream_1.Writable { constructor(opts) { super({ objectMode: true }); } _write(result, _, cb) { expandMessage(result, false); process.stdout.write(JSON.stringify(result) + '\n'); cb(); } } exports.JSONResultWriter = JSONResultWriter; function expandMessage(result, bold) { const { message, target } = result; result.message = message.replace(/\%(\d)/g, function (match, p1) { let v; if (target instanceof Array) { v = target[Number(p1) - 1]; } else { v = target; } if (bold) v = `\x1b[1m${v}\x1b[0m`; return v; }); } function createWriter(opts = {}) { if (opts.writer) return opts.writer; return opts.json ? new JSONResultWriter() : new ConsoleResultWriter({ plain: opts.plain }); } exports.createWriter = createWriter;