lint-gitlab-ci
Version:
GitLab-ci script to lint .gitlab-ci.yml files.
56 lines (55 loc) • 7.54 kB
JavaScript
;
// https://itnext.io/how-to-create-your-own-typescript-cli-with-node-js-1faf7095ef89
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const commander_1 = require("commander");
const _1 = __importDefault(require("."));
const defaultOptions_1 = __importDefault(require("./defaultOptions"));
const figlet_1 = __importDefault(require("figlet"));
const chalk_1 = __importDefault(require("chalk"));
var pjson = require("../package.json");
const programHexColor = "#F80";
const program = new commander_1.Command();
program
.version(pjson.version, "-v, --version", "Output the current version")
.name(pjson.name)
.description(`${chalk_1.default.hex(programHexColor)(figlet_1.default.textSync(pjson.name, { horizontalLayout: "full" }))}
A module that lints a .gitlab-ci.yml file, using the GitLab api.
`)
.usage("[options] <file>")
.option("-u, --url <url>", "Specify the GitLab api URL", defaultOptions_1.default.api.baseUrl)
.option("-a, --api-version <api-version>", "Specify the GitLab api version", defaultOptions_1.default.api.version)
.option("-p, --ci-lint-path <ci-lint-path>", "Specify the GitLab api ci linting path", defaultOptions_1.default.api.paths.lintCiYml)
.helpOption("-h, --help", "Display help information")
.parse(process.argv);
program.parse(process.argv);
const options = {
filePath: program.args[0] || defaultOptions_1.default.filePath,
api: {
baseUrl: program.url,
version: program.apiVersion,
paths: {
lintCiYml: program.ciLintPath,
},
},
};
_1.default(options)
.then((result) => {
console.log(chalk_1.default.hex(programHexColor)(`${pjson.name}:`));
if (result.isValid) {
console.log(chalk_1.default.green("No gitlab ci lint errors"));
process.exit(0);
}
else {
result.errors.forEach((error) => console.error(chalk_1.default.red(error)));
process.exit(1);
}
})
.catch((err) => {
console.error(chalk_1.default.red(err.message));
process.exit(1);
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLG9GQUFvRjs7Ozs7QUFFcEYseUNBQW9DO0FBQ3BDLHlDQUF1RDtBQUN2RCxzRUFBOEM7QUFDOUMsb0RBQTRCO0FBQzVCLGtEQUEwQjtBQUUxQixJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUN2QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFFL0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBTyxFQUFFLENBQUM7QUFFOUIsT0FBTztLQUNGLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSw0QkFBNEIsQ0FBQztLQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztLQUNoQixXQUFXLENBQ1IsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDLGdCQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDOzs7S0FHM0YsQ0FDQTtLQUNBLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztLQUN6QixNQUFNLENBQUMsaUJBQWlCLEVBQUUsNEJBQTRCLEVBQUUsd0JBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO0tBQ25GLE1BQU0sQ0FDSCxpQ0FBaUMsRUFDakMsZ0NBQWdDLEVBQ2hDLHdCQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FDN0I7S0FDQSxNQUFNLENBQ0gsbUNBQW1DLEVBQ25DLHdDQUF3QyxFQUN4Qyx3QkFBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUNyQztLQUNBLFVBQVUsQ0FBQyxZQUFZLEVBQUUsMEJBQTBCLENBQUM7S0FDcEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUV6QixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUU1QixNQUFNLE9BQU8sR0FBeUI7SUFDbEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksd0JBQWMsQ0FBQyxRQUFRO0lBQ3BELEdBQUcsRUFBRTtRQUNELE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRztRQUNwQixPQUFPLEVBQUUsT0FBTyxDQUFDLFVBQVU7UUFDM0IsS0FBSyxFQUFFO1lBQ0gsU0FBUyxFQUFFLE9BQU8sQ0FBQyxVQUFVO1NBQ2hDO0tBQ0o7Q0FDSixDQUFDO0FBRUYsVUFBWSxDQUFDLE9BQU8sQ0FBQztLQUNoQixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtJQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFMUQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBSyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNuQjtTQUFNO1FBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNuQjtBQUNMLENBQUMsQ0FBQztLQUNELEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbi8vIGh0dHBzOi8vaXRuZXh0LmlvL2hvdy10by1jcmVhdGUteW91ci1vd24tdHlwZXNjcmlwdC1jbGktd2l0aC1ub2RlLWpzLTFmYWY3MDk1ZWY4OVxuXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IGxpbnRHaXRsYWJDaSwgeyBJTGludEdpdGxhYkNpT3B0aW9ucyB9IGZyb20gXCIuXCI7XG5pbXBvcnQgZGVmYXVsdE9wdGlvbnMgZnJvbSBcIi4vZGVmYXVsdE9wdGlvbnNcIjtcbmltcG9ydCBmaWdsZXQgZnJvbSBcImZpZ2xldFwiO1xuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuXG52YXIgcGpzb24gPSByZXF1aXJlKFwiLi4vcGFja2FnZS5qc29uXCIpO1xuY29uc3QgcHJvZ3JhbUhleENvbG9yID0gXCIjRjgwXCI7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG4gICAgLnZlcnNpb24ocGpzb24udmVyc2lvbiwgXCItdiwgLS12ZXJzaW9uXCIsIFwiT3V0cHV0IHRoZSBjdXJyZW50IHZlcnNpb25cIilcbiAgICAubmFtZShwanNvbi5uYW1lKVxuICAgIC5kZXNjcmlwdGlvbihcbiAgICAgICAgYCR7Y2hhbGsuaGV4KHByb2dyYW1IZXhDb2xvcikoZmlnbGV0LnRleHRTeW5jKHBqc29uLm5hbWUsIHsgaG9yaXpvbnRhbExheW91dDogXCJmdWxsXCIgfSkpfVxuXG5BIG1vZHVsZSB0aGF0IGxpbnRzIGEgLmdpdGxhYi1jaS55bWwgZmlsZSwgdXNpbmcgdGhlIEdpdExhYiBhcGkuXG4gICAgYFxuICAgIClcbiAgICAudXNhZ2UoXCJbb3B0aW9uc10gPGZpbGU+XCIpXG4gICAgLm9wdGlvbihcIi11LCAtLXVybCA8dXJsPlwiLCBcIlNwZWNpZnkgdGhlIEdpdExhYiBhcGkgVVJMXCIsIGRlZmF1bHRPcHRpb25zLmFwaS5iYXNlVXJsKVxuICAgIC5vcHRpb24oXG4gICAgICAgIFwiLWEsIC0tYXBpLXZlcnNpb24gPGFwaS12ZXJzaW9uPlwiLFxuICAgICAgICBcIlNwZWNpZnkgdGhlIEdpdExhYiBhcGkgdmVyc2lvblwiLFxuICAgICAgICBkZWZhdWx0T3B0aW9ucy5hcGkudmVyc2lvblxuICAgIClcbiAgICAub3B0aW9uKFxuICAgICAgICBcIi1wLCAtLWNpLWxpbnQtcGF0aCA8Y2ktbGludC1wYXRoPlwiLFxuICAgICAgICBcIlNwZWNpZnkgdGhlIEdpdExhYiBhcGkgY2kgbGludGluZyBwYXRoXCIsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zLmFwaS5wYXRocy5saW50Q2lZbWxcbiAgICApXG4gICAgLmhlbHBPcHRpb24oXCItaCwgLS1oZWxwXCIsIFwiRGlzcGxheSBoZWxwIGluZm9ybWF0aW9uXCIpXG4gICAgLnBhcnNlKHByb2Nlc3MuYXJndik7XG5cbnByb2dyYW0ucGFyc2UocHJvY2Vzcy5hcmd2KTtcblxuY29uc3Qgb3B0aW9uczogSUxpbnRHaXRsYWJDaU9wdGlvbnMgPSB7XG4gICAgZmlsZVBhdGg6IHByb2dyYW0uYXJnc1swXSB8fCBkZWZhdWx0T3B0aW9ucy5maWxlUGF0aCxcbiAgICBhcGk6IHtcbiAgICAgICAgYmFzZVVybDogcHJvZ3JhbS51cmwsXG4gICAgICAgIHZlcnNpb246IHByb2dyYW0uYXBpVmVyc2lvbixcbiAgICAgICAgcGF0aHM6IHtcbiAgICAgICAgICAgIGxpbnRDaVltbDogcHJvZ3JhbS5jaUxpbnRQYXRoLFxuICAgICAgICB9LFxuICAgIH0sXG59O1xuXG5saW50R2l0bGFiQ2kob3B0aW9ucylcbiAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmhleChwcm9ncmFtSGV4Q29sb3IpKGAke3Bqc29uLm5hbWV9OmApKTtcblxuICAgICAgICBpZiAocmVzdWx0LmlzVmFsaWQpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKFwiTm8gZ2l0bGFiIGNpIGxpbnQgZXJyb3JzXCIpKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5lcnJvcnMuZm9yRWFjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoY2hhbGsucmVkKGVycm9yKSkpO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGNoYWxrLnJlZChlcnIubWVzc2FnZSkpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfSk7XG4iXX0=