UNPKG

tslint-to-eslint-config

Version:

Converts your TSLint configuration to the closest reasonable ESLint equivalent.

74 lines 3.59 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.runCli = void 0; const chalk_1 = __importDefault(require("chalk")); const commander_1 = require("commander"); const fs_1 = require("fs"); const os_1 = require("os"); const path_1 = __importDefault(require("path")); const reporting_1 = require("../reporting"); const types_1 = require("../types"); /** * @see `/docs/Architecture/README.md` for documentation. */ const runCli = async (dependencies, rawArgv) => { // 1. CLI options are parsed from the raw arguments into a commands object. const command = new commander_1.Command() .storeOptionsAsProperties(false) .usage("[options] <file ...> --language [language]") .option("--comments [files]", "convert tslint:disable rule flags in files (experimental)") .option("--config [config]", "eslint configuration file to output to") .option("--editor [editor]", "editor configuration file to convert") .option("--eslint [eslint]", "eslint configuration file to convert using") .option("--package [package]", "package configuration file to convert using") .option("--prettier [prettier]", "add eslint-config-prettier to the plugins list") .option("--tslint [tslint]", "tslint configuration file to convert using") .option("--typescript [typescript]", "typescript configuration file to convert using") .option("-V, --version", "output the package version"); const parsedArgv = { config: "./.eslintrc.js", // eslint-disable-next-line -- this gets deduced as the same type, for some erroneous reason ...command.parse(rawArgv).opts(), }; // 2. If the version should be printed, we do that and stop execution. if (command.opts().version) { const { version } = JSON.parse((await fs_1.promises.readFile(path_1.default.join(__dirname, "../../package.json"))).toString()); dependencies.logger.stdout.write(`${version}${os_1.EOL}`); return types_1.ResultStatus.Succeeded; } // 3. Any existing linter and TypeScript configurations are read from disk. const originalConfigurations = await dependencies.findOriginalConfigurations(parsedArgv); if (originalConfigurations.status !== types_1.ResultStatus.Succeeded) { (0, reporting_1.logErrorResult)(originalConfigurations, dependencies.logger); return originalConfigurations.status; } // 4. Each converter is run, halting execution if it fails. for (const converter of dependencies.converters) { const result = await tryConvertConfig(converter, parsedArgv, originalConfigurations.data); if (result.status !== types_1.ResultStatus.Succeeded) { (0, reporting_1.logErrorResult)(result, dependencies.logger); return result.status; } } dependencies.logger.stdout.write(chalk_1.default.greenBright(`${os_1.EOL}✅ All is well! ✅\n`)); return types_1.ResultStatus.Succeeded; }; exports.runCli = runCli; const tryConvertConfig = async (converter, argv, originalConfigurations) => { const ruleEquivalents = new Map(); let result; try { result = await converter(argv, originalConfigurations, ruleEquivalents); } catch (error) { result = { errors: [error], status: types_1.ResultStatus.Failed, }; } return result; }; //# sourceMappingURL=runCli.js.map