UNPKG

cdkdx

Version:

Zero-config CLI for aws cdk development

117 lines 10.7 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; 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 __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.LinterCommand = void 0; const path = __importStar(require("path")); const clipanion_1 = require("clipanion"); const eslint_1 = require("eslint"); const ts_config_1 = require("../ts-config"); const base_command_1 = require("../base-command"); class LinterCommand extends base_command_1.BaseProjectCommand { constructor() { super(...arguments); this.fix = false; this.cache = false; this.reportUnusedDisableDirectives = false; } async execute() { const eslintTypeScriptConfigPath = path.join(this.context.cwd, 'tsconfig.eslint.json'); let include = []; if (this.projectInfo.workspaces) { this.projectInfo.workspaces.forEach((ws) => { include.push(`${ws}/src/**/*.ts`); include.push(`${ws}/src/**/*.tsx`); }); } else { include = ['src/**/*.ts', 'src/**/*.tsx']; } const tsConfig = ts_config_1.TsConfig.fromJsiiTemplate({ include, }); await tsConfig.writeJson(eslintTypeScriptConfigPath, { overwriteExisting: true, }); const eslint = new eslint_1.ESLint({ baseConfig: { extends: 'cdk', }, cwd: this.context.cwd, fix: this.fix, cache: this.cache, reportUnusedDisableDirectives: this.reportUnusedDisableDirectives ? 'off' : 'error', }); const results = await eslint.lintFiles(['*/**/*.{ts,tsx}']); if (this.fix) { await eslint_1.ESLint.outputFixes(results); } const formatter = await eslint.loadFormatter('stylish'); const resultText = await formatter.format(results); this.context.logger.log(resultText); const errorCount = results.reduce((acc, { errorCount }) => acc + errorCount, 0); return errorCount === 0 ? 0 : 1; } } LinterCommand.usage = clipanion_1.Command.Usage({ description: 'Run eslint with prettier', details: ` This command runs eslint with prettier. `, examples: [ ['Run linting', 'cdkdx lint'], ['Fixe fixable errors and warnings ', 'cdkdx lint --fix'], ], }); __decorate([ clipanion_1.Command.Boolean('--fix'), __metadata("design:type", Object) ], LinterCommand.prototype, "fix", void 0); __decorate([ clipanion_1.Command.Boolean('--cache'), __metadata("design:type", Object) ], LinterCommand.prototype, "cache", void 0); __decorate([ clipanion_1.Command.Boolean('--report-unused-disable-directives'), __metadata("design:type", Object) ], LinterCommand.prototype, "reportUnusedDisableDirectives", void 0); __decorate([ clipanion_1.Command.Path('lint'), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise) ], LinterCommand.prototype, "execute", null); exports.LinterCommand = LinterCommand; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludGVyLWNvbW1hbmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvbGludGVyLWNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IseUNBQW9DO0FBQ3BDLG1DQUFnQztBQUVoQyw0Q0FBd0M7QUFDeEMsa0RBQXFEO0FBRXJELE1BQWEsYUFBYyxTQUFRLGlDQUFrQjtJQUFyRDs7UUFhUyxRQUFHLEdBQUcsS0FBSyxDQUFDO1FBR1osVUFBSyxHQUFHLEtBQUssQ0FBQztRQUdkLGtDQUE2QixHQUFHLEtBQUssQ0FBQztJQTBEL0MsQ0FBQztJQXZEQyxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FDMUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQ2hCLHNCQUFzQixDQUN2QixDQUFDO1FBRUYsSUFBSSxPQUFPLEdBQWEsRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxPQUFPLEdBQUcsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDM0M7UUFFRCxNQUFNLFFBQVEsR0FBRyxvQkFBUSxDQUFDLGdCQUFnQixDQUFDO1lBQ3pDLE9BQU87U0FDUixDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLEVBQUU7WUFDbkQsaUJBQWlCLEVBQUUsSUFBSTtTQUN4QixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQztZQUN4QixVQUFVLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLEtBQUs7YUFDZjtZQUNELEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUc7WUFDckIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLDZCQUE2QixFQUFFLElBQUksQ0FBQyw2QkFBNkI7Z0JBQy9ELENBQUMsQ0FBQyxLQUFLO2dCQUNQLENBQUMsQ0FBQyxPQUFPO1NBQ1osQ0FBQyxDQUFDO1FBRUgsTUFBTSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBRTVELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sZUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNuQztRQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV4RCxNQUFNLFVBQVUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQy9CLENBQUMsR0FBRyxFQUFFLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxVQUFVLEVBQ3pDLENBQUMsQ0FDRixDQUFDO1FBRUYsT0FBTyxVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDOztBQTNFTSxtQkFBSyxHQUFHLG1CQUFPLENBQUMsS0FBSyxDQUFDO0lBQzNCLFdBQVcsRUFBRSwwQkFBMEI7SUFDdkMsT0FBTyxFQUFFOztTQUVKO0lBQ0wsUUFBUSxFQUFFO1FBQ1IsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDO1FBQzdCLENBQUMsbUNBQW1DLEVBQUUsa0JBQWtCLENBQUM7S0FDMUQ7Q0FDRixDQUFDLENBQUM7QUFHSDtJQURDLG1CQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQzs7MENBQ047QUFHbkI7SUFEQyxtQkFBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7OzRDQUNOO0FBR3JCO0lBREMsbUJBQU8sQ0FBQyxPQUFPLENBQUMsb0NBQW9DLENBQUM7O29FQUNUO0FBRzdDO0lBREMsbUJBQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDOzs7OzRDQXVEcEI7QUE1RUgsc0NBNkVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tICdjbGlwYW5pb24nO1xuaW1wb3J0IHsgRVNMaW50IH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgVHNDb25maWcgfSBmcm9tICcuLi90cy1jb25maWcnO1xuaW1wb3J0IHsgQmFzZVByb2plY3RDb21tYW5kIH0gZnJvbSAnLi4vYmFzZS1jb21tYW5kJztcblxuZXhwb3J0IGNsYXNzIExpbnRlckNvbW1hbmQgZXh0ZW5kcyBCYXNlUHJvamVjdENvbW1hbmQge1xuICBzdGF0aWMgdXNhZ2UgPSBDb21tYW5kLlVzYWdlKHtcbiAgICBkZXNjcmlwdGlvbjogJ1J1biBlc2xpbnQgd2l0aCBwcmV0dGllcicsXG4gICAgZGV0YWlsczogYFxuICAgICAgICAgICAgVGhpcyBjb21tYW5kIHJ1bnMgZXNsaW50IHdpdGggcHJldHRpZXIuXG4gICAgICAgIGAsXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgIFsnUnVuIGxpbnRpbmcnLCAnY2RrZHggbGludCddLFxuICAgICAgWydGaXhlIGZpeGFibGUgZXJyb3JzIGFuZCB3YXJuaW5ncyAnLCAnY2RrZHggbGludCAtLWZpeCddLFxuICAgIF0sXG4gIH0pO1xuXG4gIEBDb21tYW5kLkJvb2xlYW4oJy0tZml4JylcbiAgcHVibGljIGZpeCA9IGZhbHNlO1xuXG4gIEBDb21tYW5kLkJvb2xlYW4oJy0tY2FjaGUnKVxuICBwdWJsaWMgY2FjaGUgPSBmYWxzZTtcblxuICBAQ29tbWFuZC5Cb29sZWFuKCctLXJlcG9ydC11bnVzZWQtZGlzYWJsZS1kaXJlY3RpdmVzJylcbiAgcHVibGljIHJlcG9ydFVudXNlZERpc2FibGVEaXJlY3RpdmVzID0gZmFsc2U7XG5cbiAgQENvbW1hbmQuUGF0aCgnbGludCcpXG4gIGFzeW5jIGV4ZWN1dGUoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCBlc2xpbnRUeXBlU2NyaXB0Q29uZmlnUGF0aCA9IHBhdGguam9pbihcbiAgICAgIHRoaXMuY29udGV4dC5jd2QsXG4gICAgICAndHNjb25maWcuZXNsaW50Lmpzb24nLFxuICAgICk7XG5cbiAgICBsZXQgaW5jbHVkZTogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5wcm9qZWN0SW5mby53b3Jrc3BhY2VzKSB7XG4gICAgICB0aGlzLnByb2plY3RJbmZvLndvcmtzcGFjZXMuZm9yRWFjaCgod3MpID0+IHtcbiAgICAgICAgaW5jbHVkZS5wdXNoKGAke3dzfS9zcmMvKiovKi50c2ApO1xuICAgICAgICBpbmNsdWRlLnB1c2goYCR7d3N9L3NyYy8qKi8qLnRzeGApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluY2x1ZGUgPSBbJ3NyYy8qKi8qLnRzJywgJ3NyYy8qKi8qLnRzeCddO1xuICAgIH1cblxuICAgIGNvbnN0IHRzQ29uZmlnID0gVHNDb25maWcuZnJvbUpzaWlUZW1wbGF0ZSh7XG4gICAgICBpbmNsdWRlLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdHNDb25maWcud3JpdGVKc29uKGVzbGludFR5cGVTY3JpcHRDb25maWdQYXRoLCB7XG4gICAgICBvdmVyd3JpdGVFeGlzdGluZzogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVzbGludCA9IG5ldyBFU0xpbnQoe1xuICAgICAgYmFzZUNvbmZpZzoge1xuICAgICAgICBleHRlbmRzOiAnY2RrJyxcbiAgICAgIH0sXG4gICAgICBjd2Q6IHRoaXMuY29udGV4dC5jd2QsXG4gICAgICBmaXg6IHRoaXMuZml4LFxuICAgICAgY2FjaGU6IHRoaXMuY2FjaGUsXG4gICAgICByZXBvcnRVbnVzZWREaXNhYmxlRGlyZWN0aXZlczogdGhpcy5yZXBvcnRVbnVzZWREaXNhYmxlRGlyZWN0aXZlc1xuICAgICAgICA/ICdvZmYnXG4gICAgICAgIDogJ2Vycm9yJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBlc2xpbnQubGludEZpbGVzKFsnKi8qKi8qLnt0cyx0c3h9J10pO1xuXG4gICAgaWYgKHRoaXMuZml4KSB7XG4gICAgICBhd2FpdCBFU0xpbnQub3V0cHV0Rml4ZXMocmVzdWx0cyk7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0dGVyID0gYXdhaXQgZXNsaW50LmxvYWRGb3JtYXR0ZXIoJ3N0eWxpc2gnKTtcblxuICAgIGNvbnN0IHJlc3VsdFRleHQgPSBhd2FpdCBmb3JtYXR0ZXIuZm9ybWF0KHJlc3VsdHMpO1xuXG4gICAgdGhpcy5jb250ZXh0LmxvZ2dlci5sb2cocmVzdWx0VGV4dCk7XG5cbiAgICBjb25zdCBlcnJvckNvdW50ID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgICAoYWNjLCB7IGVycm9yQ291bnQgfSkgPT4gYWNjICsgZXJyb3JDb3VudCxcbiAgICAgIDAsXG4gICAgKTtcblxuICAgIHJldHVybiBlcnJvckNvdW50ID09PSAwID8gMCA6IDE7XG4gIH1cbn1cbiJdfQ==