From 8c09b634cd04dde99e015fc58abef84ea4846f38 Mon Sep 17 00:00:00 2001 From: Tom MacWright Date: Fri, 14 Aug 2015 18:04:29 -0400 Subject: [PATCH] Test a windows-compatible git finder --- lib/find_git.js | 22 ++++++++++++++++++++++ streams/github.js | 13 +------------ 2 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 lib/find_git.js diff --git a/lib/find_git.js b/lib/find_git.js new file mode 100644 index 0000000..00fcda7 --- /dev/null +++ b/lib/find_git.js @@ -0,0 +1,22 @@ +'use strict'; + +var path = require('path'); +var fs = require('fs'); + +/** + * Given a full path to a single file, iterate upwards through the filesystem + * to find a directory with a .git file indicating that it is a git repository + * @param {string} filename + * @returns {string} repository path + */ +function findGit(filename) { + var paths = filename.split(path.sep); + for (var i = paths.length - 1; i > 0; i--) { + var p = path.resolve(paths.slice(0, i).join(path.sep) + path.sep + '.git'); + if (fs.existsSync(p)) { + return p; + } + } +} + +module.exports = findGit; diff --git a/streams/github.js b/streams/github.js index 727da74..6ba474b 100644 --- a/streams/github.js +++ b/streams/github.js @@ -3,19 +3,8 @@ var through2 = require('through2'); var exec = require('child_process').exec; var path = require('path'); -var fs = require('fs'); var urlFromGit = require('github-url-from-git'); - -function findGit(filename, relative) { - relative = relative || '.git'; - var newPath = path.resolve(filename, relative); - if (fs.existsSync(newPath)) { - return newPath; - } else if (newPath === '/') { - return null; - } - return findGit(filename, '../' + relative); -} +var findGit = require('../lib/find_git'); function makeGetBase() { var base, root;