import watchFiles from "./watch/files"; import watchFolders from "./watch/folders"; import { TurboSyncConfigObject } from "../types"; import getLatestSource from "../utils/get-last-edited-src"; import fldFileToStrArr, { fldFileToStr, } from "../utils/grab-folders-files-string-paths"; const confFileProvidedJSON = process.argv[process.argv.length - 1]; global.CONFIG_DIR = process.cwd(); try { const configFileObject: TurboSyncConfigObject = JSON.parse(confFileProvidedJSON); const lastUpdated = getLatestSource({ dirs: fldFileToStrArr(configFileObject.folders), files: fldFileToStrArr(configFileObject.files), config: configFileObject, }); console.log(`Running '${configFileObject.title}' ...`); console.log(`Last Updated Path => '${lastUpdated || "N/A"}' ...`); if ( Array.isArray(configFileObject.files) && Array.isArray(configFileObject.folders) ) { throw new Error("Choose wither `files` or `folders`. Not both"); } const files = configFileObject?.files; const firstFile = files?.[0]; const folders = configFileObject?.folders; const firstFolder = folders?.[0]; const options = configFileObject.options; const sortedFoldersByLastUpdated = folders?.[0] && lastUpdated ? [ lastUpdated, ...(folders?.filter( (fl) => fldFileToStr(fl) !== lastUpdated ) || []), ] : folders; const sortedFilesByLastUpdated = files?.[0] && lastUpdated ? [ lastUpdated, ...(files?.filter((fl) => fldFileToStr(fl) !== lastUpdated) || []), ] : files; if (firstFile && sortedFilesByLastUpdated?.[0]) { watchFiles({ files: sortedFilesByLastUpdated, options }); } else if (firstFolder && sortedFoldersByLastUpdated?.[0]) { watchFolders({ folders: sortedFoldersByLastUpdated, options }); } } catch (error) { console.log(error); process.exit(); }