UNPKG

lint-gitlab-ci

Version:

GitLab-ci script to lint .gitlab-ci.yml files.

56 lines (55 loc) 7.54 kB
#!/usr/bin/env node "use strict"; // 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=