"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const child_process_1 = require("child_process");
const files_1 = __importDefault(require("./watch/files"));
const folders_1 = __importDefault(require("./watch/folders"));
const confFileProvidedJSON = process.argv[process.argv.length - 1];
try {
    const configFileObject = JSON.parse(confFileProvidedJSON);
    console.log(`Running '${configFileObject.title}' ...`);
    if (Array.isArray(configFileObject.files) &&
        Array.isArray(configFileObject.folders)) {
        throw new Error("Choose wither `files` or `folders`. Not both");
    }
    const files = configFileObject === null || configFileObject === void 0 ? void 0 : configFileObject.files;
    const firstFile = files === null || files === void 0 ? void 0 : files[0];
    const folders = configFileObject === null || configFileObject === void 0 ? void 0 : configFileObject.folders;
    const firstFolder = folders === null || folders === void 0 ? void 0 : folders[0];
    const options = configFileObject.options;
    if (firstFile && (files === null || files === void 0 ? void 0 : files[0])) {
        (0, files_1.default)({ files, options });
    }
    else if (firstFolder && (folders === null || folders === void 0 ? void 0 : folders[0])) {
        (0, folders_1.default)({ folders, options });
    }
}
catch (error) {
    console.log(error);
    process.exit();
}
process.on("exit", (code) => {
    if (code == 1) {
        const args = process.argv;
        const cmd = args.shift();
        if (cmd) {
            (0, child_process_1.spawn)(cmd, args, {
                stdio: "inherit",
            });
        }
    }
    else {
        process.exit(0);
    }
});