"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");
require("dotenv").config({ path: "./../.env" });
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("Running Less compiler ...");
const sourceFiles = sourceFile === null || sourceFile === void 0 ? void 0 : sourceFile.split(",");
const dstFiles = destinationFile === null || destinationFile === void 0 ? void 0 : destinationFile.split(",");
if (!sourceFiles || !dstFiles) {
    throw new Error("No Source or Destination Files!");
}
for (let i = 0; i < sourceFiles.length; i++) {
    const srcFolder = sourceFiles[i];
    const dstFile = dstFiles[i];
    fs_1.default.watch(srcFolder, { recursive: true }, (evtType, prev) => {
        if ((prev === null || prev === void 0 ? void 0 : prev.match(/\(/)) || (prev === null || prev === void 0 ? void 0 : prev.match(/\.(j|t)s$/i))) {
            return;
        }
        let finalSrcPath = `${srcFolder}/main.less`;
        let finalDstPath = dstFile;
        if (prev === null || prev === void 0 ? void 0 : prev.match(/\[/)) {
            const paths = prev.split("/");
            const targetPathFull = paths[paths.length - 1];
            const targetPath = targetPathFull
                .replace(/\[|\]/g, "")
                .replace(/\.less/, "");
            const destinationFileParentFolder = dstFile.replace(/\/[^\/]+\.css$/, "");
            const targetDstFilePath = `${destinationFileParentFolder}/${targetPath}.css`;
            finalSrcPath = `${srcFolder}/${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)) && (prev === null || prev === void 0 ? void 0 : prev.match(/\[/))) {
                    fs_1.default.unlinkSync(finalDstPath);
                }
                return;
            }
            console.log("Less Compilation \x1b[32msuccessful\x1b[0m!");
        });
    });
}