Skip to content

Commit

Permalink
Merge pull request sarbbottam#200 from sarbbottam/es-next
Browse files Browse the repository at this point in the history
refactor(convention): using es-next conventions
  • Loading branch information
ljharb committed Feb 22, 2017
2 parents ebeec17 + da11db6 commit dd2b370
Show file tree
Hide file tree
Showing 20 changed files with 636 additions and 686 deletions.
7 changes: 2 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,10 @@ cache:
notifications:
email: false
node_js:
- stable
- '0.10'
before_install:
- npm i -g npm@^3.0.0
- 'node'
- '6'
before_script:
- npm prune
- if [[ `node -v | sed 's/[^0-9\.]//g'` < 1 ]]; then npm i eslint@2.13.1; fi
script:
- npm run validate
after_success:
Expand Down
41 changes: 20 additions & 21 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,24 @@
"name": "eslint-find-rules",
"version": "0.0.0-semantically-released",
"description": "Find built-in ESLint rules you don't have in your custom config.",
"main": "src/lib/rule-finder.js",
"main": "dist/lib/rule-finder.js",
"scripts": {
"cover": "nyc --reporter=lcov --reporter=text npm test",
"lint": "xo",
"test": "mocha --recursive",
"lint": "eslint --ignore-pattern test/fixtures .",
"update-contributors": "all-contributors generate",
"commit": "git-cz",
"validate": "npm-run-all --parallel lint cover --sequential check-coverage",
"check-coverage": "nyc check-coverage --statements 100 --branches 100 --functions 100 --lines 100",
"prebuild": "rimraf dist",
"build": "babel src -d dist --presets es2015",
"report-coverage": "cat ./coverage/lcov.info | node_modules/.bin/codecov",
"semantic-release": "semantic-release pre && npm publish && semantic-release post",
"travis-after-all": "travis-after-all && npm run report-coverage && npm run semantic-release"
},
"bin": {
"eslint-find-rules": "src/bin/find.js",
"eslint-diff-rules": "src/bin/diff.js"
"eslint-find-rules": "dist/bin/find.js",
"eslint-diff-rules": "dist/bin/diff.js"
},
"keywords": [],
"author": "Michał Gołębiowski <m.goleb@gmail.com>",
Expand All @@ -37,39 +39,29 @@
},
"devDependencies": {
"all-contributors-cli": "3.0.6",
"babel-cli": "6.18.0",
"babel-core": "6.18.0",
"babel-preset-es2015": "6.18.0",
"codecov": "1.0.1",
"commitizen": "2.8.6",
"cz-conventional-changelog": "1.2.0",
"eslint": "3.5.0",
"eslint-config-kentcdodds": "6.2.0",
"ghooks": "1.3.2",
"mocha": "^3.0.1",
"npm-run-all": "3.1.0",
"nyc": "6.6.1",
"opt-cli": "^1.1.1",
"proxyquire": "1.7.10",
"rimraf": "^2.6.0",
"semantic-release": "4.3.5",
"sinon": "^1.17.3",
"travis-after-all": "^1.4.4",
"validate-commit-msg": "2.8.0"
"validate-commit-msg": "2.8.0",
"xo": "^0.17.0"
},
"peerDependencies": {
"eslint": "^2.0.0 || ^3.0.0"
},
"eslintConfig": {
"extends": "kentcdodds",
"parserOptions": {
"ecmaVersion": 5
},
"env": {
"mocha": true
},
"rules": {
"no-var": 0,
"func-names": 0,
"object-shorthand": 0
}
},
"nyc": {
"exclude": [
"test/**/*"
Expand All @@ -91,5 +83,12 @@
"bugs": {
"url": "https://github.com/sarbbottam/eslint-find-rules/issues"
},
"homepage": "https://github.com/sarbbottam/eslint-find-rules#readme"
"homepage": "https://github.com/sarbbottam/eslint-find-rules#readme",
"xo": {
"envs": [
"mocha"
],
"esnext": true,
"space": true
}
}
70 changes: 35 additions & 35 deletions src/bin/diff.js
Original file line number Diff line number Diff line change
@@ -1,69 +1,69 @@
#!/usr/bin/env node

'use strict'
'use strict';

var path = require('path')
var argv = require('yargs')
const path = require('path');
const argv = require('yargs')
.boolean('verbose')
.alias('v', 'verbose')
.argv
.argv;

var cli = require('../lib/cli-util')
const cli = require('../lib/cli-util');

var getRuleFinder = require('../lib/rule-finder')
var arrayDifference = require('../lib/array-diff')
var objectDifference = require('../lib/object-diff')
var getSortedRules = require('../lib/sort-rules')
var flattenRulesDiff = require('../lib/flatten-rules-diff')
var stringifyRuleConfig = require('../lib/stringify-rule-config')
const getRuleFinder = require('../lib/rule-finder');
const arrayDifference = require('../lib/array-diff');
const objectDifference = require('../lib/object-diff');
const getSortedRules = require('../lib/sort-rules');
const flattenRulesDiff = require('../lib/flatten-rules-diff');
const stringifyRuleConfig = require('../lib/stringify-rule-config');

var files = [argv._[0], argv._[1]]
var collectedRules = getFilesToCompare(files).map(compareConfigs)
const files = [argv._[0], argv._[1]];
const collectedRules = getFilesToCompare(files).map(compareConfigs);

var rulesCount = collectedRules.reduce(
function getLength(prev, curr) {
return prev + (curr && curr.rules ? curr.rules.length : /* istanbul ignore next */ 0)
}, 0)
const rulesCount = collectedRules.reduce(
(prev, curr) => {
return prev + (curr && curr.rules ? curr.rules.length : /* istanbul ignore next */ 0);
}, 0);

/* istanbul ignore else */
if (argv.verbose || rulesCount) {
cli.push('\ndiff rules\n' + rulesCount + ' rules differ\n')
cli.push('\ndiff rules\n' + rulesCount + ' rules differ\n');
}

/* istanbul ignore else */
if (rulesCount) {
collectedRules.forEach(function displayConfigs(diff) {
var rules = diff.rules
collectedRules.forEach(diff => {
let rules = diff.rules;

/* istanbul ignore if */
if (!rules.length) {
return
if (rules.length < 1) {
return;
}

if (argv.verbose) {
rules = flattenRulesDiff(rules).map(stringifyRuleConfig)
rules.unshift([], diff.config1, diff.config2)
rules = flattenRulesDiff(rules).map(stringifyRuleConfig);
rules.unshift([], diff.config1, diff.config2);
} else {
cli.push('\nin ' + diff.config1 + ' but not in ' + diff.config2 + ':\n')
cli.push('\nin ' + diff.config1 + ' but not in ' + diff.config2 + ':\n');
}

cli.push(rules, argv.verbose ? 3 : 0)
})
cli.push(rules, argv.verbose ? 3 : 0);
});
}

cli.write()
cli.write();

function getFilesToCompare(allFiles) {
var filesToCompare = [allFiles]
const filesToCompare = [allFiles];

if (!argv.verbose) {
// in non-verbose output mode, compare a to b
// and b to a afterwards, to obtain ALL differences
// accross those files, but grouped
filesToCompare.push([].concat(allFiles).reverse())
filesToCompare.push([].concat(allFiles).reverse());
}

return filesToCompare
return filesToCompare;
}

function compareConfigs(currentFiles) {
Expand All @@ -73,8 +73,8 @@ function compareConfigs(currentFiles) {
rules: rulesDifference(
getRuleFinder(currentFiles[0]),
getRuleFinder(currentFiles[1])
),
}
)
};
}

