summaryrefslogtreecommitdiffstats
path: root/tasks/util/git.js
diff options
context:
space:
mode:
authorkpdecker <kpdecker@gmail.com>2013-08-24 13:10:51 -0500
committerkpdecker <kpdecker@gmail.com>2013-08-24 13:28:39 -0500
commit7efa75684e471726101a5724cb5c48d5dc4e1eb0 (patch)
tree59c788181ca9d7e42b8348d7969874e9b24e2688 /tasks/util/git.js
parent08989cfcdda0408e21a774e60044ebce87695422 (diff)
downloadhandlebars.js-7efa75684e471726101a5724cb5c48d5dc4e1eb0.zip
handlebars.js-7efa75684e471726101a5724cb5c48d5dc4e1eb0.tar.gz
handlebars.js-7efa75684e471726101a5724cb5c48d5dc4e1eb0.tar.bz2
Version update task
Diffstat (limited to 'tasks/util/git.js')
-rw-r--r--tasks/util/git.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/tasks/util/git.js b/tasks/util/git.js
new file mode 100644
index 0000000..53e0237
--- /dev/null
+++ b/tasks/util/git.js
@@ -0,0 +1,83 @@
+var childProcess = require('child_process');
+
+module.exports = {
+ clean: function(callback) {
+ childProcess.exec('git diff-index --name-only HEAD --', {}, function(err, stdout) {
+ callback(undefined, !err && !stdout);
+ });
+ },
+
+ commitInfo: function(callback) {
+ module.exports.head(function(err, headSha) {
+ module.exports.master(function(err, masterSha) {
+ module.exports.tagName(function(err, tagName) {
+ callback(undefined, {
+ head: headSha,
+ master: masterSha,
+ tagName: tagName,
+ isMaster: headSha === masterSha
+ });
+ });
+ });
+ });
+ },
+
+ head: function(callback) {
+ childProcess.exec('git rev-parse --short HEAD', {}, function(err, stdout) {
+ if (err) {
+ throw err;
+ }
+
+ callback(undefined, stdout.trim());
+ });
+ },
+ master: function(callback) {
+ childProcess.exec('git rev-parse --short origin/master', {}, function(err, stdout) {
+ if (err) {
+ throw err;
+ }
+
+ callback(undefined, stdout.trim());
+ });
+ },
+
+ add: function(path, callback) {
+ childProcess.exec('git add -f ' + path, {}, function(err, stdout) {
+ if (err) {
+ throw err;
+ }
+
+ callback();
+ });
+ },
+ commit: function(name, callback) {
+ childProcess.exec('git commit --message=' + name, {}, function(err, stdout) {
+ if (err) {
+ throw err;
+ }
+
+ callback();
+ });
+ },
+ tag: function(name, callback) {
+ childProcess.exec('git tag -a --message=' + name + ' ' + name, {}, function(err, stdout, stderr) {
+ console.log(name, stdout, stderr);
+ if (err) {
+ throw err;
+ }
+
+ callback();
+ });
+ },
+ tagName: function(callback) {
+ childProcess.exec('git tag -l --points-at HEAD', {}, function(err, stdout) {
+ if (err) {
+ throw err;
+ }
+
+ var tags = stdout.trim().split(/\n/),
+ versionTags = tags.filter(function(tag) { return /^v/.test(tag); });
+ callback(undefined, versionTags[0] || tags[0]);
+ });
+ }
+};