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
JavaScript
;
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