[Pkg-javascript-commits] [node-coveralls] 74/332: fetch git data from command line git - added exec-sync package to execute git commands - if a proper git hash is not passed, falls back to default values

Bastien Roucariès rouca at moszumanska.debian.org
Thu Nov 9 13:53:42 UTC 2017


This is an automated email from the git hooks/post-receive script.

rouca pushed a commit to branch master
in repository node-coveralls.

commit bc464dc1d8c9a0ecfac4aefb8f12dd24347b5732
Author: Gabe Hayes <gabriel.hayes at gmail.com>
Date:   Fri Jul 26 13:01:07 2013 -0700

    fetch git data from command line git
    - added exec-sync package to execute git commands
    - if a proper git hash is not passed, falls back to default values
---
 lib/fetchGitData.js | 111 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 lib/getOptions.js   |  22 +++--------
 package.json        |   3 +-
 test/getOptions.js  |   6 ++-
 4 files changed, 123 insertions(+), 19 deletions(-)

diff --git a/lib/fetchGitData.js b/lib/fetchGitData.js
new file mode 100644
index 0000000..5f3e582
--- /dev/null
+++ b/lib/fetchGitData.js
@@ -0,0 +1,111 @@
+var exec = require("exec-sync");
+
+var fetchGitData = function(git) {
+
+  var i,
+      execGit = true,
+      head = {
+        "author_name": {
+          "format": "'%aN'",
+          "default": "Unknown Author"
+        },
+        "author_email": {
+          "format": "'%ae'",
+          "default": ""
+        },
+        "committer_name": {
+          "format": "'%cN'",
+          "default": "Unknown Committer"
+        },
+        "committer_email": {
+          "format": "'%ce'",
+          "default" :""
+        },
+        "message": {
+          "format": "'%s'",
+          "default": "Unknown Commit Message"
+        }
+      },
+      remotes = {};
+
+  function saveRemote(name, url, push) {
+    var key = name + "-" + url;
+    if ("undefined" === typeof push || "boolean" !== typeof push) {
+      push = true;
+    }
+    if (!remotes.hasOwnProperty(key)) {
+      remotes[key] = true;
+      if (push) {
+        git.remotes.push({
+          "name": name,
+          "url": url
+        });
+      }
+    }
+  }
+
+  //-- Set required properties of git if they weren"t provided
+  if (!git.hasOwnProperty("head")) {
+    git.head = {};
+  }
+  if (!git.hasOwnProperty("branch")) {
+    git.branch = "";
+  }
+  if (!git.hasOwnProperty("remotes")) {
+    git.remotes = [];
+  }
+
+  //-- Assert the property types
+  if ("object" !== typeof git.head) {
+    git.head = {};
+  }
+  if ("string" !== typeof git.branch) {
+    git.branch = "";
+  }
+  if (!git.remotes.hasOwnProperty("length")) {
+    git.remotes = [];
+  }
+
+  //-- Use git?
+  try {
+    exec("git log -1 " + git.head.id + " --pretty=format:'%H'");
+  } catch (e) {
+    execGit = false;
+  }
+
+  //-- Head
+  for (i in head) {
+    if (!git.head.hasOwnProperty(i)) {
+      if (execGit) {
+        git.head[i] = exec("git log -1 " + git.head.id + " --pretty=format:" + head[i].format);
+      } else {
+        git.head[i] = head[i].default;
+      }
+    }
+  }
+
+  if (execGit) {
+
+    //-- Branch
+    if ("" === git.branch.length) {
+      git.branch = exec("git branch").split("\n")[0].replace(/^\*\ /, "").trim();
+    }
+
+    //-- Remotes
+    if (0 !== git.remotes.length) {
+      for (i in git.remotes) {
+        saveRemote(git.remotes[i].name, git.remotes[i].url, false);
+      }
+    }
+    exec("git remote -v").split("\n").forEach(function(remote) {
+      remote = remote.split(/\s/);
+      saveRemote(remote[0], remote[1]);
+    });
+
+  }
+
+  return git;
+
+};
+
+module.exports = fetchGitData;
diff --git a/lib/getOptions.js b/lib/getOptions.js
index 973b82b..deb1072 100644
--- a/lib/getOptions.js
+++ b/lib/getOptions.js
@@ -2,6 +2,7 @@ var fs = require('fs');
 var path = require('path');
 var yaml = require('yaml');
 var logger = require('./logger')();
+var git = require('./fetchGitData');
 
 var getOptions = function(){
 	var options = {};
@@ -41,23 +42,12 @@ var getOptions = function(){
   }
 
   if (git_commit){
-    options.git = {
-      "head": {
-        "id": git_commit,
-        "author_name": "Unknown Author",
-        "author_email": "",
-        "committer_name": "Unknown Committer",
-        "committer_email": "",
-        "message": "Unknown Commit Message"
+    options.git = git({
+      head: {
+        id: git_commit
       },
-      "branch": git_branch /*,
-      "remotes": [
-        {
-          "name": "origin",
-          "url": "git at github.com:lemurheavy/coveralls-ruby.git"
-        }
-      ]*/
-    };
+      branch: git_branch
+    });
   }
 
   options.run_at = process.env.COVERALLS_RUN_AT || JSON.stringify(new Date()).slice(1, -1);
diff --git a/package.json b/package.json
index d262d8b..76b0a4b 100644
--- a/package.json
+++ b/package.json
@@ -29,7 +29,8 @@
     "yaml": "0.2.3",
     "request": "2.16.2",
     "lcov-parse": "0.0.4",
-    "log-driver": "1.2.1"
+    "log-driver": "1.2.1",
+    "exec-sync": "~0.1.6"
   },
   "devDependencies": {
     "sinon-restore": "1.0.0",
diff --git a/test/getOptions.js b/test/getOptions.js
index 501eb51..ba3b7f0 100644
--- a/test/getOptions.js
+++ b/test/getOptions.js
@@ -57,7 +57,8 @@ describe("getOptions", function(){
                                  committer_name: 'Unknown Committer',
                                  committer_email: '',
                                  message: 'Unknown Commit Message' },
-                              branch: 'master' });
+                              branch: 'master',
+                              remotes: [] });
   });
   it ("should set service_name and service_job_id if it's running on circleci", function(){
     process.env.CIRCLECI = true;
@@ -74,6 +75,7 @@ describe("getOptions", function(){
                                  committer_name: 'Unknown Committer',
                                  committer_email: '',
                                  message: 'Unknown Commit Message' },
-                              branch: 'master' });
+                              branch: 'master',
+                              remotes: [] });
     });
 });

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/node-coveralls.git



More information about the Pkg-javascript-commits mailing list