UNPKG

@argdown/node

Version:

Async Argdown application for node.js

60 lines 2.47 kB
let fs = require("fs"); let path = require("path"); let mkdirp = require("mkdirp"); import defaultsDeep from "lodash.defaultsdeep"; export class CopyDefaultCssPlugin { constructor(config) { this.name = "CopyDefaultCssPlugin"; this.getSettings = (request) => { if (!request.copyDefaultCss) { request.copyDefaultCss = {}; } return request.copyDefaultCss; }; this.prepare = request => { const settings = this.getSettings(request); defaultsDeep(settings, this.defaults); if (request.html && request.html.outputDir) { settings.outputDir = request.html.outputDir; } else if (request.saveAs && request.saveAs.outputDir) { settings.outputDir = request.saveAs.outputDir; } }; this.runAsync = async (request, _response, logger) => { const settings = this.getSettings(request); let rootPath = request.rootPath || process.cwd(); let outputDir = request.outputPath ? path.dirname(request.outputPath) : settings.outputDir; let absoluteOutputDir = path.resolve(rootPath, outputDir); await mkdirp(absoluteOutputDir); let pathToDefaultCssFile = require.resolve("@argdown/core/dist/plugins/argdown.css"); logger.log("verbose", "Copying default argdown.css to folder: " + absoluteOutputDir); const { COPYFILE_EXCL } = fs.constants; try { await new Promise((resolve, reject) => { fs.copyFile(pathToDefaultCssFile, path.resolve(absoluteOutputDir, "argdown.css"), COPYFILE_EXCL, (err) => { if (err) { reject(err); } resolve(); }); }); } catch (error) { if (error instanceof Error && error.code !== "EEXIST") { throw error; } else { logger.log("verbose", "Did not copy default argdown.css, because file already exists: " + absoluteOutputDir); } } }; this.defaults = defaultsDeep({}, config, { outputDir: "./html" }); } } //# sourceMappingURL=CopyDefaultCssPlugin.js.map