blob: 65bc808ae63ba9d75a58b84a5f50fea106d91482 [file] [log] [blame]
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const find_up_1 = __importDefault(require("find-up"));
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
function default_1(cwd) {
const foundPath = find_up_1.default.sync('.git', { cwd });
if (foundPath) {
const stats = fs_1.default.lstatSync(foundPath);
// If it's a .git file resolve path
if (stats.isFile()) {
// Expect following format
// git: pathToGit
// On Windows pathToGit can contain ':' (example "gitdir: C:/Some/Path")
const gitFileData = fs_1.default.readFileSync(foundPath, 'utf-8');
const gitDir = gitFileData
.split(':')
.slice(1)
.join(':')
.trim();
const resolvedGitDir = path_1.default.resolve(path_1.default.dirname(foundPath), gitDir);
// For git-worktree, check if commondir file exists and return that path
const pathCommonDir = path_1.default.join(resolvedGitDir, 'commondir');
if (fs_1.default.existsSync(pathCommonDir)) {
const commondir = fs_1.default.readFileSync(pathCommonDir, 'utf-8').trim();
const resolvedCommonGitDir = path_1.default.join(resolvedGitDir, commondir);
return resolvedCommonGitDir;
}
return resolvedGitDir;
}
// Else return path to .git directory
return foundPath;
}
return null;
}
exports.default = default_1;