From a4fe76b390edcd536ad6393ecd289aa7628dc30c Mon Sep 17 00:00:00 2001 From: Antonio Laguna Date: Mon, 25 Aug 2014 16:55:08 +0200 Subject: [PATCH 1/3] Swapping code with external library readfile and readconfigdir have been removed and refactored to use parse-dir instead. Fixes #62 --- lib/readconfigdir.js | 52 +++++++++++++++++++++++--------------------- lib/readfile.js | 28 ------------------------ package.json | 5 +++-- 3 files changed, 30 insertions(+), 55 deletions(-) delete mode 100644 lib/readfile.js diff --git a/lib/readconfigdir.js b/lib/readconfigdir.js index 421fd0e..0a8decb 100644 --- a/lib/readconfigdir.js +++ b/lib/readconfigdir.js @@ -1,31 +1,19 @@ -var glob = require('glob'); -var async = require('async'); -var readfile = require('./readfile'); -var path = require('path'); +var parseDir = require('parse-dir'); var _ = require('lodash-node'); module.exports = function(dir, grunt, options) { + var files = parseDir(dir + '/' + '*.{js,json,yml,yaml,coffee,ls}'); + var result = {}; - var getKey = function(file) { - var ext = path.extname(file); - var base = path.basename(file, ext); - return base; - }; + files.forEach(function(file) { + var content = file.contents; + var fileName = file.basename; - var files = glob.sync('*.{js,json,yml,yaml,coffee,ls}', { cwd: dir }); - - var fullPaths = files.map(function(file) { - return path.join(dir, file); - }); - - var obj = {}; - fullPaths.forEach(function(path) { - var result = readfile(path); - var key = getKey(path); - if (_.isFunction(result)) { - result = result(grunt, options); + if (_.isFunction(content)) { + content = content(grunt, options); } +<<<<<<< Updated upstream //check if multi config if (key.match(/-tasks$/)) { var target = key.replace(/-tasks$/, ''); @@ -41,14 +29,28 @@ module.exports = function(dir, grunt, options) { obj[newKey] = {}; } obj[newKey][newTarget] = result[originalKey]; +======= + // Check if multi config + if (fileName.match(/-tasks$/)) { + var target = fileName.replace(/-tasks$/, ''); + + for (var newKey in content) { + if (content.hasOwnProperty(newKey)){ + if (!result[newKey]) { + result[newKey] = {}; + } + result[newKey][target] = content[newKey]; + } +>>>>>>> Stashed changes } } else { - if (!obj[key]) { - obj[key] = {}; + if (!result[fileName]) { + result[fileName] = {}; } - obj[key] = _.merge(obj[key], result); + + result[fileName] = _.merge(result[fileName], content); } }); - return obj; + return result; }; diff --git a/lib/readfile.js b/lib/readfile.js deleted file mode 100644 index 6c41657..0000000 --- a/lib/readfile.js +++ /dev/null @@ -1,28 +0,0 @@ -var path = require('path'); -var yaml = require('js-yaml'); -var fs = require('fs'); - -module.exports = function(file) { - - // check for existence first - if (!fs.existsSync(file)) { - throw new Error(file + ' doesn\'t exist'); - } - - var ext = path.extname(file); - - // YAML file - if (ext.match(/ya?ml/)) { - var res = fs.readFileSync(file, 'utf8'); - return yaml.safeLoad(res); - } - - // JS / JSON / CoffeeScript - if (ext.match(/json|js|coffee|ls/)) { - return require(file); - } - - // unknown - throw new Error(file + ' is an unsupported filetype'); - -}; diff --git a/package.json b/package.json index fe69bb8..a48fec9 100644 --- a/package.json +++ b/package.json @@ -30,11 +30,12 @@ "proxyquire": "^0.5.3" }, "dependencies": { + "async": "~0.2.10", "glob": "~3.2.6", + "jit-grunt": "~0.7.0", "js-yaml": "~3.0.1", "load-grunt-tasks": "~0.3.0", - "jit-grunt": "~0.7.0", "lodash-node": "~2.4.1", - "async": "~0.2.10" + "parse-dir": "0.0.3" } } From 5f6843fdd954a92ee0c55a7086417fbf21869fdc Mon Sep 17 00:00:00 2001 From: Antonio Laguna Date: Mon, 25 Aug 2014 17:03:40 +0200 Subject: [PATCH 2/3] Fixing stashing issue --- lib/readconfigdir.js | 37 ++++++++++++-------------- test/readfile.test.js | 60 ------------------------------------------- 2 files changed, 16 insertions(+), 81 deletions(-) delete mode 100644 test/readfile.test.js diff --git a/lib/readconfigdir.js b/lib/readconfigdir.js index 0a8decb..3b9ba9a 100644 --- a/lib/readconfigdir.js +++ b/lib/readconfigdir.js @@ -13,35 +13,30 @@ module.exports = function(dir, grunt, options) { content = content(grunt, options); } -<<<<<<< Updated upstream - //check if multi config - if (key.match(/-tasks$/)) { - var target = key.replace(/-tasks$/, ''); - for (var newKey in result) { - var newTarget = target; - var originalKey = newKey; - if (newKey.indexOf('__') != -1) { - var spl = newKey.split('__'); - newKey = spl[0]; - newTarget = target + '_' + spl[1]; - } - if (!obj[newKey]) { - obj[newKey] = {}; - } - obj[newKey][newTarget] = result[originalKey]; -======= // Check if multi config if (fileName.match(/-tasks$/)) { - var target = fileName.replace(/-tasks$/, ''); + var target = fileName.replace(/-tasks$/, ''), + newTarget, + spl, + originalKey; for (var newKey in content) { - if (content.hasOwnProperty(newKey)){ + if (content.hasOwnProperty(newKey)) { + newTarget = target; + originalKey = newKey; + + if (newKey.indexOf('__') != -1) { + spl = newKey.split('__'); + newKey = spl.shift(); + newTarget = target + '_' + spl.shift(); + } + if (!result[newKey]) { result[newKey] = {}; } - result[newKey][target] = content[newKey]; + + result[newKey][newTarget] = content[originalKey]; } ->>>>>>> Stashed changes } } else { if (!result[fileName]) { diff --git a/test/readfile.test.js b/test/readfile.test.js deleted file mode 100644 index 6a219fa..0000000 --- a/test/readfile.test.js +++ /dev/null @@ -1,60 +0,0 @@ -/* global suite,test */ - -var assert = require('assert'); -var readfile = require('../lib/readfile'); - -suite('readfile', function() { - - test('read non-existing file', function() { - assert.throws(function() { - readfile(__dirname+'/config/fakefile.yaml'); - }); - }); - - test('read yaml file', function() { - var yaml = readfile(__dirname+'/config/yamlfile.yaml'); - assert.equal(yaml.yamlFile.options.filename, 'read.yaml'); - }); - - test('read yml file', function() { - var yaml = readfile(__dirname+'/config/ymlfile.yml'); - assert.equal(yaml.ymlFile.options.filename, 'read.yml'); - }); - - test('read json file', function() { - var json = readfile(__dirname+'/config/jsonfile.json'); - assert.equal(json.jsonFile.options.filename, 'read.json'); - }); - - test('read js object file', function() { - var json = readfile(__dirname+'/config/jsobj.js'); - assert.equal(json.jsobjFile.options.filename, 'jsobj.js'); - }); - - test('read js file with function, returns function', function() { - var fn = readfile(__dirname+'/config/jsfun.js'); - assert.equal(typeof fn, 'function'); - //fn takes two args, grunt and options - var obj = fn({}, { test: 1 }); - assert.equal(obj.jsFunFile.options.filename, 'jsfun.js'); - assert.equal(obj.jsFunFile.options.test, 1); - }); - - test('read coffee file', function() { - var json = readfile(__dirname+'/config/coffeefile.coffee'); - assert.equal(json.coffeeFile.options.filename, 'read.coffee'); - }); - - test('read missing coffee file', function() { - assert.throws(function() { - readfile(__dirname+'/config/coffeefile2.coffee'); - }); - }); - - test('read unsupported file', function() { - assert.throws(function() { - readfile(__dirname+'/config/htmlfile.html'); - }); - }); - -}); From 6c902279fe5b835a76cf1f5c829de24395d1b436 Mon Sep 17 00:00:00 2001 From: Antonio Laguna Date: Tue, 26 Aug 2014 13:28:56 +0200 Subject: [PATCH 3/3] Separating var definition to follow plugin current style --- lib/readconfigdir.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/readconfigdir.js b/lib/readconfigdir.js index 3b9ba9a..a001b82 100644 --- a/lib/readconfigdir.js +++ b/lib/readconfigdir.js @@ -15,10 +15,10 @@ module.exports = function(dir, grunt, options) { // Check if multi config if (fileName.match(/-tasks$/)) { - var target = fileName.replace(/-tasks$/, ''), - newTarget, - spl, - originalKey; + var target = fileName.replace(/-tasks$/, ''); + var newTarget; + var spl; + var originalKey; for (var newKey in content) { if (content.hasOwnProperty(newKey)) {