From 1fdaeae258f8279af454a29adbe4ea64bb4b5f2e Mon Sep 17 00:00:00 2001 From: fisker Cheung Date: Sat, 2 Apr 2022 19:01:07 +0800 Subject: [PATCH] Refactor: Add a wrapped `normalizeCliOptions` version for CLI usage (#12573) --- src/cli/options/get-options-for-file.js | 8 +++----- src/cli/options/normalize-cli-options.js | 16 ++++++++++++++++ src/cli/options/parse-cli-arguments.js | 13 ++----------- tsconfig.json | 1 + 4 files changed, 22 insertions(+), 16 deletions(-) create mode 100644 src/cli/options/normalize-cli-options.js diff --git a/src/cli/options/get-options-for-file.js b/src/cli/options/get-options-for-file.js index 93778c46a0f2..3a031b462f0a 100644 --- a/src/cli/options/get-options-for-file.js +++ b/src/cli/options/get-options-for-file.js @@ -1,14 +1,12 @@ "use strict"; const dashify = require("dashify"); -const leven = require("leven"); -// eslint-disable-next-line no-restricted-modules -const { default: chalk } = require("../../../vendors/chalk.js"); // eslint-disable-next-line no-restricted-modules const prettier = require("../../index.js"); const { optionsNormalizer } = require("../prettier-internal.js"); const minimist = require("./minimist.js"); const createMinimistOptions = require("./create-minimist-options.js"); +const normalizeCliOptions = require("./normalize-cli-options.js"); function getOptions(argv, detailedOptions) { return Object.fromEntries( @@ -45,14 +43,14 @@ function parseArgsToOptions(context, overrideDefaults) { context.detailedOptions ); return getOptions( - optionsNormalizer.normalizeCliOptions( + normalizeCliOptions( minimist(context.rawArguments, { string: minimistOptions.string, boolean: minimistOptions.boolean, default: cliifyOptions(overrideDefaults, apiDetailedOptionMap), }), context.detailedOptions, - { logger: false, colorsModule: chalk, levenshteinDistance: leven } + { logger: false } ), context.detailedOptions ); diff --git a/src/cli/options/normalize-cli-options.js b/src/cli/options/normalize-cli-options.js new file mode 100644 index 000000000000..6e063f69ee08 --- /dev/null +++ b/src/cli/options/normalize-cli-options.js @@ -0,0 +1,16 @@ +"use strict"; + +const leven = require("leven"); +const { optionsNormalizer } = require("../prettier-internal.js"); +// eslint-disable-next-line no-restricted-modules +const { default: chalk } = require("../../../vendors/chalk.js"); + +function normalizeCliOptions(options, optionInfos, opts) { + return optionsNormalizer.normalizeCliOptions(options, optionInfos, { + colorsModule: chalk, + levenshteinDistance: leven, + ...opts, + }); +} + +module.exports = normalizeCliOptions; diff --git a/src/cli/options/parse-cli-arguments.js b/src/cli/options/parse-cli-arguments.js index cd6db20d279d..66433266e461 100644 --- a/src/cli/options/parse-cli-arguments.js +++ b/src/cli/options/parse-cli-arguments.js @@ -1,15 +1,10 @@ "use strict"; const pick = require("lodash/pick"); const camelCase = require("camelcase"); -const leven = require("leven"); -// eslint-disable-next-line no-restricted-modules -const { default: chalk } = require("../../../vendors/chalk.js"); -const { - optionsNormalizer: { normalizeCliOptions }, -} = require("../prettier-internal.js"); const getContextOptions = require("./get-context-options.js"); const minimist = require("./minimist.js"); const createMinimistOptions = require("./create-minimist-options.js"); +const normalizeCliOptions = require("./normalize-cli-options.js"); function parseArgv(rawArguments, detailedOptions, logger, keys) { const minimistOptions = createMinimistOptions(detailedOptions); @@ -26,11 +21,7 @@ function parseArgv(rawArguments, detailedOptions, logger, keys) { argv = pick(argv, keys); } - const normalized = normalizeCliOptions(argv, detailedOptions, { - logger, - colorsModule: chalk, - levenshteinDistance: leven, - }); + const normalized = normalizeCliOptions(argv, detailedOptions, { logger }); return { ...Object.fromEntries( diff --git a/tsconfig.json b/tsconfig.json index f81038f5a070..d2fab7aa00c8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -33,6 +33,7 @@ "src/cli/options/get-options-for-file.js", "src/cli/options/option-map.js", "src/cli/options/parse-cli-arguments.js", + "src/cli/options/normalize-cli-options.js", "src/cli/usage.js", "src/cli/constant.js", "src/cli/prettier-internal.js",