ember-cli
Version:
Command line tool for developing ambitious ember.js apps
70 lines (51 loc) • 1.48 kB
JavaScript
;
var fs = require('fs');
var path = require('path');
var GIT_DIR = '.git';
function changeGitDir(newDirName) {
GIT_DIR = newDirName;
}
function findRepo(startingPath) {
var gitPath, lastPath;
var currentPath = startingPath;
if (!currentPath) { currentPath = process.cwd(); }
do {
gitPath = path.join(currentPath, GIT_DIR);
if (fs.existsSync(gitPath)) {
return gitPath;
}
lastPath = currentPath;
currentPath = path.resolve(currentPath, '..');
} while (lastPath !== currentPath);
return null;
}
module.exports = function(gitPath) {
if (!gitPath) { gitPath = findRepo(); }
var result = {
sha: null,
abbreviatedSha: null,
branch: null
}
try {
var headFilePath = path.join(gitPath, 'HEAD');
if (fs.existsSync(headFilePath)) {
var branchSHA;
var headFile = fs.readFileSync(headFilePath, {encoding: 'utf8'});
var branchName = headFile.split('/').slice(-1)[0].trim();
var refPath = headFile.split(' ')[1];
if (refPath) {
var branchPath = path.join(gitPath, refPath.trim());
result.branch = branchName;
result.sha = fs.readFileSync(branchPath, {encoding: 'utf8' }).trim();
} else {
result.sha = branchName;
}
result.abbreviatedSha = result.sha.slice(0,10);
}
} catch (e) {
// eat it
}
return result;
};
module.exports._findRepo = findRepo;
module.exports._changeGitDir = changeGitDir;