Files
TechRadarAJR/bin/tasks/file.js
2021-01-11 12:45:50 +01:00

44 lines
2.1 KiB
JavaScript
Executable File

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.save = exports.getAllMarkdownFiles = exports.distPath = exports.jsPath = exports.faviconPath = exports.assetsPath = exports.stylesPath = exports.radarPath = exports.relativePath = void 0;
const fs_extra_1 = require("fs-extra");
const path_1 = __importDefault(require("path"));
const walk_1 = require("walk");
exports.relativePath = (...relativePath) => (
// path.resolve(__dirname, '..', ...relativePath)
path_1.default.resolve(...relativePath));
exports.radarPath = (...pathInSrc) => (exports.relativePath('radar', ...pathInSrc));
exports.stylesPath = (...pathInSrc) => (exports.relativePath('styles', ...pathInSrc));
exports.assetsPath = (...pathInSrc) => (exports.relativePath('assets', ...pathInSrc));
exports.faviconPath = (...pathInSrc) => (exports.relativePath('assets/favicon.ico', ...pathInSrc));
exports.jsPath = (...pathInSrc) => (exports.relativePath('js', ...pathInSrc));
exports.distPath = (...pathInDist) => (exports.relativePath('src', ...pathInDist));
exports.getAllMarkdownFiles = (folder) => (getAllFiles(folder, isMarkdownFile));
const getAllFiles = (folder, predicate) => (new Promise((resolve, reject) => {
const walker = walk_1.walk(folder, { followLinks: false });
const files = [];
walker.on("file", (root, fileStat, next) => {
if (predicate(fileStat.name)) {
files.push(path_1.default.resolve(root, fileStat.name));
}
next();
});
walker.on("errors", (root, nodeStatsArray, next) => {
nodeStatsArray.forEach(function (n) {
console.error("[ERROR] " + n.name);
if (n.error) {
console.error(n.error.message || (n.error.code + ": " + n.error.path));
}
});
next();
});
walker.on("end", () => {
resolve(files.sort());
});
}));
const isMarkdownFile = (name) => name.match(/\.md$/) !== null;
exports.save = (data, fileName) => fs_extra_1.outputFile(exports.distPath(fileName), data);