liquibase-linter
Version:
A liquibase linter in JS
59 lines (58 loc) • 2.5 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.lint = void 0;
var fs = __importStar(require("fs"));
var startsWith_1 = __importDefault(require("lodash/startsWith"));
var configuration_1 = require("./configuration");
var rules_1 = require("./rules");
var liquibaseIgnore_1 = require("./liquibaseIgnore");
var parser_1 = require("./parser");
var reporter_1 = require("./reporter");
var guards_1 = require("./liquibase/guards");
var lint = function (fileName, configuration) {
if (configuration === void 0) { configuration = configuration_1.defaultConfiguration; }
var reporter = new reporter_1.Reporter(fileName);
var absoluteFileName = startsWith_1.default(fileName, "/") ? fileName : process.cwd() + "/" + fileName;
var fileContent = fs.readFileSync(absoluteFileName, "utf8");
var doc = parser_1.parser(fileContent);
var linterIgnore = new liquibaseIgnore_1.LinterIgnore(configuration.liquibaseLinterIgnorePath, fileName);
doc.databaseChangeLog.forEach(function (entry) {
if (!guards_1.isDatabaseChangeLog(entry)) {
return;
}
var changeSet = entry.changeSet;
if (linterIgnore.contains(changeSet)) {
return;
}
rules_1.rules.forEach(function (checkRule) {
checkRule(changeSet, reporter);
});
});
if (reporter.hasErrors() && configuration.failOnErrors) {
process.exit(1);
}
return reporter.violations;
};
exports.lint = lint;