UNPKG

@intlayer/chokidar

Version:

Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.

44 lines (42 loc) 1.26 kB
import { dirname } from "node:path"; import fg from "fast-glob"; import { configurationFilesCandidates } from "@intlayer/config/node"; import simpleGit from "simple-git"; //#region src/listProjects.ts /** * Get the git root directory */ const getGitRootDir = async (cwd) => { try { return (await (cwd ? simpleGit(cwd) : simpleGit()).revparse(["--show-toplevel"])).trim(); } catch (_error) { return null; } }; /** * List all Intlayer projects by searching for configuration files * * @param options - Options for listing projects * @returns Array of absolute paths to project directories containing Intlayer config */ const listProjects = async (options) => { let searchDir = options?.baseDir ?? process.cwd(); if (options?.gitRoot) { const gitRootDir = await getGitRootDir(searchDir); if (gitRootDir) searchDir = gitRootDir; } const configFiles = await fg(configurationFilesCandidates.map((fileName) => `**/${fileName}`), { cwd: searchDir, absolute: true, ignore: ["**/node_modules/**", "**/.git/**"], dot: true }); const projectDirs = [...new Set(configFiles.map((file) => dirname(file)))]; return { searchDir, projectsPath: projectDirs.sort() }; }; //#endregion export { listProjects }; //# sourceMappingURL=listProjects.mjs.map