@procore/core-scripts
Version: 
A CLI to enhance your development experience
72 lines • 2.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = require("@oclif/command");
const core_1 = require("@oclif/core");
const eslint_1 = require("eslint");
const BaseCommand_1 = require("../../BaseCommand");
const config_1 = require("../../eslint/config");
class LintEslintCommand extends BaseCommand_1.BaseCommand {
    async run() {
        // eslint-disable-next-line no-shadow
        const { flags, args } = this.parse(LintEslintCommand);
        const baseEslintConfig = (0, config_1.createEslintConfig)();
        const eslintConfig = this.workspace.procoreConfig.eslintOverride
            ? this.workspace.procoreConfig.eslintOverride(baseEslintConfig)
            : baseEslintConfig;
        let inputs;
        if (args.input) {
            inputs = [...args.input.split(',')];
        }
        else {
            inputs = ['src'];
        }
        this.workspace.writeFileSync('.eslintrc.json', JSON.stringify(eslintConfig, null, 2));
        this.workspace.writeFileSync('prettier.config.js', "module.exports = require('@procore/core-scripts/configs/prettier.config');\n");
        const cli = new eslint_1.ESLint({
            baseConfig: eslintConfig,
            cwd: this.workspace.context,
            extensions: ['.ts', '.tsx', '.js', '.jsx'],
            fix: flags.fix,
            fixTypes: flags.fixTypes,
            useEslintrc: false,
        });
        // TODO: Remove this casting as CLIEngine.Options once @types/eslint includes
        // "fixTypes" in the definition for CLIEngine.Options
        core_1.CliUx.ux.action.start('Linting');
        const report = await cli.lintFiles(inputs);
        core_1.CliUx.ux.action.stop();
        if (flags.fix) {
            eslint_1.ESLint.outputFixes(report);
        }
        const formatter = await cli.loadFormatter();
        this.log(await formatter.format(report));
        const errorCount = report.reduce((acc, result) => {
            return acc + result.errorCount;
        }, 0);
        if (errorCount > 0) {
            this.exit(1);
        }
    }
}
LintEslintCommand.description = 'Runs the ESLint linter.';
LintEslintCommand.args = [
    {
        name: 'input',
        required: false,
        description: 'Comma-delimited list of file and/or folder paths that the linter will run against.',
    },
];
LintEslintCommand.flags = {
    fix: command_1.flags.boolean({
        default: false,
        description: 'Automatically fix problems.',
    }),
    fixTypes: command_1.flags.string({
        default: undefined,
        description: 'The types of lint errors/warnings to fix.',
        multiple: true,
        options: ['layout', 'problem', 'suggestion'],
    }),
};
exports.default = LintEslintCommand;
//# sourceMappingURL=eslint.js.map