cdkdx
Version:
Zero-config CLI for aws cdk development
117 lines • 10.7 kB
JavaScript
;
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==