xweb-templating
Version:
A cli tool for converting 'tags' to regular html, php or some other format
36 lines (35 loc) • 1.64 kB
JavaScript
import path from "path";
import fs from "fs";
import { info, status } from "../log.js";
function has_file_extension(file_name, extension_to_check) {
return file_name.endsWith(extension_to_check);
}
function should_ignore(name, IGNORE_LIST) {
for (const IGNORE of IGNORE_LIST) {
if (name.endsWith(IGNORE))
return true;
}
return false;
}
function scan_folder(root_folder, current_child_folder, CONFIG, IGNORES) {
const FILES_FOUND = [];
const FOLDER_CONTENT = fs.readdirSync(path.join(root_folder, current_child_folder), { withFileTypes: true });
FOLDER_CONTENT.forEach(folder_item => {
if (folder_item.isFile() &&
has_file_extension(folder_item.name, CONFIG.extension.src) &&
!should_ignore(folder_item.name, IGNORES.files)) {
info("run/scan", `Found file '${path.join(current_child_folder, folder_item.name)}'`);
FILES_FOUND.push(path.join(current_child_folder, folder_item.name));
}
else if (folder_item.isDirectory() &&
!should_ignore(folder_item.name, IGNORES.directories)) {
status("run/scan", `Scanning folder '${path.join(current_child_folder, folder_item.name)}'`);
FILES_FOUND.push(...scan_folder(root_folder, path.join(current_child_folder, folder_item.name), CONFIG, IGNORES));
}
});
return FILES_FOUND;
}
export function scan_for_files(CONFIG, IGNORES) {
info("run/scan", `Scanning for ${CONFIG.extension.src} files in the '${CONFIG.folder.src}' folder`);
return scan_folder(path.join(process.cwd(), CONFIG.folder.src), "", CONFIG, IGNORES);
}