npub
Version:
publishing tool for your node projects hosted on github
66 lines (62 loc) • 2.24 kB
JavaScript
// Generated by CoffeeScript 1.9.1
var debug, exec;
exec = require('child_process').exec;
debug = require('debug')("git");
module.exports = function(dir) {
var options;
debug("initialized for: " + dir);
options = {
cwd: dir
};
return {
dir: dir,
isClean: function(callback) {
debug("isClean");
return exec('git status --untracked-files=all --porcelain', options, function(error, stdout, stderror) {
return callback(stdout.length === 0, stdout != null ? stdout.trim() : void 0);
});
},
getSha: function(callback) {
debug('getSha');
return exec('git rev-parse HEAD', options, function(error, stdout, stderror) {
return callback(error, stdout != null ? stdout.trim() : void 0);
});
},
commit: function(message, callback) {
debug("commit - " + message);
return exec("git add CHANGELOG.md package.json && git commit -m '" + message + "'", options, function(error, stdout, stderror) {
return callback(!error);
});
},
diffSinceLastTag: function(callback) {
debug("diffSinceLastTag");
return exec("git log --oneline $(git describe --tags --abbrev=0)..HEAD", options, function(error, stdout, stderr) {
return callback(error, stdout);
});
},
tag: function(tag, callback) {
debug("tag - " + tag);
return exec("git tag -a " + tag + " -m " + tag, options, function(error, stdout, stderror) {
return callback(error);
});
},
remoteBranch: function(callback) {
debug("remoteBranch");
return exec("git rev-parse --abbrev-ref --symbolic-full-name @{u}", options, function(error, stdout, stderr) {
return callback(error, stdout);
});
},
push: function(remote, branch, callback) {
debug("push - " + remote + " " + branch);
return exec("git push " + remote + " " + branch, options, function(error, stdout, stderror) {
return callback(error);
});
},
pushTag: function(remote, tag, callback) {
debug("pushTag - " + remote + " " + tag);
return exec("git push " + remote + " tag " + tag, options, function(error, stdout, stderror) {
return callback(error);
});
}
};
};