diff options
| author | Christophe Porteneuve <[email protected]> | 2013-11-08 19:05:52 +0100 |
|---|---|---|
| committer | Christophe Porteneuve <[email protected]> | 2013-11-08 19:35:19 +0100 |
| commit | 335918f28d6cbbac2efbc25990e97549dbd96aee (patch) | |
| tree | fffc8a187ee63decd9264edd06bc504b5f0450b6 /lib | |
| parent | d52c62b04c5c11fd931ca967f09621d03c330f88 (diff) | |
| download | node-coveralls-335918f28d6cbbac2efbc25990e97549dbd96aee.tar.xz node-coveralls-335918f28d6cbbac2efbc25990e97549dbd96aee.zip | |
Fix step 1: for dev-local uses, properly detect local Git branch and commit
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/detectLocalGit.js | 30 | ||||
| -rw-r--r-- | lib/getOptions.js | 8 |
2 files changed, 38 insertions, 0 deletions
diff --git a/lib/detectLocalGit.js b/lib/detectLocalGit.js new file mode 100644 index 0000000..2d0fba0 --- /dev/null +++ b/lib/detectLocalGit.js @@ -0,0 +1,30 @@ +var fs = require('fs'); +var path = require('path'); + +var REGEX_BRANCH = /^ref: refs\/heads\/(\w+)$/; + +module.exports = function detectLocalGit(knownCommit, knownBranch) { + var dir = process.cwd(), gitDir; + while ('/' !== dir) { + gitDir = path.join(dir, '.git'); + if (fs.existsSync(path.join(gitDir, 'HEAD'))) + break; + + dir = path.dirname(dir); + } + + if ('/' === dir) + return; + + var head = strip(fs.readFileSync(path.join(dir, '.git', 'HEAD'), 'utf-8')); + var branch = (head.match(REGEX_BRANCH) || [])[1]; + if (!branch) + return { git_commit: head }; + + var commit = strip(fs.readFileSync(path.join(dir, '.git', 'refs', 'heads', branch), 'utf-8')); + return { git_commit: commit, git_branch: branch }; +}; + +function strip(str) { + return (str || '').replace(/^\s+|\s+$/g, ''); +} diff --git a/lib/getOptions.js b/lib/getOptions.js index 35187b4..abd2f2e 100644 --- a/lib/getOptions.js +++ b/lib/getOptions.js @@ -43,6 +43,14 @@ var getBaseOptions = function(cb){ options.service_job_id = process.env.COVERALLS_SERVICE_JOB_ID; } + if (!git_commit || !git_branch) { + var data = require('./detectLocalGit')(git_commit, git_branch); + if (data) { + git_commit = git_commit || data.git_commit; + git_branch = git_branch || data.git_branch; + } + } + // try to get the repo token as an environment variable if (process.env.COVERALLS_REPO_TOKEN) { options.repo_token = process.env.COVERALLS_REPO_TOKEN; |
