release-checker
Version:
Check your release before publishing
151 lines (150 loc) • 4.87 kB
JavaScript
;
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;