UNPKG

@appworks/doctor

Version:

Analyse and running codemods over react/rax projects, troubleshooting and automatically fixing errors

62 lines (61 loc) 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var fs = require("fs-extra"); var path = require("path"); var ignore_1 = require("ignore"); var glob_1 = require("glob"); // Supprot check file's max LoC var MAX_CHECK_LOC = 3000; // Get ignore config from file var IGNORE_CONFIG_FILES = ['.gitignore']; function getFileInfo(filePath, directory) { var file = directory ? path.join(directory, filePath) : filePath; var source = fs.readFileSync(file).toString().trim(); // if begins with shebang if (source[0] === '#' && source[1] === '!') { source = "//" + source; } return { path: file, source: source, LoC: (source.match(/\n/g) || '').length + 1, }; } function getFiles(directory, ignoreDirs) { var options = { nodir: true, cwd: directory, }; if (!fs.existsSync(directory)) { return []; } try { var ig_1 = ignore_1.default(); var stat = fs.statSync(directory); if (stat.isFile()) { return [getFileInfo(directory)]; } if (ignoreDirs) { options.ignore = ignoreDirs.map(function (ignoreDir) { return "**/" + ignoreDir + "/**"; }); } IGNORE_CONFIG_FILES.forEach(function (ignoreConfigFile) { var ignoreConfigFilePath = path.join(directory, ignoreConfigFile); if (fs.existsSync(ignoreConfigFilePath)) { ig_1.add(fs.readFileSync(ignoreConfigFilePath).toString()); } }); // https://www.npmjs.com/package/glob return glob_1.glob.sync('**/*', options) .map(function (file) { return getFileInfo(file, directory); }) .filter(function (file) { // https://www.npmjs.com/package/ignore // Use .ignore file to filter glob result. Same as https://www.npmjs.com/package/glob-gitignore return file.LoC <= MAX_CHECK_LOC && !ig_1.ignores(file.path.replace(path.join(directory, '/'), '')); }); } catch (e) { console.log('Get files failed!', e); return []; } } exports.default = getFiles;