UNPKG

@hygiene/cli

Version:

Keep your TODOs and FIXMEs healthy

127 lines (96 loc) 4.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.run = exports.createFilter = void 0; var _fs = require("fs"); var _util = require("util"); var _path = require("path"); var _ignore = _interopRequireDefault(require("ignore")); var _pick = _interopRequireDefault(require("lodash/pick")); var _flow = _interopRequireDefault(require("lodash/flow")); var _core = require("@hygiene/core"); var reporters = _interopRequireWildcard(require("../reporter")); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } var readFileAsync = (0, _util.promisify)(_fs.readFile); var existsAsync = (0, _util.promisify)(_fs.exists); var createFilter = /*#__PURE__*/ function () { var _ref2 = _asyncToGenerator(function* (_ref) { var ignorePattern = _ref.ignorePattern, ignorePath = _ref.ignorePath, cwd = _ref.cwd; var blacklist = (0, _ignore.default)(); if (ignorePath) { if (yield existsAsync(ignorePath)) { // TODO: Verbose logging blacklist.add((yield readFileAsync(ignorePath, "utf8"))); } else {// TODO: Verbose logging } } if (ignorePattern) { // TODO: Verbose logging blacklist.add(ignorePattern); } // https://www.npmjs.com/package/ignore#1-pathname-should-be-a-pathrelative-d-pathname return (0, _flow.default)(function (path) { return (0, _path.relative)(cwd, path); }, function (path) { try { return !blacklist.ignores(path); } catch (e) { if (e.message.includes("relative")) { return true; } throw e; } }); }); return function createFilter(_x) { return _ref2.apply(this, arguments); }; }(); exports.createFilter = createFilter; var run = function run(_ref3) { var plugins = _ref3.plugins; return ( /*#__PURE__*/ function () { var _ref4 = _asyncToGenerator(function* (argv) { var glob = argv.glob, json = argv.json, ignore = argv.ignore, ignorePattern = argv.ignorePattern, ignorePath = argv.ignorePath; var bodyParser = _core.combineParsers.apply(void 0, _toConsumableArray(plugins)); var report = json ? reporters.json : reporters.text; var filter = ignore ? yield createFilter({ ignorePattern: ignorePattern, ignorePath: ignorePath, cwd: process.cwd() }) : function () { return true; }; var pluginConfigs = plugins.map(function (plugin) { return (0, _pick.default)(argv, Object.keys(plugin.getConfigDefinition())); }); var comments = yield (0, _core.parseFiles)(glob, bodyParser, { filter: filter }); var expiredComments = yield (0, _core.filterExpired)(comments, plugins, pluginConfigs); return report(expiredComments, plugins, pluginConfigs); }); return function (_x2) { return _ref4.apply(this, arguments); }; }() ); }; exports.run = run;