Skip to content

Commit

Permalink
Pass include and exclude from the rule definition into onProject
Browse files Browse the repository at this point in the history
  • Loading branch information
Li0liQ committed Feb 26, 2018
1 parent 7d8ae5d commit 70da31f
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 62 deletions.
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ interface RuleDefinition {
};
};
rootPath: string;
id?: string;
include?: RegExp | RegExp[] | Function;
exclude?: RegExp | RegExp[] | Function;
}) => string[];
}
```
Expand All @@ -95,6 +98,10 @@ interface RuleDefinition {

`onProject` should return an array of strings, describing violations, or an empty array if there is none.

`include` value of `include` from the rule

`exclude` value of `exclude` from the rule

# Debugging
It helps to use `src/debug.ts` as an entry point for debugging.
A sample launch.json for VS Code might look like
Expand Down
120 changes: 61 additions & 59 deletions lib/index.js
Original file line number Diff line number Diff line change
@@ -1,54 +1,54 @@
if (typeof global === "object") {
global.require = require;
}
var _d5dd = {};
_d5dd.f = {}
var _5408 = {};
_5408.f = {}
// cached modules
_d5dd.m = {};
_d5dd.s = function(id) {
var result = _d5dd.r(id);
_5408.m = {};
_5408.s = function(id) {
var result = _5408.r(id);
if (result === undefined) {
var result = require(id);
return result;
}
}
_d5dd.r = function(id) {
var cached = _d5dd.m[id];
_5408.r = function(id) {
var cached = _5408.m[id];
// resolve if in cache
if (cached) {
return cached.m.exports;
}
var file = _d5dd.f[id];
var file = _5408.f[id];
if (!file)
return;
cached = _d5dd.m[id] = {};
cached = _5408.m[id] = {};
cached.exports = {};
cached.m = { exports: cached.exports };
file.call(cached.exports, cached.m, cached.exports);
return cached.m.exports;
};
// stricter/index.js
_d5dd.f[0] = function(module,exports){
_5408.f[0] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
var stricter_1 = _d5dd.r(1);
var stricter_1 = _5408.r(1);
exports.stricter = stricter_1.default;
var cli_1 = _d5dd.r(20);
var cli_1 = _5408.r(20);
exports.cli = cli_1.default;
var processor_1 = _d5dd.r(9);
var processor_1 = _5408.r(9);
exports.readFilesData = processor_1.readFilesData;
var dependencies_1 = _d5dd.r(10);
var dependencies_1 = _5408.r(10);
exports.readDependencies = dependencies_1.default;
}
// stricter/stricter.js
_d5dd.f[1] = function(module,exports){
_5408.f[1] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const config_1 = _d5dd.r(2);
const rule_1 = _d5dd.r(6);
const processor_1 = _d5dd.r(9);
const logger_1 = _d5dd.r(15);
const utils_1 = _d5dd.r(7);
const types_1 = _d5dd.r(14);
const debug_1 = _d5dd.r(19);
const config_1 = _5408.r(2);
const rule_1 = _5408.r(6);
const processor_1 = _5408.r(9);
const logger_1 = _5408.r(15);
const utils_1 = _5408.r(7);
const types_1 = _5408.r(14);
const debug_1 = _5408.r(19);
exports.default = ({silent = false, reporter = types_1.Reporter.CONSOLE, configPath}) => {
const result = debug_1.measure('Total', () => {
debug_1.default({
Expand Down Expand Up @@ -88,11 +88,11 @@ exports.default = ({silent = false, reporter = types_1.Reporter.CONSOLE, configP
};
}
// stricter/config/index.js
_d5dd.f[2] = function(module,exports){
_5408.f[2] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const read_config_1 = _d5dd.r(3);
const process_config_1 = _d5dd.r(4);
const validate_config_1 = _d5dd.r(5);
const read_config_1 = _5408.r(3);
const process_config_1 = _5408.r(4);
const validate_config_1 = _5408.r(5);
exports.getConfig = configPath => {
const foundConfig = read_config_1.default(configPath);
validate_config_1.default(foundConfig);
Expand All @@ -101,7 +101,7 @@ exports.getConfig = configPath => {
};
}
// stricter/config/read-config.js
_d5dd.f[3] = function(module,exports){
_5408.f[3] = function(module,exports){
var process = require('process');
Object.defineProperty(exports, '__esModule', { value: true });
const cosmiconfig = require('cosmiconfig');
Expand All @@ -119,7 +119,7 @@ exports.default = configPath => {
};
}
// stricter/config/process-config.js
_d5dd.f[4] = function(module,exports){
_5408.f[4] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const path = require('path');
exports.getDirResolver = filepath => dir => path.resolve(path.dirname(filepath), dir);
Expand All @@ -143,7 +143,7 @@ exports.default = foundConfig => {
};
}
// stricter/config/validate-config.js
_d5dd.f[5] = function(module,exports){
_5408.f[5] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
exports.default = foundConfig => {
if (!foundConfig) {
Expand All @@ -158,11 +158,11 @@ exports.default = foundConfig => {
};
}
// stricter/rule/index.js
_d5dd.f[6] = function(module,exports){
_5408.f[6] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const path = require('path');
const utils_1 = _d5dd.r(7);
const default_rules_1 = _d5dd.r(8);
const utils_1 = _5408.r(7);
const default_rules_1 = _5408.r(8);
exports.defaultRules = { 'stricter/unused-files': default_rules_1.unusedFilesRule };
exports.RULE_SUFFIX = '.rule';
const stripOutSuffix = str => {
Expand All @@ -175,7 +175,7 @@ exports.getRuleDefinitions = config => {
const ruleFiles = utils_1.listFiles(config.rulesDir).filter(i => i.endsWith(`${ exports.RULE_SUFFIX }.js`));
const customRules = ruleFiles.reduce((acc, filePath) => {
const ruleName = path.basename(filePath, path.extname(filePath));
const rule = _d5dd.s(filePath);
const rule = _5408.s(filePath);
if (!rule.onProject) {
throw new Error(`Rule ${ ruleName } should have onProject.`);
}
Expand Down Expand Up @@ -233,7 +233,7 @@ exports.filterFilesToProcess = (directory, files, ruleApplications) => {
};
}
// stricter/utils/index.js
_d5dd.f[7] = function(module,exports){
_5408.f[7] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const fs = require('fs');
const path = require('path');
Expand Down Expand Up @@ -280,7 +280,7 @@ exports.parse = source => {
};
}
// stricter/rule/default-rules/index.js
_d5dd.f[8] = function(module,exports){
_5408.f[8] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const dfs = (stack, dependencies, seen) => {
while (stack.length) {
Expand Down Expand Up @@ -317,12 +317,12 @@ const checkForMatch = (setting, filePath) => {
};
}
// stricter/processor/index.js
_d5dd.f[9] = function(module,exports){
_5408.f[9] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const utils_1 = _d5dd.r(7);
const rule_1 = _d5dd.r(6);
const dependencies_1 = _d5dd.r(10);
const types_1 = _d5dd.r(14);
const utils_1 = _5408.r(7);
const rule_1 = _5408.r(6);
const dependencies_1 = _5408.r(10);
const types_1 = _5408.r(14);
const readFileData = (filePath, root, extensions) => {
const source = utils_1.readFile(filePath);
const ast = filePath.endsWith('.js') ? () => utils_1.parse(source) : undefined;
Expand Down Expand Up @@ -363,6 +363,8 @@ const processRule = (directory, definition, ruleUsage, filesData, dependencies)
const ruleMessages = definition.onProject({
dependencies,
config: ruleUsage.config,
include: ruleUsage.include,
exclude: ruleUsage.exclude,
files: reducedFilesData,
rootPath: directory
});
Expand Down Expand Up @@ -402,10 +404,10 @@ exports.applyProjectRules = (directory, filesData, ruleApplications) => {
};
}
// stricter/dependencies/index.js
_d5dd.f[10] = function(module,exports){
_5408.f[10] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const extract_path_1 = _d5dd.r(11);
const parse_imports_1 = _d5dd.r(13);
const extract_path_1 = _5408.r(11);
const parse_imports_1 = _5408.r(13);
exports.readDependencies = (ast, filePath, root, extensions) => {
const imports = parse_imports_1.default(ast);
const dependencies = [
Expand All @@ -427,18 +429,18 @@ exports.default = (filesData, root, extensions) => {
};
}
// stricter/dependencies/extract-path.js
_d5dd.f[11] = function(module,exports){
_5408.f[11] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const path = require('path');
const resolve_import_1 = _d5dd.r(12);
const resolve_import_1 = _5408.r(12);
exports.default = (importString, filePath, resolveRoots, extensions) => {
const potentialImportPaths = importString.startsWith('.') ? [path.resolve(filePath, '..', importString)] : resolveRoots.map(i => path.resolve(i, importString));
const result = resolve_import_1.default(potentialImportPaths, extensions) || importString;
return result;
};
}
// stricter/dependencies/resolve-import.js
_d5dd.f[12] = function(module,exports){
_5408.f[12] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const fs = require('fs');
const path = require('path');
Expand All @@ -457,7 +459,7 @@ exports.default = (potentialImportPaths, extensions) => {
};
}
// stricter/dependencies/parse-imports.js
_d5dd.f[13] = function(module,exports){
_5408.f[13] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const babylon_walk_1 = require('babylon-walk');
exports.default = ast => {
Expand Down Expand Up @@ -490,7 +492,7 @@ exports.default = ast => {
};
}
// stricter/types/index.js
_d5dd.f[14] = function(module,exports){
_5408.f[14] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
var Level;
(function (Level) {
Expand All @@ -505,18 +507,18 @@ var Reporter;
}(Reporter = exports.Reporter || (exports.Reporter = {})));
}
// stricter/logger/index.js
_d5dd.f[15] = function(module,exports){
_5408.f[15] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
var console_1 = _d5dd.r(16);
var console_1 = _5408.r(16);
exports.consoleLogger = console_1.default;
var mocha_1 = _d5dd.r(17);
var mocha_1 = _5408.r(17);
exports.mochaLogger = mocha_1.default;
var flatten_1 = _d5dd.r(18);
var flatten_1 = _5408.r(18);
exports.compactProjectLogs = flatten_1.compactProjectLogs;
exports.getErrorCount = projectLogs => Object.values(projectLogs).reduce((acc, i) => acc + (i.errors && i.errors.length || 0), 0);
}
// stricter/logger/console.js
_d5dd.f[16] = function(module,exports){
_5408.f[16] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const chalk_1 = require('chalk');
exports.default = logs => {
Expand All @@ -539,7 +541,7 @@ exports.default = logs => {
};
}
// stricter/logger/mocha.js
_d5dd.f[17] = function(module,exports){
_5408.f[17] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const fs = require('fs');
const reportFileName = 'stricter.json';
Expand Down Expand Up @@ -582,7 +584,7 @@ exports.default = logs => {
};
}
// stricter/logger/flatten.js
_d5dd.f[18] = function(module,exports){
_5408.f[18] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
exports.compactProjectLogs = projectResult => {
const result = Object.entries(projectResult).map(([rule, applicationResult]) => ({
Expand All @@ -594,7 +596,7 @@ exports.compactProjectLogs = projectResult => {
};
}
// stricter/debug.js
_d5dd.f[19] = function(module,exports){
_5408.f[19] = function(module,exports){
Object.defineProperty(exports, '__esModule', { value: true });
const debug = require('debug');
const debugWriter = debug('stricter');
Expand All @@ -611,12 +613,12 @@ exports.measure = (mark, fn) => {
exports.default = debugWriter;
}
// stricter/cli.js
_d5dd.f[20] = function(module,exports){
_5408.f[20] = function(module,exports){
var process = require('process');
Object.defineProperty(exports, '__esModule', { value: true });
const program = require('commander');
const isCi = require('is-ci');
const stricter_1 = _d5dd.r(1);
const stricter_1 = _5408.r(1);
exports.default = () => {
program.version('0.0.12').option('-c, --config <path>', 'specify config location').option('-r, --reporter <console|mocha>', 'specify reporter', /^(console|mocha)$/i, 'console').parse(process.argv);
const result = stricter_1.default({
Expand All @@ -627,4 +629,4 @@ exports.default = () => {
return result;
};
}
module.exports = _d5dd.r(0)
module.exports = _5408.r(0)
2 changes: 2 additions & 0 deletions src/processor/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ const processRule = (
const ruleMessages = definition.onProject({
dependencies,
config: ruleUsage.config,
include: ruleUsage.include,
exclude: ruleUsage.exclude,
files: reducedFilesData,
rootPath: directory,
});
Expand Down
11 changes: 8 additions & 3 deletions src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,11 @@ export interface RuleUsageConfig {
[prop: string]: any;
}

export type FileFilter = RegExp | RegExp[] | Function;

export interface RuleUsage {
include?: RegExp | RegExp[] | Function;
exclude?: RegExp | RegExp[] | Function;
include?: FileFilter;
exclude?: FileFilter;
level?: Level;
config?: RuleUsageConfig;
}
Expand Down Expand Up @@ -60,11 +62,14 @@ export interface RuleToRuleApplicationResult {
}

export interface OnProjectArgument {
config?: RuleUsageConfig;
dependencies: FileToDependency;
files: FileToData;
rootPath: string;
include?: FileFilter;
exclude?: FileFilter;
config?: RuleUsageConfig;
}

export interface RuleDefinition {
onProject: (args: OnProjectArgument) => string[];
}
Expand Down

0 comments on commit 70da31f

Please sign in to comment.