ggit
Version:
Local promise-returning git command wrappers
36 lines (29 loc) • 896 B
JavaScript
var spawn = require('child_process').spawn;
var path = require('path');
var check = require('check-types');
exports.changedFiles = changedFiles;
function changedFiles(repoTopFolder, cb) {
check.verify.string(repoTopFolder, 'expected git top folder');
check.verify.fn(cb, 'expect callback function, not', cb);
repoTopFolder = repoTopFolder.trim();
var diff = spawn('git', ['diff', '--name-only']);
var files = [];
diff.stdout.setEncoding('utf-8');
diff.stdout.on('data', function (data) {
data.trim();
files = data.split('\n');
files = files.filter(function (filename) {
return filename.length;
});
files = files.map(function (filename) {
return path.join(repoTopFolder, filename);
});
});
diff.stderr.setEncoding('utf-8');
diff.stderr.on('data', function (data) {
console.log('git diff error: ' + data);
});
diff.on('exit', function () {
cb(files);
});
}