Skip to content

Commit

Permalink
Further refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
johnnynotsolucky committed Jan 30, 2017
1 parent ab2038f commit cd823ff
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 56 deletions.
55 changes: 22 additions & 33 deletions dist/bin/parse-args.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,66 +20,55 @@ var _ramda2 = _interopRequireDefault(_ramda);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }

var defaultReporter = function defaultReporter() {
return 'console';
};
var argvParams = function argvParams(reporter) {
var paramsFromArgs = function paramsFromArgs(reporter) {
return function (argv) {
return {
help: argv.help || argv.h,
version: argv.version,
url: argv.url,
reporter: argv.reporter || argv.r || reporter
reporter: argv.reporter || argv.r || 'console'
};
};
};
var argsWithReporter = argvParams(defaultReporter());

var relativePatternToAbsolutePattern = function relativePatternToAbsolutePattern(baseDir) {
var mapToPath = function mapToPath(baseDir) {
return function (p) {
return !p.startsWith('/') ? baseDir + '/' + p : p;
};
};
var directoryPathToPattern = function directoryPathToPattern(globOptions) {
var pathToPattern = function pathToPattern(globOptions) {
return function (p) {
return !_glob2.default.hasMagic(p, globOptions) ? _fs2.default.statSync(p).isDirectory() ? p + '/**/*.json' : p : p;
};
};
var globFilesForPattern = function globFilesForPattern(globOptions) {
var globFiles = function globFiles(globOptions) {
return function (p) {
return _glob2.default.sync(p, globOptions);
};
};

var globFiles = function globFiles(cwd) {
return function (globOptions) {
return function (patterns) {
var cwdPattern = relativePatternToAbsolutePattern(cwd);
var dirPatternOpts = directoryPathToPattern(globOptions);
var globWithOpts = globFilesForPattern(globOptions);
var globByPattern = _ramda2.default.compose(globWithOpts, dirPatternOpts, cwdPattern);
var reducer = function reducer(acc, val) {
return _ramda2.default.concat(acc, globByPattern(val));
};
var patternsToFiles = _ramda2.default.reduce(reducer, []);
return patternsToFiles(patterns);
var byPattern = function byPattern(cwd, globOptions) {
return _ramda2.default.compose(globFiles(globOptions), pathToPattern(globOptions), mapToPath(cwd));
};

var mapFiles = function mapFiles(f) {
return function (patterns) {
var reducer = function reducer(acc, val) {
return _ramda2.default.concat(acc, f(val));
};
var patternsToFiles = _ramda2.default.reduce(reducer, []);
return patternsToFiles(patterns);
};
};

var cwdGlob = globFiles(process.cwd());
var patternsFromArgs = function patternsFromArgs(args, fallback) {
return args.length ? args : [fallback];
};

exports.default = function (argv, config) {
var patterns = [].concat(_toConsumableArray(argv._));
if (patterns.length === 0) {
patterns.push(config.testDir);
}

var globWithOptions = cwdGlob(config.globOptions);

return _extends({}, argsWithReporter(argv), {
files: globWithOptions(patterns)
var byAbsolutePattern = byPattern(process.cwd(), config.globOptions);
var globber = mapFiles(byAbsolutePattern);
return _extends({}, paramsFromArgs(argv), {
files: globber(patternsFromArgs(argv._, config.testDir))
});
};
42 changes: 19 additions & 23 deletions src/bin/parse-args.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,44 +2,40 @@ import glob from 'glob'
import fs from 'fs'
import R from 'ramda'

const defaultReporter = () => 'console'
const argvParams = reporter => argv => ({
const paramsFromArgs = reporter => argv => ({
help: argv.help || argv.h,
version: argv.version,
url: argv.url,
reporter: argv.reporter || argv.r || reporter
reporter: argv.reporter || argv.r || 'console'
})
const argsWithReporter = argvParams(defaultReporter())

const relativePatternToAbsolutePattern = baseDir => p =>
const mapToPath = baseDir => p =>
!p.startsWith('/') ? `${baseDir}/${p}` : p
const directoryPathToPattern = globOptions => (p) =>
const pathToPattern = globOptions => (p) =>
!glob.hasMagic(p, globOptions)
? (fs.statSync(p).isDirectory() ? `${p}/**/*.json` : p) : p
const globFilesForPattern = globOptions => p => glob.sync(p, globOptions)
const globFiles = globOptions => p => glob.sync(p, globOptions)

const globFiles = cwd => globOptions => patterns => {
const cwdPattern = relativePatternToAbsolutePattern(cwd)
const dirPatternOpts = directoryPathToPattern(globOptions)
const globWithOpts = globFilesForPattern(globOptions)
const globByPattern = R.compose(globWithOpts, dirPatternOpts, cwdPattern)
const reducer = (acc, val) => R.concat(acc, globByPattern(val))
const byPattern = (cwd, globOptions) =>
R.compose(
globFiles(globOptions),
pathToPattern(globOptions),
mapToPath(cwd)
)

const mapFiles = f => (patterns) => {
const reducer = (acc, val) => R.concat(acc, f(val))
const patternsToFiles = R.reduce(reducer, [])
return patternsToFiles(patterns)
}

const cwdGlob = globFiles(process.cwd())
const patternsFromArgs = (args, fallback) => args.length ? args : [fallback]

export default (argv, config) => {
const patterns = [...argv._]
if (patterns.length === 0) {
patterns.push(config.testDir)
}

const globWithOptions = cwdGlob(config.globOptions)

const byAbsolutePattern = byPattern(process.cwd(), config.globOptions)
const globber = mapFiles(byAbsolutePattern)
return {
...argsWithReporter(argv),
files: globWithOptions(patterns)
...paramsFromArgs(argv),
files: globber(patternsFromArgs(argv._, config.testDir))
}
}

0 comments on commit cd823ff

Please sign in to comment.