UNPKG

find-git-root

Version:
33 lines (31 loc) 858 B
var path = require('path') var fs = require('fs') function findGitRoot(start) { start = start || module.parent.filename if (typeof start === 'string') { if (start[start.length - 1] !== path.sep) { start += path.sep } start = path.normalize(start) start = start.split(path.sep) } if (!start.length) { throw new Error('.git/ not found in path') } start.pop() var dir = start.join(path.sep) var fullPath = path.join(dir, '.git') if (fs.existsSync(fullPath)) { if(!fs.lstatSync(fullPath).isDirectory()) { var content = fs.readFileSync(fullPath, { encoding: 'utf-8' }) var match = /^gitdir: (.*)\s*$/.exec(content) if (match) { return path.normalize(match[1]) } } return path.normalize(fullPath) } else { return findGitRoot(start) } } module.exports = findGitRoot