UNPKG

@altano/repository-tools

Version:

Misc tools for dealing with repositories of multiple version control systems (git, svn, etc)

47 lines (45 loc) 1.24 kB
import { repositoryExec } from "./repositoryCommand.js"; //#region src/findRoot.ts async function findGitRoot(directory) { return repositoryExec(directory, "git", [ "rev-parse", "--quiet", "--show-toplevel" ]); } async function findSaplingRoot(directory) { return repositoryExec(directory, "sl", ["--quiet", "root"]); } async function findMercurialRoot(directory) { return repositoryExec(directory, "hg", ["--quiet", "root"]); } async function findSubversionRoot(directory) { return repositoryExec(directory, "svn", [ "info", "--show-item", "wc-root" ]); } const findMethods = [ findGitRoot, findSubversionRoot, findSaplingRoot, findMercurialRoot ]; /** * Find the root path of the repository containing the given directory. * * @returns null if not found or the path of the repository root as a string */ async function findRoot(directory) { for (const method of findMethods) try { const result = await method(directory); if (result != null && result !== "") return result; } catch (e) { if (e instanceof Error && "code" in e && e.code === "ENOTDIR") throw new Error(`Given path isn't a directory: ${directory}`); } return null; } //#endregion export { findRoot }; //# sourceMappingURL=findRoot.js.map