UNPKG

honkit

Version:

HonKit is building beautiful books using Markdown.

91 lines (88 loc) 3.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const path_1 = __importDefault(require("path")); const pluginAssetsFolder_1 = __importDefault(require("../../constants/pluginAssetsFolder")); const promise_1 = __importDefault(require("../../utils/promise")); const fs_1 = __importDefault(require("../../utils/fs")); /** Copy all assets from plugins. Assets are files stored in "_assets" nd resources declared in the plugin itself. @param {Output} @return {Promise} */ function copyPluginAssets(output) { const book = output.getBook(); // Don't copy plugins assets for language book // It'll be resolved to the parent folder if (book.isLanguageBook()) { return (0, promise_1.default)(output); } const plugins = output .getPlugins() // We reverse the order of plugins to copy // so that first plugins can replace assets from other plugins. .reverse(); return promise_1.default.forEach(plugins, (plugin) => { return copyAssets(output, plugin).then(() => { return copyResources(output, plugin); }); }).thenResolve(output); } /** Copy assets from a plugin @param {Plugin} @return {Promise} */ function copyAssets(output, plugin) { const logger = output.getLogger(); const pluginRoot = plugin.getPath(); const options = output.getOptions(); const outputRoot = options.get("root"); const assetOutputFolder = path_1.default.join(outputRoot, "gitbook"); const prefix = options.get("prefix"); const assetFolder = path_1.default.join(pluginRoot, pluginAssetsFolder_1.default, prefix); if (!fs_1.default.existsSync(assetFolder)) { return (0, promise_1.default)(); } logger.debug.ln("copy assets from theme", assetFolder); return fs_1.default.copyDir(assetFolder, assetOutputFolder, { deleteFirst: false, overwrite: true, confirm: false }); } /** Copy resources from a plugin @return {Promise} */ function copyResources(output, plugin) { const logger = output.getLogger(); const options = output.getOptions(); const outputRoot = options.get("root"); const state = output.getState(); const resources = state.getResources(); const pluginRoot = plugin.getPath(); const pluginResources = resources.get(plugin.getName()); let assetsFolder = pluginResources.get("assets"); const assetOutputFolder = path_1.default.join(outputRoot, "gitbook", plugin.getNpmID()); if (!assetsFolder) { return (0, promise_1.default)(); } // Resolve assets folder assetsFolder = path_1.default.resolve(pluginRoot, assetsFolder); if (!fs_1.default.existsSync(assetsFolder)) { logger.warn.ln(`assets folder for plugin "${plugin.getName()}" doesn't exist`); return (0, promise_1.default)(); } logger.debug.ln("copy resources from plugin", assetsFolder); return fs_1.default.copyDir(assetsFolder, assetOutputFolder, { deleteFirst: false, overwrite: true, confirm: false }); } exports.default = copyPluginAssets;