UNPKG

sbg-api

Version:

Pre-processing all source posts before rendering from hexo. Useful for low-end devices to prevent using large number of hexo plugins.

71 lines 3.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var ansi_colors_1 = tslib_1.__importDefault(require("ansi-colors")); var bluebird_1 = tslib_1.__importDefault(require("bluebird")); var fs_extra_1 = require("fs-extra"); var sbg_utility_1 = require("sbg-utility"); var upath_1 = require("upath"); /** * clean old archives (categories, tags, pagination) from deployment directory */ function cleanArchive(callback) { return tslib_1.__awaiter(this, void 0, void 0, function () { var config, logname, archives, categories, tags, folders, langDir, pagesDir, pages, promises, dumpfile, i, pathStr, finishNow; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: config = (0, sbg_utility_1.getConfig)(); logname = 'clean:' + ansi_colors_1.default.grey('archives'); archives = (0, upath_1.join)(config.deploy.deployDir, config.archive_dir); categories = (0, upath_1.join)(config.deploy.deployDir, config.category_dir); tags = (0, upath_1.join)(config.deploy.deployDir, config.tag_dir); folders = [archives, tags, categories].filter(function (str) { return (0, fs_extra_1.existsSync)(str); }); // push language folder to be deleted from deploy dir if (Array.isArray(config.language)) { langDir = config.language.map(function (path) { return (0, upath_1.join)(config.deploy.deployDir, path); }); folders.push.apply(folders, tslib_1.__spreadArray([], tslib_1.__read(langDir), false)); } else if (typeof config.language === 'string' && String(config.language).trim().length > 0) { folders.push((0, upath_1.join)(config.deploy.deployDir, String(config.language))); } pagesDir = (0, upath_1.join)(config.deploy.deployDir, 'page'); if (!(0, fs_extra_1.existsSync)(pagesDir)) return [3 /*break*/, 2]; return [4 /*yield*/, (0, fs_extra_1.readdir)(pagesDir)]; case 1: pages = (_a.sent()).filter(function (str) { return /^\d+$/.test(str); }).map(function (str) { return (0, upath_1.join)(pagesDir, str); }); folders.push.apply(folders, tslib_1.__spreadArray([], tslib_1.__read(pages), false)); _a.label = 2; case 2: promises = []; dumpfile = (0, upath_1.join)(config.cwd, 'tmp/dump/clean.txt'); (0, sbg_utility_1.writefile)(dumpfile, folders.join('\n')); sbg_utility_1.Logger.log(logname, 'list deleted files', dumpfile); for (i = 0; i < folders.length; i++) { pathStr = folders[i]; try { if ((0, fs_extra_1.existsSync)(pathStr)) promises.push((0, sbg_utility_1.del)(pathStr)); } catch (_b) { //s } } finishNow = function (e) { if (e instanceof Error) { console.log('clean archives has some erros'); } if (typeof callback === 'function') callback(); return undefined; }; return [4 /*yield*/, bluebird_1.default.all(promises).then(finishNow).catch(finishNow)]; case 3: _a.sent(); return [2 /*return*/]; } }); }); } exports.default = cleanArchive; //# sourceMappingURL=cleanArchive.js.map