From 0c8dad10ca87be646fd403136df134e6db859543 Mon Sep 17 00:00:00 2001 From: jshkurti Date: Wed, 22 Oct 2014 16:55:08 +0200 Subject: [PATCH] refactoring code using now async --- lib/identify.js | 38 ++++++++++++++++++++++++++++++++++++++ lib/vizion.js | 42 +++++++++++++++--------------------------- 2 files changed, 53 insertions(+), 27 deletions(-) create mode 100644 lib/identify.js diff --git a/lib/identify.js b/lib/identify.js new file mode 100644 index 0000000..dfcbe56 --- /dev/null +++ b/lib/identify.js @@ -0,0 +1,38 @@ +var fs = require('fs'); +var async = require('async'); + +var isGit = function(cb) { + fs.exists(folder+'.git', function(exists) { + if (exists) + return cb('git'); + return cb(null); + }); +} + +var isHg = function(cb) { + fs.exists(folder+'.hg', function(exists) { + if (exists) + return cb('hg'); + return cb(null); + }); +} + +var isSvn = function(cb) { + fs.exists(folder+'.svn', function(exists) { + if (exists) + return cb('svn'); + return cb(null); + }); +} + +module.exports = function identify(folder, cb) { + if (folder[folder.length - 1] !== '/') + folder += '/'; + + async.series([isGit, isHg, isSvn], + function(err, results) { + if (err) + return cb(err); + return cb('No versioning system found'); + }); +} diff --git a/lib/vizion.js b/lib/vizion.js index 8905eb9..be14e07 100644 --- a/lib/vizion.js +++ b/lib/vizion.js @@ -1,34 +1,22 @@ -var fs = require("fs"); var parseHg = require('./hg.js'); var parseGit = require('./git.js'); var parseSvn = require('./svn.js'); +var identify = require('./identify.js'); -module.exports.analyze = function analyze(argv, cb) { +module.exports.analyze = function(argv, cb) { folder = (argv.folder != undefined) ? argv.folder : '.'; - if (folder[folder.length - 1] !== '/') { - folder = folder + '/'; - } - - fs.exists(folder+'.git', function(exists) { - if (exists) { - return parseGit(folder, cb); - } - fs.exists(folder+'.hg', function(exists) { - if (exists) { - return parseHg(folder, cb); - } - fs.exists(folder+'.svn', function(exists) { - if (exists) { - return parseSvn(folder, cb); - } - else { - return cb({ - msg : 'No versioning system found', - path : folder - }); - } - }); - }); - }); + identify(folder, function(type) { + if (type === 'git') + return parseGit(folder, cb); + else if (type === 'hg') + return parseHg(folder, cb); + else if (type === 'svn') + return parseSvn(folder, cb); + else + return cb({ + msg : type, + path : folder + }); + }); }