UNPKG

@sugarcube/plugin-csv

Version:
67 lines (52 loc) 2.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _fp = require("lodash/fp"); var _fs = _interopRequireDefault(require("fs")); var _path = _interopRequireDefault(require("path")); var _csvStringify = _interopRequireDefault(require("csv-stringify")); var _pluginFs = require("@sugarcube/plugin-fs"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const plugin = (envelope, { cfg, log, stats }) => { const delimiter = (0, _fp.get)("csv.delimiter", cfg); const marker = (0, _fp.get)("marker", cfg); const dataDir = (0, _fp.get)("csv.data_dir", cfg); return (0, _pluginFs.mkdirP)(dataDir).then(() => { const diffStats = Object.keys(stats.get("diff")).map(key => [key, (0, _fp.getOr)([], "units", stats.get("diff")[key])]).filter(([, units]) => units.length > 0); if (diffStats.length === 0) return; const destDir = _path.default.resolve(dataDir, marker); // eslint-disable-next-line promise/no-nesting, consistent-return return (0, _pluginFs.mkdirP)(destDir).then(() => Promise.all(diffStats.map(([key, units]) => { const filename = _path.default.resolve(destDir, `${key}.csv`); const csv = (0, _csvStringify.default)({ header: true, quotedString: true, delimiter }); log.debug(`Writing ${key} stats to ${filename}.`); // Pipe the csv stream into the file. csv.pipe(_fs.default.createWriteStream(filename)); // eslint-disable-next-line promise/avoid-new return new Promise((resolve, reject) => { csv.on("error", reject); csv.on("finish", () => resolve(envelope)); units.forEach(r => csv.write(r)); csv.end(); }); }))); }).then(() => envelope); }; plugin.desc = "Export the diff stats as CSV files."; plugin.argv = { "csv.data_dir": { type: "string", nargs: 1, default: "./data/diff_stats", desc: "Export the diff stats as CSV files." } }; var _default = plugin; exports.default = _default;