import { existsSync } from "node:fs"; import { join } from "node:path"; import { LEGACY_PROJECT_CONFIG_DIR, PROJECT_CONFIG_DIR } from "./constants"; /** * Files that make a folder a repo's Paradev config. A folder is judged by * these, not by existing: pdev keeps its own settings and prompts in * `/.paradev/` too. */ const CONFIG_FILES = [ "config.toml", "config.local.toml", "config.json", "config.local.json", "ports.json", "setup.sh", "teardown.sh", "run.sh", ]; export function hasProjectConfigFiles(dir: string): boolean { return CONFIG_FILES.some((file) => existsSync(join(dir, file))); } /** * The config folder a checkout uses: `.paradev`, or `.superset` while that * still holds the config and `.paradev` does not. New config goes in * `.paradev`, and a repo configured in `.superset` keeps being edited there. */ export function resolveProjectConfigDirName(root: string): string { if (hasProjectConfigFiles(join(root, PROJECT_CONFIG_DIR))) { return PROJECT_CONFIG_DIR; } if (hasProjectConfigFiles(join(root, LEGACY_PROJECT_CONFIG_DIR))) { return LEGACY_PROJECT_CONFIG_DIR; } return PROJECT_CONFIG_DIR; } export function resolveProjectConfigDir(root: string): string { return join(root, resolveProjectConfigDirName(root)); }