UNPKG

@sugarcube/plugin-tika

Version:
67 lines (51 loc) 2.05 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 _core = require("@sugarcube/core"); var _pluginFs = require("@sugarcube/plugin-fs"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const plugin = (envelope, { cfg, log }) => { const dataDir = (0, _fp.get)("tika.data_dir", cfg); return (0, _pluginFs.mkdirP)(dataDir).then(() => _core.envelope.fmapDataAsync(unit => { const medias = unit._sc_media.filter(m => m.type !== "tika_location_text" || m.type !== "tika_location_meta"); if (medias.length === 0) return unit; const destDir = _path.default.resolve(dataDir, unit._sc_id_hash); // eslint-disable-next-line promise/no-nesting return Promise.all(medias.map(({ type, term, field }) => { const name = type === "tika_location_meta" ? "meta.json" : "text"; const out = type === "tika_location_meta" ? JSON.stringify(term) : term; const target = _path.default.resolve(destDir, field, `${name}`); log.debug(`Writing ${name} to ${target}.`); // eslint-disable-next-line promise/no-nesting return (0, _pluginFs.mkdirP)(_path.default.resolve(destDir, field || "")).then(() => _fs.default.writeFileSync(target, out)).then(() => Promise.all([(0, _pluginFs.md5sum)(target), (0, _pluginFs.sha256sum)(target)])).then(([md5, sha256]) => ({ location: target, md5, sha256, type })); })).then(downloads => (0, _fp.merge)(unit, { _sc_downloads: unit._sc_downloads.concat(downloads) })); }, envelope)); }; plugin.desc = "Write tika extracted content to disk."; plugin.argv = { "tika.data_dir": { type: "string", nargs: 1, default: "./data/tika_location", desc: "Store all tika files in this location." } }; var _default = plugin; exports.default = _default;