Restructure cli files (#11974)
This commit is contained in:
1 parent
db0604eddd
commit
326f23cd35
16 files changed
+178
-161
No files matched your search
+13
-2
@@ -191,12 +191,23 @@ module.exports = {
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ["src/cli/**/*.js"],
|
||||
files: ["src/cli/*.js"],
|
||||
rules: {
|
||||
"no-restricted-modules": [
|
||||
"error",
|
||||
{
|
||||
patterns: [".."],
|
||||
patterns: ["../"],
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ["src/cli/*/*.js"],
|
||||
rules: {
|
||||
"no-restricted-modules": [
|
||||
"error",
|
||||
{
|
||||
patterns: ["../../"],
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
+5
-72
@@ -1,20 +1,10 @@
|
||||
"use strict";
|
||||
const pick = require("lodash/pick");
|
||||
|
||||
// eslint-disable-next-line no-restricted-modules
|
||||
const prettier = require("../index.js");
|
||||
const getContextOptions = require("./options/get-context-options.js");
|
||||
const {
|
||||
optionsModule,
|
||||
optionsNormalizer: { normalizeCliOptions },
|
||||
utils: { arrayify },
|
||||
} = require("./prettier-internal.js");
|
||||
const minimist = require("./minimist.js");
|
||||
const constant = require("./constant.js");
|
||||
const {
|
||||
createDetailedOptionMap,
|
||||
normalizeDetailedOptionMap,
|
||||
} = require("./option-map.js");
|
||||
const createMinimistOptions = require("./create-minimist-options.js");
|
||||
parseArgv,
|
||||
parseArgvWithoutPlugins,
|
||||
} = require("./options/parse-cli-arguments.js");
|
||||
|
||||
/**
|
||||
* @typedef {Object} Context
|
||||
@@ -74,61 +64,4 @@ class Context {
|
||||
}
|
||||
}
|
||||
|
||||
function getContextOptions(plugins, pluginSearchDirs) {
|
||||
const { options: supportOptions, languages } = prettier.getSupportInfo({
|
||||
showDeprecated: true,
|
||||
showUnreleased: true,
|
||||
showInternal: true,
|
||||
plugins,
|
||||
pluginSearchDirs,
|
||||
});
|
||||
const detailedOptionMap = normalizeDetailedOptionMap({
|
||||
...createDetailedOptionMap(supportOptions),
|
||||
...constant.options,
|
||||
});
|
||||
|
||||
const detailedOptions = arrayify(detailedOptionMap, "name");
|
||||
|
||||
const apiDefaultOptions = {
|
||||
...optionsModule.hiddenDefaults,
|
||||
...Object.fromEntries(
|
||||
supportOptions
|
||||
.filter(({ deprecated }) => !deprecated)
|
||||
.map((option) => [option.name, option.default])
|
||||
),
|
||||
};
|
||||
|
||||
return {
|
||||
supportOptions,
|
||||
detailedOptions,
|
||||
detailedOptionMap,
|
||||
apiDefaultOptions,
|
||||
languages,
|
||||
};
|
||||
}
|
||||
|
||||
function parseArgv(rawArguments, detailedOptions, logger, keys) {
|
||||
const minimistOptions = createMinimistOptions(detailedOptions);
|
||||
let argv = minimist(rawArguments, minimistOptions);
|
||||
|
||||
if (keys) {
|
||||
detailedOptions = detailedOptions.filter((option) =>
|
||||
keys.includes(option.name)
|
||||
);
|
||||
argv = pick(argv, keys);
|
||||
}
|
||||
|
||||
return normalizeCliOptions(argv, detailedOptions, { logger });
|
||||
}
|
||||
|
||||
const detailedOptionsWithoutPlugins = getContextOptions().detailedOptions;
|
||||
function parseArgvWithoutPlugins(rawArguments, logger, keys) {
|
||||
return parseArgv(
|
||||
rawArguments,
|
||||
detailedOptionsWithoutPlugins,
|
||||
logger,
|
||||
typeof keys === "string" ? [keys] : keys
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = { Context, parseArgvWithoutPlugins };
|
||||
module.exports = Context;
|
||||
@@ -1,59 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
const path = require("path");
|
||||
|
||||
const stringify = require("fast-json-stable-stringify");
|
||||
|
||||
// eslint-disable-next-line no-restricted-modules
|
||||
const prettier = require("../index.js");
|
||||
|
||||
const { format, formatStdin, formatFiles } = require("./format.js");
|
||||
const { Context, parseArgvWithoutPlugins } = require("./context.js");
|
||||
const {
|
||||
normalizeDetailedOptionMap,
|
||||
createDetailedOptionMap,
|
||||
} = require("./option-map.js");
|
||||
const { createDetailedUsage, createUsage } = require("./usage.js");
|
||||
const { createLogger } = require("./logger.js");
|
||||
|
||||
async function logResolvedConfigPathOrDie(context) {
|
||||
const file = context.argv["find-config-path"];
|
||||
const configFile = await prettier.resolveConfigFile(file);
|
||||
if (configFile) {
|
||||
context.logger.log(path.relative(process.cwd(), configFile));
|
||||
} else {
|
||||
throw new Error(`Can not find configure file for "${file}"`);
|
||||
}
|
||||
}
|
||||
|
||||
async function logFileInfoOrDie(context) {
|
||||
const options = {
|
||||
ignorePath: context.argv["ignore-path"],
|
||||
withNodeModules: context.argv["with-node-modules"],
|
||||
plugins: context.argv.plugin,
|
||||
pluginSearchDirs: context.argv["plugin-search-dir"],
|
||||
resolveConfig: context.argv.config !== false,
|
||||
};
|
||||
|
||||
context.logger.log(
|
||||
prettier.format(
|
||||
stringify(await prettier.getFileInfo(context.argv["file-info"], options)),
|
||||
{ parser: "json" }
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
Context,
|
||||
createDetailedOptionMap,
|
||||
createDetailedUsage,
|
||||
createUsage,
|
||||
format,
|
||||
formatFiles,
|
||||
formatStdin,
|
||||
logResolvedConfigPathOrDie,
|
||||
logFileInfoOrDie,
|
||||
normalizeDetailedOptionMap,
|
||||
parseArgvWithoutPlugins,
|
||||
createLogger,
|
||||
};
|
||||
@@ -0,0 +1,24 @@
|
||||
"use strict";
|
||||
|
||||
const stringify = require("fast-json-stable-stringify");
|
||||
// eslint-disable-next-line no-restricted-modules
|
||||
const prettier = require("../index.js");
|
||||
|
||||
async function logFileInfoOrDie(context) {
|
||||
const options = {
|
||||
ignorePath: context.argv["ignore-path"],
|
||||
withNodeModules: context.argv["with-node-modules"],
|
||||
plugins: context.argv.plugin,
|
||||
pluginSearchDirs: context.argv["plugin-search-dir"],
|
||||
resolveConfig: context.argv.config !== false,
|
||||
};
|
||||
|
||||
context.logger.log(
|
||||
prettier.format(
|
||||
stringify(await prettier.getFileInfo(context.argv["file-info"], options)),
|
||||
{ parser: "json" }
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = logFileInfoOrDie;
|
||||
@@ -0,0 +1,18 @@
|
||||
"use strict";
|
||||
|
||||
const path = require("path");
|
||||
|
||||
// eslint-disable-next-line no-restricted-modules
|
||||
const prettier = require("../index.js");
|
||||
|
||||
async function logResolvedConfigPathOrDie(context) {
|
||||
const file = context.argv["find-config-path"];
|
||||
const configFile = await prettier.resolveConfigFile(file);
|
||||
if (configFile) {
|
||||
context.logger.log(path.relative(process.cwd(), configFile));
|
||||
} else {
|
||||
throw new Error(`Can not find configure file for "${file}"`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = logResolvedConfigPathOrDie;
|
||||
+2
-2
@@ -12,7 +12,7 @@ const { getStdin } = require("../common/third-party.js");
|
||||
|
||||
const { createIgnorer, errors } = require("./prettier-internal.js");
|
||||
const { expandPatterns, fixWindowsSlashes } = require("./expand-patterns.js");
|
||||
const { getOptionsForFile } = require("./option.js");
|
||||
const getOptionsForFile = require("./options/get-options-for-file.js");
|
||||
const isTTY = require("./is-tty.js");
|
||||
|
||||
function diff(a, b) {
|
||||
@@ -439,4 +439,4 @@ async function formatFiles(context) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { format, formatStdin, formatFiles };
|
||||
module.exports = { formatStdin, formatFiles };
|
||||
+18
-12
@@ -8,20 +8,26 @@ require("please-upgrade-node")(packageJson);
|
||||
const stringify = require("fast-json-stable-stringify");
|
||||
// eslint-disable-next-line no-restricted-modules
|
||||
const prettier = require("../index.js");
|
||||
const core = require("./core.js");
|
||||
const createLogger = require("./logger.js");
|
||||
const Context = require("./context.js");
|
||||
const { parseArgvWithoutPlugins } = require("./options/parse-cli-arguments.js");
|
||||
const { createDetailedUsage, createUsage } = require("./usage.js");
|
||||
const { formatStdin, formatFiles } = require("./format.js");
|
||||
const logFileInfoOrDie = require("./file-info.js");
|
||||
const logResolvedConfigPathOrDie = require("./find-config-path.js");
|
||||
|
||||
async function run(rawArguments) {
|
||||
// Create a default level logger, so we can log errors during `logLevel` parsing
|
||||
let logger = core.createLogger();
|
||||
let logger = createLogger();
|
||||
|
||||
try {
|
||||
const logLevel = core.parseArgvWithoutPlugins(
|
||||
const logLevel = parseArgvWithoutPlugins(
|
||||
rawArguments,
|
||||
logger,
|
||||
"loglevel"
|
||||
).loglevel;
|
||||
if (logLevel !== logger.logLevel) {
|
||||
logger = core.createLogger(logLevel);
|
||||
logger = createLogger(logLevel);
|
||||
}
|
||||
|
||||
await main(rawArguments, logger);
|
||||
@@ -32,7 +38,7 @@ async function run(rawArguments) {
|
||||
}
|
||||
|
||||
async function main(rawArguments, logger) {
|
||||
const context = new core.Context({ rawArguments, logger });
|
||||
const context = new Context({ rawArguments, logger });
|
||||
|
||||
logger.debug(`normalized argv: ${JSON.stringify(context.argv)}`);
|
||||
|
||||
@@ -60,8 +66,8 @@ async function main(rawArguments, logger) {
|
||||
if (context.argv.help !== undefined) {
|
||||
logger.log(
|
||||
typeof context.argv.help === "string" && context.argv.help !== ""
|
||||
? core.createDetailedUsage(context, context.argv.help)
|
||||
: core.createUsage(context)
|
||||
? createDetailedUsage(context, context.argv.help)
|
||||
: createUsage(context)
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -81,15 +87,15 @@ async function main(rawArguments, logger) {
|
||||
(!process.stdin.isTTY || context.argv["stdin-filepath"]);
|
||||
|
||||
if (context.argv["find-config-path"]) {
|
||||
await core.logResolvedConfigPathOrDie(context);
|
||||
await logResolvedConfigPathOrDie(context);
|
||||
} else if (context.argv["file-info"]) {
|
||||
await core.logFileInfoOrDie(context);
|
||||
await logFileInfoOrDie(context);
|
||||
} else if (useStdin) {
|
||||
await core.formatStdin(context);
|
||||
await formatStdin(context);
|
||||
} else if (hasFilePatterns) {
|
||||
await core.formatFiles(context);
|
||||
await formatFiles(context);
|
||||
} else {
|
||||
logger.log(core.createUsage(context));
|
||||
logger.log(createUsage(context));
|
||||
process.exitCode = 1;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -87,4 +87,4 @@ function createLogger(logLevel = "log") {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { createLogger };
|
||||
module.exports = createLogger;
|
||||
File renamed without changes.
@@ -0,0 +1,47 @@
|
||||
"use strict";
|
||||
// eslint-disable-next-line no-restricted-modules
|
||||
const prettier = require("../../index.js");
|
||||
const {
|
||||
optionsModule,
|
||||
utils: { arrayify },
|
||||
} = require("../prettier-internal.js");
|
||||
const constant = require("../constant.js");
|
||||
const {
|
||||
normalizeDetailedOptionMap,
|
||||
createDetailedOptionMap,
|
||||
} = require("./option-map.js");
|
||||
|
||||
function getContextOptions(plugins, pluginSearchDirs) {
|
||||
const { options: supportOptions, languages } = prettier.getSupportInfo({
|
||||
showDeprecated: true,
|
||||
showUnreleased: true,
|
||||
showInternal: true,
|
||||
plugins,
|
||||
pluginSearchDirs,
|
||||
});
|
||||
const detailedOptionMap = normalizeDetailedOptionMap({
|
||||
...createDetailedOptionMap(supportOptions),
|
||||
...constant.options,
|
||||
});
|
||||
|
||||
const detailedOptions = arrayify(detailedOptionMap, "name");
|
||||
|
||||
const apiDefaultOptions = {
|
||||
...optionsModule.hiddenDefaults,
|
||||
...Object.fromEntries(
|
||||
supportOptions
|
||||
.filter(({ deprecated }) => !deprecated)
|
||||
.map((option) => [option.name, option.default])
|
||||
),
|
||||
};
|
||||
|
||||
return {
|
||||
supportOptions,
|
||||
detailedOptions,
|
||||
detailedOptionMap,
|
||||
apiDefaultOptions,
|
||||
languages,
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = getContextOptions;
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
const dashify = require("dashify");
|
||||
// eslint-disable-next-line no-restricted-modules
|
||||
const prettier = require("../index.js");
|
||||
const prettier = require("../../index.js");
|
||||
const { optionsNormalizer } = require("../prettier-internal.js");
|
||||
const minimist = require("./minimist.js");
|
||||
const { optionsNormalizer } = require("./prettier-internal.js");
|
||||
const createMinimistOptions = require("./create-minimist-options.js");
|
||||
|
||||
function getOptions(argv, detailedOptions) {
|
||||
@@ -135,7 +135,4 @@ async function getOptionsForFile(context, filepath) {
|
||||
return appliedOptions;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getOptionsForFile,
|
||||
createMinimistOptions,
|
||||
};
|
||||
module.exports = getOptionsForFile;
|
||||
File renamed without changes.
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
const dashify = require("dashify");
|
||||
const { coreOptions } = require("./prettier-internal.js");
|
||||
const { coreOptions } = require("../prettier-internal.js");
|
||||
|
||||
function normalizeDetailedOption(name, option) {
|
||||
return {
|
||||
@@ -0,0 +1,34 @@
|
||||
"use strict";
|
||||
const pick = require("lodash/pick");
|
||||
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");
|
||||
|
||||
function parseArgv(rawArguments, detailedOptions, logger, keys) {
|
||||
const minimistOptions = createMinimistOptions(detailedOptions);
|
||||
let argv = minimist(rawArguments, minimistOptions);
|
||||
|
||||
if (keys) {
|
||||
detailedOptions = detailedOptions.filter((option) =>
|
||||
keys.includes(option.name)
|
||||
);
|
||||
argv = pick(argv, keys);
|
||||
}
|
||||
|
||||
return normalizeCliOptions(argv, detailedOptions, { logger });
|
||||
}
|
||||
|
||||
const detailedOptionsWithoutPlugins = getContextOptions().detailedOptions;
|
||||
function parseArgvWithoutPlugins(rawArguments, logger, keys) {
|
||||
return parseArgv(
|
||||
rawArguments,
|
||||
detailedOptionsWithoutPlugins,
|
||||
logger,
|
||||
typeof keys === "string" ? [keys] : keys
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = { parseArgv, parseArgvWithoutPlugins };
|
||||
@@ -3,19 +3,22 @@
|
||||
const prettier = require("prettier-local");
|
||||
const runPrettier = require("../runPrettier.js");
|
||||
const constant = require("../../../src/cli/constant.js");
|
||||
const core = require("../../../src/cli/core.js");
|
||||
const {
|
||||
createDetailedOptionMap,
|
||||
normalizeDetailedOptionMap,
|
||||
} = require("../../../src/cli/options/option-map.js");
|
||||
const arrayify = require("../../../src/utils/arrayify.js");
|
||||
|
||||
for (const option of arrayify(
|
||||
{
|
||||
...core.createDetailedOptionMap(
|
||||
...createDetailedOptionMap(
|
||||
prettier.getSupportInfo({
|
||||
showDeprecated: true,
|
||||
showUnreleased: true,
|
||||
showInternal: true,
|
||||
}).options
|
||||
),
|
||||
...core.normalizeDetailedOptionMap(constant.options),
|
||||
...normalizeDetailedOptionMap(constant.options),
|
||||
},
|
||||
"name"
|
||||
)) {
|
||||
|
||||
+6
-3
@@ -24,11 +24,14 @@
|
||||
"src/main/options.js",
|
||||
"src/cli/index.js",
|
||||
"src/cli/expand-patterns.js",
|
||||
"src/cli/core.js",
|
||||
"src/cli/file-info.js",
|
||||
"src/cli/find-config-path.js",
|
||||
"src/cli/context.js",
|
||||
"src/cli/format.js",
|
||||
"src/cli/option-map.js",
|
||||
"src/cli/option.js",
|
||||
"src/cli/options/get-context-options.js",
|
||||
"src/cli/options/get-options-for-file.js",
|
||||
"src/cli/options/option-map.js",
|
||||
"src/cli/options/parse-cli-arguments.js",
|
||||
"src/cli/usage.js",
|
||||
"src/cli/constant.js",
|
||||
"src/cli/prettier-internal.js",
|
||||
|
||||
Reference in new issue
Block a user