From b62f42006c90521704db4185a09e7d6c521d8867 Mon Sep 17 00:00:00 2001 From: Chris Clark Date: Tue, 3 Feb 2015 16:11:44 -0800 Subject: [PATCH] [TASK] Add eslint enforcement to travis.yml --- .travis.yml | 3 + Gulpfile.js | 66 +++++++++++----------- eslint.json | 72 ------------------------ eslintrc | 155 +++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 5 files changed, 190 insertions(+), 108 deletions(-) delete mode 100644 eslint.json create mode 100644 eslintrc diff --git a/.travis.yml b/.travis.yml index 791ff4b3..65d2b3f9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,9 @@ language: node_js node_js: - "0.10" +before_script: + - npm install -g eslint + - eslint --reset -c ./eslintrc $(git --no-pager diff --name-only --relative FETCH_HEAD $(git merge-base FETCH_HEAD origin/HEAD) | grep "\.js$") script: MOCHA_REPORTER=tap npm test --coverage after_success: - npm run coveralls diff --git a/Gulpfile.js b/Gulpfile.js index bb79e8d7..3e1cb72d 100644 --- a/Gulpfile.js +++ b/Gulpfile.js @@ -1,3 +1,4 @@ +'use strict'; var gulp = require('gulp'); var gutil = require('gulp-util'); var watch = require('gulp-watch'); @@ -8,21 +9,14 @@ var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); var rename = require('gulp-rename'); var webpack = require('webpack'); -var map = require('map-stream'); var bump = require('gulp-bump'); var react = require('gulp-react'); var flow = require('gulp-flowtype'); var argv = require('yargs').argv; -//var header = require('gulp-header'); +// var header = require('gulp-header'); var pkg = require('./package.json'); -var banner = '/*! <%= pkg.name %> - v<%= pkg.version %> - ' -+ '<%= new Date().toISOString() %>\n' -+ '<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' -+ '* Copyright (c) <%= new Date().getFullYear() %> <%= pkg.author.name %>;' -+ ' Licensed <%= pkg.license %> */' - var sjclSrc = [ 'src/js/sjcl/core/sjcl.js', 'src/js/sjcl/core/aes.js', @@ -66,33 +60,33 @@ gulp.task('concat-sjcl', function() { .pipe(gulp.dest('./build/')); }); -gulp.task('build', [ 'concat-sjcl' ], function(callback) { +gulp.task('build', ['concat-sjcl'], function(callback) { webpack({ cache: true, entry: './src/js/ripple/index.js', output: { library: 'ripple', path: './build/', - filename: [ 'ripple-', '.js' ].join(pkg.version) - }, + filename: ['ripple-', '.js'].join(pkg.version) + } }, callback); }); -gulp.task('build-min', [ 'build' ], function(callback) { - return gulp.src([ './build/ripple-', '.js' ].join(pkg.version)) +gulp.task('build-min', ['build'], function() { + return gulp.src(['./build/ripple-', '.js'].join(pkg.version)) .pipe(uglify()) - .pipe(rename([ 'ripple-', '-min.js' ].join(pkg.version))) + .pipe(rename(['ripple-', '-min.js'].join(pkg.version))) .pipe(gulp.dest('./build/')); }); -gulp.task('build-debug', [ 'concat-sjcl' ], function(callback) { +gulp.task('build-debug', ['concat-sjcl'], function(callback) { webpack({ cache: true, entry: './src/js/ripple/index.js', output: { library: 'ripple', path: './build/', - filename: [ 'ripple-', '-debug.js' ].join(pkg.version) + filename: ['ripple-', '-debug.js'].join(pkg.version) }, debug: true, devtool: 'eval' @@ -105,11 +99,12 @@ gulp.task('build-debug', [ 'concat-sjcl' ], function(callback) { */ function buildUseError(cons) { - return 'var {:function(){throw new Error("Class is unavailable in this build: ")}}' - .replace(new RegExp('', 'g'), cons); -}; + return ('var {:function(){throw new Error(' + + '"Class is unavailable in this build: ")}}') + .replace(new RegExp('', 'g'), cons); +} -gulp.task('build-core', [ 'concat-sjcl' ], function(callback) { +gulp.task('build-core', ['concat-sjcl'], function(callback) { webpack({ entry: [ './src/js/ripple/remote.js' @@ -125,7 +120,7 @@ gulp.task('build-core', [ 'concat-sjcl' ], function(callback) { output: { library: 'ripple', path: './build/', - filename: [ 'ripple-', '-core.js' ].join(pkg.version) + filename: ['ripple-', '-core.js'].join(pkg.version) }, plugins: [ new webpack.optimize.UglifyJsPlugin() @@ -133,34 +128,35 @@ gulp.task('build-core', [ 'concat-sjcl' ], function(callback) { }, callback); }); -gulp.task('bower-build', [ 'build' ], function(callback) { - return gulp.src([ './build/ripple-', '.js' ].join(pkg.version)) +gulp.task('bower-build', ['build'], function() { + return gulp.src(['./build/ripple-', '.js'].join(pkg.version)) .pipe(rename('ripple.js')) .pipe(gulp.dest('./dist/')); }); -gulp.task('bower-build-min', [ 'build-min' ], function(callback) { - return gulp.src([ './build/ripple-', '-min.js' ].join(pkg.version)) +gulp.task('bower-build-min', ['build-min'], function() { + return gulp.src(['./build/ripple-', '-min.js'].join(pkg.version)) .pipe(rename('ripple-min.js')) .pipe(gulp.dest('./dist/')); }); -gulp.task('bower-build-debug', [ 'build-debug' ], function(callback) { - return gulp.src([ './build/ripple-', '-debug.js' ].join(pkg.version)) +gulp.task('bower-build-debug', ['build-debug'], function() { + return gulp.src(['./build/ripple-', '-debug.js'].join(pkg.version)) .pipe(rename('ripple-debug.js')) .pipe(gulp.dest('./dist/')); }); gulp.task('bower-version', function() { gulp.src('./dist/bower.json') - .pipe(bump({ version: pkg.version })) + .pipe(bump({version: pkg.version})) .pipe(gulp.dest('./dist/')); }); -gulp.task('bower', ['bower-build', 'bower-build-min', 'bower-build-debug', 'bower-version']); +gulp.task('bower', ['bower-build', 'bower-build-min', 'bower-build-debug', + 'bower-version']); gulp.task('watch', function() { - gulp.watch('src/js/ripple/*', [ 'build-debug' ]); + gulp.watch('src/js/ripple/*', ['build-debug']); }); // To use this, each javascript file must have /* @flow */ on the first line @@ -177,25 +173,25 @@ gulp.task('strip', function() { .pipe(watch('src/js/ripple/*.js')) .pipe(cleanDest('out')) // delete outdated output file before stripping .pipe(plumber()) // prevent an error in one file from ending build - .pipe(react({ stripTypes: true }).on('error', logPluginError)) + .pipe(react({stripTypes: true}).on('error', logPluginError)) .pipe(filelog()) .pipe(gulp.dest('out')); }); gulp.task('version-bump', function() { if (!argv.type) { - throw new Error("No type found, pass it in using the --type argument"); + throw new Error('No type found, pass it in using the --type argument'); } gulp.src('./package.json') - .pipe(bump({ type: argv.type })) + .pipe(bump({type: argv.type})) .pipe(gulp.dest('./')); }); gulp.task('version-beta', function() { gulp.src('./package.json') - .pipe(bump({ version: pkg.version + '-beta' })) + .pipe(bump({version: pkg.version + '-beta'})) .pipe(gulp.dest('./')); }); -gulp.task('default', [ 'concat-sjcl', 'build', 'build-debug', 'build-min' ]); +gulp.task('default', ['concat-sjcl', 'build', 'build-debug', 'build-min']); diff --git a/eslint.json b/eslint.json deleted file mode 100644 index 1dbdf371..00000000 --- a/eslint.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "env": { - "browser": true, - "node": true - }, - "rules": { - "no-use-before-define": 1, - "no-undef": 1, - "no-unused-expressions": 1, - "no-unused-vars": 1, - "no-extend-native": 1, - "no-native-reassign": 1, - "no-trailing-spaces": 1, - "no-empty": 1, - "no-inner-declarations": 1, - "no-irregular-whitespace": 1, - "no-negated-in-lhs": 1, - "no-obj-calls": 1, - "no-reserved-keys": 1, - "no-sparse-arrays": 1, - "no-unreachable": 1, - "use-isnan": 1, - "valid-jsdoc": 1, - "valid-typeof": 1, - "block-scoped-var": 1, - "dot-notation": 1, - "semi": 1, - "curly": 1, - "eqeqeq": 1, - "no-else-return": 1, - "new-cap": 1, - "new-parens": 1, - "no-comma-dangle": 1, - "no-empty-label": 1, - "no-eval": 1, - "no-extra-bind": 1, - "no-fallthrough": 1, - "no-lone-blocks": 1, - "no-loop-func": 1, - "no-multi-spaces": 1, - "no-return-assign": 1, - "no-sequences": 1, - "no-with": 1, - "radix": 1, - "yoda": [ 1, "never" ], - "no-catch-shadow": 1, - "no-shadow-restricted-names": 1, - "no-delete-var": 1, - "no-undefined": 1, - "handle-callback-err": 1, - "brace-style": [ 1, "1tbs", { "allowSingleLine": false } ], - "comma-spacing": [ 1, { "before": false, "after": true } ], - "comma-style": [ 1, "last" ], - "consistent-this": [ 1, "self" ], - "func-style": [ 1, "declaration" ], - "key-spacing": [ 1, { "beforeColon": false, "afterColon": true } ], - "max-nested-callbacks": [ 1, 2 ], - "no-lonely-if": 1, - "no-mixed-spaces-and-tabs": 1, - "no-multiple-empty-lines": 1, - "no-space-before-semi": 1, - "no-spaced-func": 1, - "space-after-keywords": [ 1, "always" ], - "space-infix-ops": 1, - "space-return-throw-case": 1, - "spaced-line-comment": 1, - "max-params": [ 1, 4 ], - "max-depth": [1, 3 ], - "max-len": [ 1, 80 ], - "quotes": [ 1, "single" ] - } -} diff --git a/eslintrc b/eslintrc new file mode 100644 index 00000000..a249dacb --- /dev/null +++ b/eslintrc @@ -0,0 +1,155 @@ +# ESLint documentation can be found at http://eslint.org/docs/ +env: + browser: true + node: true + amd: false + mocha: true + jasmine: false +rules: + no-alert: 2 + no-array-constructor: 2 + no-bitwise: 0 + no-caller: 2 + no-catch-shadow: 2 + no-comma-dangle: 2 + no-cond-assign: [2, 'always'] + no-console: 0 + no-constant-condition: 2 + no-control-regex: 2 + no-debugger: 2 + no-delete-var: 2 + no-div-regex: 0 + no-dupe-keys: 2 + no-else-return: 2 + no-empty: 2 + no-empty-class: 2 + no-empty-label: 2 + no-eq-null: 2 + no-eval: 2 + no-ex-assign: 2 + no-extend-native: 2 + no-extra-bind: 2 + no-extra-boolean-cast: 2 + no-extra-parens: 0 + no-extra-semi: 2 + no-fallthrough: 2 + no-floating-decimal: 0 + no-func-assign: 2 + no-implied-eval: 2 + no-inline-comments: 0 + no-inner-declarations: [2, 'functions'] + no-invalid-regexp: 2 + no-irregular-whitespace: 2 + no-iterator: 2 + no-label-var: 2 + no-labels: 2 + no-lone-blocks: 2 + no-lonely-if: 2 + no-loop-func: 2 + no-mixed-requires: [0, false] + no-mixed-spaces-and-tabs: [2, false] + no-multi-spaces: 2 + no-multi-str: 2 + no-multiple-empty-lines: [2, {max: 2}] + no-native-reassign: 2 + no-negated-in-lhs: 2 + no-nested-ternary: 0 + no-new: 2 + no-new-func: 2 + no-new-object: 2 + no-new-require: 0 + no-new-wrappers: 2 + no-obj-calls: 2 + no-octal: 2 + no-octal-escape: 2 + no-path-concat: 0 + no-plusplus: 0 + no-process-env: 0 + no-process-exit: 0 + no-proto: 2 + no-redeclare: 2 + no-regex-spaces: 2 + no-reserved-keys: 0 + no-restricted-modules: 0 + no-return-assign: 2 + no-script-url: 2 + no-self-compare: 2 + no-sequences: 2 + no-shadow: 2 + no-shadow-restricted-names: 2 + no-space-before-semi: 2 + no-spaced-func: 2 + no-sparse-arrays: 2 + no-sync: 0 + no-ternary: 0 + no-trailing-spaces: 2 + no-undef: 2 + no-undef-init: 2 + no-undefined: 0 + no-underscore-dangle: 0 + no-unreachable: 2 + no-unused-expressions: 2 + no-unused-vars: [2, {vars: 'all', args: 'after-used'}] + no-use-before-define: 2 + no-void: 2 + no-var: 0 + no-warning-comments: [0, {terms: ['todo', 'fixme', 'xxx'], location: 'start'}] + no-with: 2 + no-wrap-func: 2 + block-scoped-var: 2 + brace-style: 2 + camelcase: 0 + comma-spacing: 2 + comma-style: 2 + complexity: [0, 11] + consistent-return: 2 + consistent-this: [2, 'self'] + curly: [2, 'all'] + default-case: 0 + dot-notation: [2, {allowKeywords: true}] + eol-last: 2 + eqeqeq: 2 + func-names: 0 + func-style: [2, 'declaration'] + generator-star: 0 + guard-for-in: 0 + handle-callback-err: 2 + key-spacing: [2, {beforeColon: false, afterColon: true}] + max-depth: [1, 4] + max-len: [2, 80] + max-nested-callbacks: [1, 2] + max-params: [1, 4] + max-statements: [0, 10] + new-cap: 2 + new-parens: 2 + one-var: 0 + operator-assignment: [0, 'always'] + padded-blocks: 0 + quote-props: 0 + quotes: [2, 'single'] + radix: 2 + semi: 2 + sort-vars: 0 + space-after-function-name: [0, 'never'] + space-after-keywords: 2 + space-before-blocks: 2 + space-in-brackets: 2 + space-in-parens: 2 + space-infix-ops: 2 + space-return-throw-case: 2 + space-unary-ops: [2, {words: true, nonwords: false}] + spaced-line-comment: 2 + strict: [2, 'global'] + use-isnan: 2 + valid-jsdoc: 2 + valid-typeof: 2 + vars-on-top: 0 + wrap-iife: 0 + wrap-regex: 0 + yoda: [2, 'never'] +ecmaFeatures: + blockBindings: true + defaultParams: true + forOf: true + generators: true + jsx: true diff --git a/package.json b/package.json index 27253a8b..4587c535 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "pretest": "node_modules/.bin/gulp concat-sjcl", "test": "./node_modules/.bin/istanbul test -x build/sjcl.js -x src/js/jsbn/* ./node_modules/mocha/bin/_mocha -- --reporter ${MOCHA_REPORTER:=spec} test/*-test.js", "coveralls": "cat ./coverage/lcov.info | ./node_modules/.bin/coveralls", - "lint": "eslint --reset -c eslint.json src/js/ripple/*.js", + "lint": "eslint --reset -c eslintrc src/js/ripple/*.js", "perf": "./scripts/perf_test.sh" }, "repository": {