function rulesDifference(a, b) {
Expand All @@ -84,13 +84,13 @@ function rulesDifference(a, b) {
a.getCurrentRulesDetailed(),
b.getCurrentRulesDetailed()
)
)
);
}

return getSortedRules(
arrayDifference(
a.getCurrentRules(),
b.getCurrentRules()
)
)
);
}
74 changes: 35 additions & 39 deletions src/bin/find.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#!/usr/bin/env node

'use strict'

var options = {
'use strict';
const options = {
getCurrentRules: ['current', 'c'],
getPluginRules: ['plugin', 'p'],
getAllAvailableRules: ['all-available', 'a'],
Expand All @@ -11,60 +10,57 @@ var options = {
error: ['error'],
nc: [],
core: ['core'],
verbose: ['verbose', 'v'],
}
verbose: ['verbose', 'v']
};

var argv = require('yargs')
const argv = require('yargs')
.boolean(Object.keys(options))
.alias(options)
.default('error', true)
.default('core', true)
.argv

var getRuleURI = require('eslint-rule-documentation')
.argv;

var cli = require('../lib/cli-util')
const getRuleURI = require('eslint-rule-documentation');
const getRuleFinder = require('../lib/rule-finder');
const cli = require('../lib/cli-util');

var getRuleFinder = require('../lib/rule-finder')
var specifiedFile = argv._[0]

var ruleFinder = getRuleFinder(specifiedFile, argv.core === false)

var errorOut = argv.error && !argv.n
var processExitCode = argv.u && errorOut ? 1 : 0
const specifiedFile = argv._[0];
const ruleFinder = getRuleFinder(specifiedFile, argv.core === false);
const errorOut = argv.error && !argv.n;
let processExitCode = argv.u && errorOut ? 1 : 0;

if (!argv.c && !argv.p && !argv.a && !argv.u) {
console.log('no option provided, please provide a valid option') // eslint-disable-line no-console
console.log('usage:') // eslint-disable-line no-console
console.log('eslint-find-rules [option] <file> [flag]') // eslint-disable-line no-console
process.exit(0)
console.log('no option provided, please provide a valid option'); // eslint-disable-line no-console
console.log('usage:'); // eslint-disable-line no-console
console.log('eslint-find-rules [option] <file> [flag]'); // eslint-disable-line no-console
process.exit(0);
}

Object.keys(options).forEach(function findRules(option) {
var rules
var ruleFinderMethod = ruleFinder[option]
Object.keys(options).forEach(option => {
let rules;
const ruleFinderMethod = ruleFinder[option];
if (argv[option] && ruleFinderMethod) {
rules = ruleFinderMethod()
argv.verbose && cli.push('\n' + options[option][0] + ' rules\n' + rules.length + ' rules found\n')
if (rules.length) {
rules = ruleFinderMethod();
if (argv.verbose) {
cli.push('\n' + options[option][0] + ' rules\n' + rules.length + ' rules found\n');
}
if (rules.length > 0) {
if (argv.verbose) {
rules = rules.map(function(rule) {
return [rule, getRuleURI(rule).url]
}).reduce(function(all, single) {
return all.concat(single)
})
cli.push(rules, 2, false)
rules = rules
.map(rule => [rule, getRuleURI(rule).url])
.reduce((all, single) => all.concat(single));
cli.push(rules, 2, false);
} else {
cli.push('\n' + options[option][0] + ' rules\n')
cli.push(rules)
cli.push('\n' + options[option][0] + ' rules\n');
cli.push(rules);
}
cli.write()
cli.write();
} else /* istanbul ignore else */ if (option === 'getUnusedRules') {
processExitCode = 0
processExitCode = 0;
}
}
})
});

if (processExitCode) {
process.exit(processExitCode)
process.exit(processExitCode);
}
18 changes: 2 additions & 16 deletions src/lib/array-diff.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,5 @@
function difference(a, b) {
var hash = {}
var diff = {}

b.forEach(function createHash(item) {
hash[item] = true
})

a.forEach(function findDiff(item) {
if (!hash[item] && !diff[item]) {
diff[item] = true
}
})

return Object.keys(diff)

return a.filter(item => !b.includes(item)).sort((a, b) => a > b);
}

module.exports = difference
module.exports = difference;

0 comments on commit dd2b370

Please sign in to comment.