Skip to content

Commit

Permalink
Migrate build system to ESLint
Browse files Browse the repository at this point in the history
JSHint's ES6 support is shaky, and its development has stalled as of late.
Since ESLint can do by itself both JSHint and JSCS' jobs, this commit replaces them.
Gulp and its related dependencies are also hereby removed.
  • Loading branch information
Slayer95 committed Nov 8, 2015
1 parent 9a52fe3 commit 7dddb66
Show file tree
Hide file tree
Showing 31 changed files with 358 additions and 640 deletions.
3 changes: 1 addition & 2 deletions .gitignore
@@ -1,10 +1,9 @@
/config/*
/logs/*
/node_modules
/gulp-cache
/eslint-cache
/chat-plugins/private.js
npm-debug.log
.eslintcache*

# boilerplate #
###############
Expand Down
2 changes: 1 addition & 1 deletion .travis.yml
Expand Up @@ -5,4 +5,4 @@ node_js:
cache:
directories:
- node_modules
- gulp-cache
- eslint-cache
9 changes: 6 additions & 3 deletions app.js
Expand Up @@ -108,9 +108,12 @@ try {
Config.port = cloudenv.get('PORT', Config.port);
} catch (e) {}

if (require.main === module && process.argv[2] && parseInt(process.argv[2])) {
Config.port = parseInt(process.argv[2]);
Config.ssl = null;
if (require.main === module && process.argv[2]) {
let port = parseInt(process.argv[2]); // eslint-disable-line radix
if (port) {
Config.port = port;
Config.ssl = null;
}
}

/*********************************************************
Expand Down
4 changes: 2 additions & 2 deletions battle-engine.js
Expand Up @@ -55,7 +55,7 @@ let Battle, BattleSide, BattlePokemon;

let Battles = Object.create(null);

require('./repl.js').start('battle-engine-', process.pid, function (cmd) { return eval(cmd); }); // eslint-disable-line no-eval
require('./repl.js').start('battle-engine-', process.pid, function (cmd) { return eval(cmd); });

// Receive and process a message sent using Simulator.prototype.send in
// another process.
Expand Down Expand Up @@ -129,7 +129,7 @@ process.on('message', function (message) {
}
} else if (data[1] === 'eval') {
try {
eval(data[2]); // eslint-disable-line no-eval
eval(data[2]);
} catch (e) {}
}
}
Expand Down
2 changes: 1 addition & 1 deletion chat-plugins/info.js
Expand Up @@ -14,7 +14,7 @@

const RESULTS_MAX_LENGTH = 10;

let commands = exports.commands = {
let commands = exports.commands = { // eslint-disable-line no-unused-vars

ip: 'whois',
rooms: 'whois',
Expand Down
3 changes: 2 additions & 1 deletion chat-plugins/jeopardy.js
Expand Up @@ -51,8 +51,9 @@ let JeopardyQuestions = (function () {

JeopardyQuestions.prototype.export = function (category, start, end) {
let data = [];
for (let q = start; q < end; ++q)
for (let q = start; q < end; ++q) {
data.push(this.grid[category][q]);
}
return data;
};
JeopardyQuestions.prototype.import = function (category, start, end, data) {
Expand Down
2 changes: 1 addition & 1 deletion cidr.js
Expand Up @@ -65,6 +65,6 @@ let checker = exports.checker = function (cidr) {
};
};

let check = exports.check = function (cidr, ip) {
let check = exports.check = function (cidr, ip) { // eslint-disable-line no-unused-vars
return checker(cidr)(ip);
};
4 changes: 3 additions & 1 deletion commands.js
Expand Up @@ -22,7 +22,7 @@ const MAX_REASON_LENGTH = 300;
const MUTE_LENGTH = 7 * 60 * 1000;
const HOURMUTE_LENGTH = 60 * 60 * 1000;

let commands = exports.commands = {
let commands = exports.commands = { // eslint-disable-line no-unused-vars

version: function (target, room, user) {
if (!this.canBroadcast()) return;
Expand Down Expand Up @@ -2048,9 +2048,11 @@ let commands = exports.commands = {

if (!this.broadcasting) this.sendReply('||>> ' + target);
try {
/* eslint-disable no-unused-vars */
let battle = room.battle;
let me = user;
this.sendReply('||<< ' + eval(target));
/* eslint-enable no-unused-vars */
} catch (e) {
this.sendReply('||<< error: ' + e.message);
let stack = '||' + ('' + e.stack).replace(/\n/g, '\n||');
Expand Down
167 changes: 167 additions & 0 deletions dev-tools/eslint/config-base.js
@@ -0,0 +1,167 @@
const os = require('os');

module.exports = {
"env": {
"node": true,
"es6": true
},
"globals": {
"Config": false, "Monitor": false, "toId": false, "Tools": false, "LoginServer": false,
"Users": false, "Rooms": false, "Verifier": false, "CommandParser": false, "Simulator": false,
"Tournaments": false, "Dnsbl": false, "Cidr": false, "Sockets": false, "TeamValidator": false, "Ladders": false
},
"rules": {
"comma-dangle": [2, "never"],
"no-cond-assign": [2, "except-parens"],
"no-console": 0,
"no-constant-condition": 0,
"no-control-regex": 0,
"no-debugger": 2,
"no-dupe-args": 2,
"no-dupe-keys": 2,
"no-duplicate-case": 1,
"no-empty-character-class": 2,
"no-empty": 0,
"no-ex-assign": 2,
"disallow-extra-boolean-casts": 0,
"no-extra-parens": 0,
"no-extra-semi": 2,
"no-func-assign": 2,
"no-inner-declarations": 2,
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-negated-in-lhs": 2,
"no-obj-calls": 2,
"no-regex-spaces": 2,
"no-sparse-arrays": 2,
"no-unexpected-multiline": 2,
"no-unreachable": 2,
"use-isnan": 2,
"valid-jsdoc": 0,
"valid-typeof": 2,

"block-scoped-var": 2,
"complexity": 0,
"consistent-return": 0,
"curly": [2, "multi-line", "consistent"],
"default-case": 0,
"dot-location": [2, "property"],
"dot-notation": 0,
"eqeqeq": 2,
"no-caller": 2,
"no-case-declarations": 0,
"no-div-regex": 2,
"no-else-return": 0,
"no-empty-label": 2,
"no-empty-pattern": 1,
"no-eval": 0,
"no-implied-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 1,
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-implicit-coercion": 0,
"no-invalid-this": 0,
"no-lone-blocks": 0,
"no-loop-func": 0,
"no-magic-numbers": 0,
"no-multi-spaces": 0,
"no-multi-str": 2,
"no-native-reassign": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-new": 2,
"no-octal-escape": 2,
"no-octal": 1,
"no-param-reassign": 0,
"no-process-env": 0,
"no-proto": 2,
"no-redeclare": 2,
"no-return-assign": [2, "except-parens"],
"no-self-compare": 2,
"no-sequences": 1,
"no-throw-literal": 2,
"no-unused-expressions": 2,
"no-useless-call": 2,
"no-useless-concat": 0,
"no-void": 0,
"no-warning-comments": 0,
"no-with": 2,
"radix": 1,
"vars-on-top": 0,
"wrap-iife": [2, "inside"],
"yoda": 0,
"strict": 0,
"init-declarations": 0,
"no-delete-var": 2,
"no-label-var": 2,
"no-shadow-restricted-names": 2,
"no-shadow": 0,
"no-undef-init": 0,
"no-undef": [2, {"typeof": true}],
"no-undefined": 0,
"no-unused-vars": [1, {"args": "none"}],
"no-use-before-define": [2, "nofunc"],

"no-new-require": 2,

"array-bracket-spacing": [2, "never"],
"block-spacing": 0,
"brace-style": [2, "1tbs", {"allowSingleLine": true}],
"camelcase": 0,
"comma-spacing": [2, {"before": false, "after": true}],
"comma-style": [2, "last"],
"computed-property-spacing": [2, "never"],
"consistent-this": 0,
"eol-last": os.EOL === '\n' ? [2, "unix"] : 0,
"func-names": 0,
"func-style": 0,
"id-length": 0,
"id-match": 0,
"indent": [2, "tab"],
"key-spacing": 0,
"linebreak-style": os.EOL === '\n' ? [2, "unix"] : 0,
"lines-around-comment": 0,
"max-nested-callbacks": 0,
"new-cap": 2,
"new-parens": 2,
"newline-after-var": 0,
"no-array-constructor": 2,
"no-continue": 0,
"no-inline-comments": 0,
"no-lonely-if": 0,
"no-mixed-spaces-and-tabs": [2, "smart-tabs"],
"no-multiple-empty-lines": [2, {"max": 2, "maxEOF": 1}],
"no-negated-condition": 0,
"no-nested-ternary": 0,
"no-new-object": 2,
"no-spaced-func": 2,
"no-ternary": 0,
"no-trailing-spaces": 2,
"no-underscore-dangle": 0,
"no-unneeded-ternary": 2,
"object-curly-spacing": [2, "never"],
"one-var": 0,
"operator-assignment": 0,
"operator-linebreak": [2, "after"],
"padded-blocks": [2, "never"],
"quote-props": 0,
"quotes": 0,
"require-jsdoc": 0,
"semi-spacing": [2, {"before": false, "after": true}],
"semi": [2, "always"],
"sort-vars": 0,
"space-after-keywords": [2, "always"],
"space-before-blocks": [2, "always"],
"space-before-function-paren": [2, {"anonymous": "always", "named": "never"}],
"space-before-keywords": [2, "always"],
"space-in-parens": [2, "never"],
"space-infix-ops": 2,
"space-return-throw-case": 2,
"space-unary-ops": [2, {"words": true, "nonwords": false}],
"spaced-comment": 0,
"wrap-regex": 0,

"validate-conditionals": 2
}
};
10 changes: 10 additions & 0 deletions dev-tools/eslint/config-compat.js
@@ -0,0 +1,10 @@
module.exports = {
"extends": "./config-base.js",
"env": {
"browser": true,
"es6": false
},
"rules": {
"quote-props": [2, "as-needed", {"keywords": true, "unnecessary": false}]
}
};
6 changes: 6 additions & 0 deletions dev-tools/eslint/config-config.js
@@ -0,0 +1,6 @@
module.exports = {
"extends": "./config-base.js",
"rules": {
"comma-dangle": 0
}
};
7 changes: 7 additions & 0 deletions dev-tools/eslint/config-data-compact.js
@@ -0,0 +1,7 @@
module.exports = {
"extends": "./config-data.js",
"rules": {
"key-spacing": [2, {"beforeColon": false, "afterColon": false}],
"indent": 0,
}
};
17 changes: 17 additions & 0 deletions dev-tools/eslint/config-data.js
@@ -0,0 +1,17 @@
module.exports = {
"extends": "./config-base.js",
"rules": {
"comma-dangle": [2, "never"],
"comma-spacing": [2, {"before": false, "after": false}],
"no-restricted-syntax": [2,
"ReturnStatement", "LabeledStatement", "BreakStatement", "ContinueStatement",
"IfStatement", "SwitchStatement",
"WhileStatement", "DoWhileStatement", "ForStatement", "ForInStatement",
"FunctionDeclaration", "VariableDeclaration",
"FunctionExpression",
"UpdateExpression",
"BinaryExpression", "LogicalExpression",
"ConditionalExpression", "CallExpression", "NewExpression", "SequenceExpression"
]
}
};
9 changes: 9 additions & 0 deletions dev-tools/eslint/config-test.js
@@ -0,0 +1,9 @@
module.exports = {
"extends": "./config-base.js",
"env": {
"mocha": true
},
"globals": {
"BattleEngine": false
},
};

0 comments on commit 7dddb66

Please sign in to comment.