UNPKG

@intlayer/chokidar

Version:

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

48 lines (46 loc) 1.61 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const require_runtime = require('./_virtual/_rolldown/runtime.cjs'); let node_path = require("node:path"); let fast_glob = require("fast-glob"); fast_glob = require_runtime.__toESM(fast_glob); let _intlayer_config_node = require("@intlayer/config/node"); let simple_git = require("simple-git"); simple_git = require_runtime.__toESM(simple_git); //#region src/listProjects.ts /** * Get the git root directory */ const getGitRootDir = async (cwd) => { try { return (await (cwd ? (0, simple_git.default)(cwd) : (0, simple_git.default)()).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 (0, fast_glob.default)(_intlayer_config_node.configurationFilesCandidates.map((fileName) => `**/${fileName}`), { cwd: searchDir, absolute: true, ignore: ["**/node_modules/**", "**/.git/**"], dot: true }); const projectDirs = [...new Set(configFiles.map((file) => (0, node_path.dirname)(file)))]; return { searchDir, projectsPath: projectDirs.sort() }; }; //#endregion exports.listProjects = listProjects; //# sourceMappingURL=listProjects.cjs.map