From 4fffa190c305da34b78c280f9782b7008ca2f21a Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Thu, 11 Aug 2016 21:50:09 -0600 Subject: [PATCH] Add rule to enforce one provide per file --- package.json | 1 + rules/index.js | 1 + rules/one-provide.js | 28 ++++++++++++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 rules/one-provide.js diff --git a/package.json b/package.json index 2e67cc7e97..32d62aa049 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,7 @@ "openlayers-internal/no-duplicate-requires": 2, "openlayers-internal/no-missing-requires": 1, "openlayers-internal/no-unused-requires": 2, + "openlayers-internal/one-provide": 1, "openlayers-internal/requires-first": 2, "openlayers-internal/valid-requires": 2 } diff --git a/rules/index.js b/rules/index.js index fcd8ddf090..d4f37de7e0 100644 --- a/rules/index.js +++ b/rules/index.js @@ -5,6 +5,7 @@ module.exports = { 'no-duplicate-requires': require('./no-duplicate-requires').rule, 'no-missing-requires': require('./no-missing-requires').rule, 'no-unused-requires': require('./no-unused-requires').rule, + 'one-provide': require('./one-provide').rule, 'requires-first': require('./requires-first').rule, 'valid-requires': require('./valid-requires').rule } diff --git a/rules/one-provide.js b/rules/one-provide.js new file mode 100644 index 0000000000..092a88ee2e --- /dev/null +++ b/rules/one-provide.js @@ -0,0 +1,28 @@ +'use strict'; + +const util = require('./util'); + +exports.rule = { + meta: { + docs: { + description: 'disallow multiple goog.provide() calls' + } + }, + + create: function(context) { + let hasProvide = false; + + return { + ExpressionStatement: function(statement) { + if (util.isProvideStatement(statement)) { + if (hasProvide) { + const name = statement.expression.arguments[0].value; + context.report(statement, `Extra goog.provide('${name}')`); + } else { + hasProvide = true; + } + } + } + }; + } +};