#! /usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const child_process_1 = require("child_process"); const sourceFile = process.argv.indexOf("--src") >= 0 ? process.argv[process.argv.indexOf("--src") + 1] : null; const destinationFile = process.argv.indexOf("--dst") >= 0 ? process.argv[process.argv.indexOf("--dst") + 1] : null; console.log("\x1b[44mRunning Less compiler\x1b[0m ..."); if (!sourceFile || !destinationFile) { console.log("ERROR => Missing source or destination file"); process.exit(); } const sourceFiles = sourceFile.split(","); const dstFiles = destinationFile.split(","); for (let i = 0; i < sourceFiles.length; i++) { const srcFolder = sourceFiles[i]; const dstFile = dstFiles[i]; if ((srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\..{2,4}$/)) && !(srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.less$/))) { console.log("\x1b[33mERROR:\x1b[0m Source must be a folder or a .less file"); process.exit(); } compile(srcFolder, dstFile, null); fs_1.default.watch(srcFolder, { recursive: true }, (evtType, fileName) => { if (!fileName) return; const filePathRoot = (srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.less$/)) ? srcFolder : srcFolder + "/" + fileName; compile(filePathRoot, dstFile, evtType); }); } function compile(fileName, dst, evtType) { if ((fileName === null || fileName === void 0 ? void 0 : fileName.match(/\(/)) || (fileName.match(/\..{2,4}$/) && !(fileName === null || fileName === void 0 ? void 0 : fileName.match(/\.less$/i)))) { return; } let finalSrcPath = (fileName === null || fileName === void 0 ? void 0 : fileName.match(/\.less$/)) ? fileName : `${fileName}/main.less`; let finalDstPath = dst; if (fileName === null || fileName === void 0 ? void 0 : fileName.match(/\[/)) { const paths = fileName.split("/"); const targetPathFull = paths[paths.length - 1]; const targetPath = targetPathFull.replace(/\[|\]/g, "").replace(/\.less/, ""); const destinationFileParentFolder = dst.replace(/\/[^\/]+\.css$/, ""); const targetDstFilePath = `${destinationFileParentFolder}/${targetPath}.css`; finalSrcPath = `${fileName}/${targetPathFull}`; finalDstPath = targetDstFilePath; } (0, child_process_1.exec)(`lessc ${finalSrcPath} ${(finalDstPath === null || finalDstPath === void 0 ? void 0 : finalDstPath.match(/\.css$/)) ? finalDstPath : finalDstPath.replace(/\/$/, "") + "/_main.css"}`, (error, stdout, stderr) => { if (error) { console.log("ERROR =>", error.message); if (!(evtType === null || evtType === void 0 ? void 0 : evtType.match(/change/i)) && fileName && fileName.match(/\[/)) { fs_1.default.unlinkSync(finalDstPath); } return; } console.log("Less Compilation \x1b[32msuccessful\x1b[0m!"); }); }