UNPKG

eslint-config-atomic

Version:
41 lines (40 loc) 1.87 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.findFilesForGroups = void 0; const fs_1 = require("fs"); const path_1 = require("path"); const anymatch_1 = __importDefault(require("anymatch")); function findFilesForGroups(cwd, earlyExitSearchGroup, exhaustiveSearchGroup, ignored) { const status = [false, false]; searchDirectory(cwd, status, earlyExitSearchGroup, exhaustiveSearchGroup, ignored); return status; } exports.findFilesForGroups = findFilesForGroups; function searchDirectory(directory, status, earlyExitSearchGroup, exhaustiveSearchGroup, ignored) { // recursively search the current folder for a file with the given fileEnding, ignoring the given folders, and return true as soon as one is found const files = (0, fs_1.readdirSync)(directory, { withFileTypes: true, recursive: false }); for (const file of files) { const path = (0, path_1.join)(directory, file.name); if (file.isDirectory()) { // if the folder is not ignored, search it recursively if (!(0, anymatch_1.default)(ignored, path)) { if (searchDirectory(path, status, earlyExitSearchGroup, exhaustiveSearchGroup, ignored)) { return true; // exit } } } else { // check the early exit search group first status[0] = status[0] || (0, anymatch_1.default)(exhaustiveSearchGroup, path); if (status[0]) { return true; // exit } // check the exhaustive search group status[1] = status[1] || (0, anymatch_1.default)(exhaustiveSearchGroup, path); } } return false; // continue }