@techmynder/gitlab-ci-file-lint
Version:
Validate a GitLab pipeline YAML file using the official API.
3 lines (2 loc) • 2.48 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs"),require("node-fetch"),require("chalk")):"function"==typeof define&&define.amd?define(["exports","fs","node-fetch","chalk"],t):t((e||self).gitlabCiFileLint={},e.fs,e.nodeFetch,e.chalk)}(this,function(e,t,n,r){function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,t}var a=/*#__PURE__*/i(t),s=/*#__PURE__*/o(n),f=/*#__PURE__*/o(r);function u(){return u=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},u.apply(this,arguments)}var l=function(e,t,n,r){try{return Promise.resolve(s.default(r+"/api/v4/projects/"+t+"/ci/lint",{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","Private-Token":e},body:JSON.stringify({content:a.readFileSync(n).toString()})})).then(function(e){if(200!==e.status)throw new Error('Unexpected response status code "'+e.status+'" given');return Promise.resolve(e.json()).then(function(e){return u({file:n},e)})})}catch(e){return Promise.reject(e)}},c="#ffa500",d=function(e){return e.map(function(e,t){return f.default.bold("#"+(t+1)+".")+e}).join("\n")};e.formatResult=function(e){var t=f.default.bold("Validated "+e.file+": ")+function(e){return"valid"===e.status&&e.warnings.length?f.default.bold.hex(c)("OK (with warnings)"):"invalid"===e.status||e.errors.length?f.default.bold.red("FAIL"):f.default.bold.green("OK")}(e);return e.errors.length&&(t+=f.default.red("\n\nErrors:\n")+d(e.errors)),e.warnings.length&&(t+=f.default.hex(c)("\n\nWarnings:\n")+d(e.warnings)),t},e.lintFile=l,e.run=function(){try{var e=process.env.GITLAB_LINT_TOKEN||"",t=parseInt(process.env.GITLAB_LINT_PROJECT_ID||"",10),n=process.env.GITLAB_LINT_FILE||".gitlab-ci.yml",r=process.env.GITLAB_LINT_BASE_URL||"https://gitlab.com";if(!e||isNaN(t))throw new Error("Configuration missing. Define at least the `GITLAB_LINT_TOKEN` and `GITLAB_LINT_PROJECT_ID` environment variables.");if(!a.existsSync(n))throw new Error('File "'+n+'" does not exist');return l(e,t,n,r)}catch(e){return Promise.reject(e)}}});
//# sourceMappingURL=gitlab-ci-file-lint.umd.js.map