UNPKG

release-checker

Version:
151 lines (150 loc) 4.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var cli_options_parser_1 = require("../../cli-options/cli-options-parser"); var index_1 = require("../../reporters/ci-reporter/index"); function setErrors(errors) { return { in: function (checker) { checker.hasErrors = errors.length > 0; checker.errors = errors.slice(); }, }; } exports.setErrors = setErrors; function setErrorsAndWarnings(errorsAndWarnings) { return { in: function (checker) { var errors = errorsAndWarnings.filter(function (error) { return error.severity === 'error'; }); setErrors(errors).in(checker); var warnings = errorsAndWarnings.filter(function (error) { return error.severity === 'warning'; }); setWarnings(warnings).in(checker); }, }; } exports.setErrorsAndWarnings = setErrorsAndWarnings; function setWarnings(warnings) { return { in: function (checker) { checker.hasWarnings = warnings.length > 0; checker.warnings = warnings.slice(); }, }; } exports.setWarnings = setWarnings; function setCatchedError(error) { return { in: function (checker) { checker.hasErrors = true; var validationError = { reason: error.message, severity: 'error', }; checker.errors = [validationError]; }, }; } exports.setCatchedError = setCatchedError; function runChecker(checker) { try { ensureThatChecker(checker).canRun(); } catch (error) { var warning = { reason: error.message, severity: 'warning', }; setWarnings([warning]).in(checker); index_1.ciReporter.reportWarningStatusFor(checker); return; } try { var validationErrorsAndWarnings = checker.run(); setErrorsAndWarnings(validationErrorsAndWarnings).in(checker); } catch (error) { setCatchedError(error).in(checker); } if (checker.hasErrors) { index_1.ciReporter.reportErrorStatusFor(checker); return; } if (checker.hasWarnings) { index_1.ciReporter.reportWarningStatusFor(checker); return; } index_1.ciReporter.reportSuccessStatusFor(checker); } exports.runChecker = runChecker; function ensureThatMethod(methodName) { return { in: function (checker) { return { exists: function () { if (typeof checker[methodName] !== 'function') { var checkerId = checker.id || JSON.stringify(checker); throw new Error("Missing method " + methodName + "() in Checker '" + checkerId + "'"); } }, }; }, }; } exports.ensureThatMethod = ensureThatMethod; function ensureThatChecker(checker) { return { canRun: function () { ensureThatMethod('canRun') .in(checker) .exists(); if (checker.canRun && checker.canRun()) { ensureThatMethod('run') .in(checker) .exists(); return; } ensureThatMethod('whyCannotRun') .in(checker) .exists(); var errorMessage = checker.whyCannotRun && checker.whyCannotRun(); throw new Error(errorMessage); }, }; } exports.ensureThatChecker = ensureThatChecker; function all(checkers) { return { hasPassed: function () { return checkers.filter(function (checker) { return checker.hasErrors; }).length === 0; }, }; } exports.all = all; function filter(checkers) { return { from: function (cliOptions) { if (cli_options_parser_1.no(cliOptions).hasBeenSet()) { return checkers.filter(function (checker) { return !should(checker).beSkipped(cliOptions); }); } return checkers.filter(function (checker) { var cliOption = checker.cliOption || ''; return Boolean(cliOptions[cliOption]); }); }, }; } exports.filter = filter; function getShortSyntaxOfCliOption(cliOption) { return (cliOption || '').replace('--', '-').substring(0, 2); } exports.getShortSyntaxOfCliOption = getShortSyntaxOfCliOption; function should(checker) { return { beSkipped: function (cliOptions) { var checkerCliOption = checker.cliOption || ''; var checkerShortCliOption = checker.shortCliOption || ''; return (Boolean(cliOptions["--skip" + checkerCliOption.replace('--', '-')]) || Boolean(cliOptions["--skip" + checkerShortCliOption])); }, }; } exports.should = should;