@sugarcube/plugin-csv
Version:
CSV based input and output for SugarCube.
50 lines (42 loc) • 1.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _fp = require("lodash/fp");
var _fs = _interopRequireDefault(require("fs"));
var _csvStringify = _interopRequireDefault(require("csv-stringify"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const plugin = (envelope, {
cfg,
log
}) => {
const filename = (0, _fp.get)("csv.queries_filename", cfg);
const delimiter = (0, _fp.get)("csv.delimiter", cfg);
const {
queries
} = envelope;
log.info(`Converting ${(0, _fp.size)(queries)} queries to csv and writing to ${filename}.`);
const csv = (0, _csvStringify.default)({
header: true,
quotedString: true,
delimiter
});
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));
queries.forEach(r => csv.write(r));
csv.end();
});
};
plugin.desc = "Export queries to a CSV file.";
plugin.argv = {
"csv.queries_filename": {
default: "out.csv",
nargs: 1,
desc: "The file name to write the CSV to"
}
};
var _default = plugin;
exports.default = _default;