UNPKG

gherkin-lint-ts

Version:

Gherkin features linter written in Typescript

92 lines 3.52 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFeatureFiles = exports.defaultIgnoredFiles = exports.defaultIgnoreFileName = void 0; const logger = __importStar(require("./logger")); const _ = require("lodash"); const glob = require("glob"); const fs = require("fs"); const path = require("path"); exports.defaultIgnoreFileName = ".gherkin-lintignore"; exports.defaultIgnoredFiles = "node_modules/**"; // Ignore node_modules by default function getFeatureFiles(args, ignoreArg) { let files = []; const patterns = args.length ? args : ["."]; patterns.forEach(pattern => { // First we need to fix up the pattern so that it only matches .feature files // and it's in the format that glob expects it to be let fixedPattern; if (pattern === ".") { fixedPattern = "**/*.feature"; } else if (pattern.match(/.*\/\*\*/)) { fixedPattern = `${pattern}/**.feature`; } else if (pattern.match(/.*\.feature/)) { fixedPattern = pattern; } else { try { if (fs.statSync(pattern).isDirectory()) { fixedPattern = path.join(pattern, "**/*.feature"); } } catch (e) { // Don't show the fs callstack, we will print a custom error message bellow instead } } if (!fixedPattern) { logger.boldError(`Invalid format of the feature file path/pattern: "${pattern}".\n To run the linter please specify an existing feature file, directory or glob.`); process.exit(1); return; // This line will only be hit by tests that stub process.exit } const globOptions = { ignore: getIgnorePatterns(ignoreArg), nodir: true, }; files = files.concat(glob.sync(fixedPattern, globOptions)); }); return _.uniq(files); } exports.getFeatureFiles = getFeatureFiles; function getIgnorePatterns(ignoreArg) { if (ignoreArg) { return ignoreArg; } else if (fs.existsSync(exports.defaultIgnoreFileName)) { // return an array where each element of the array is a line of the ignore file return fs.readFileSync(exports.defaultIgnoreFileName) .toString() .split(/[\n|\r]/) .filter(i => { // remove empty strings if (i !== "") { return true; } return false; }); } else { return exports.defaultIgnoredFiles; } } //# sourceMappingURL=feature-finder.js.map