-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathindex.js
executable file
·58 lines (48 loc) · 1.46 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#!/usr/bin/env node
var fs = require('fs');
var _ = require('lodash');
var stripJsonComments = require('strip-json-comments');
var map = require('./lib/jshint').map;
// Parse file path to jshintrc file
var args = process.argv.slice(2);
var jshintFilePath = args[0];
// Check if argument exists
if (!jshintFilePath) {
console.log('Please specify the path to your .jshintrc file');
process.exit(1);
}
// Chefk if .jshintrc file exists
if (!fs.existsSync(jshintFilePath)) {
console.log('The .jshintrc file specified does not exist');
process.exit(1);
}
// Read jshintrc file
var jshintContents = fs.readFileSync(jshintFilePath);
var jshintRules = JSON.parse(stripJsonComments(jshintContents));
// Disable console.log statements before running this, to ensure we can pipe results only
console.log = function noop() {};
// Convert to eslint json
var eslintResult = map(jshintRules);
var eslintEnv = eslintResult.env;
var eslintGlobals = eslintResult.globals || {};
var eslintRules = sortObject(_.omit(eslintResult, 'env', 'globals'));
var eslintJson = {
env: eslintEnv,
globals: eslintGlobals,
rules: eslintRules
};
// Write output to stdout
var output = JSON.stringify(eslintJson, null, 2);
process.stdout.write(output);
/**
* Sorts the keys in an object.
*/
function sortObject(obj) {
var keys = Object.keys(obj);
var sortedKeys = keys.sort();
var sortedObj = {};
sortedKeys.forEach(function x(key) {
sortedObj[key] = obj[key];
});
return sortedObj;
}