prettier/src/cli/index.js

83 lines
2.3 KiB
JavaScript

"use strict";
const prettier = require("../../index");
const stringify = require("json-stable-stringify");
const util = require("./util");
function run(args) {
const context = util.createContext(args);
try {
util.initContext(context);
context.logger.debug(`normalized argv: ${JSON.stringify(context.argv)}`);
if (context.argv["check"] && context.argv["list-different"]) {
context.logger.error("Cannot use --check and --list-different together.");
process.exit(1);
}
if (context.argv["write"] && context.argv["debug-check"]) {
context.logger.error("Cannot use --write and --debug-check together.");
process.exit(1);
}
if (context.argv["find-config-path"] && context.filePatterns.length) {
context.logger.error("Cannot use --find-config-path with multiple files");
process.exit(1);
}
if (context.argv["file-info"] && context.filePatterns.length) {
context.logger.error("Cannot use --file-info with multiple files");
process.exit(1);
}
if (context.argv["version"]) {
context.logger.log(prettier.version);
process.exit(0);
}
if (context.argv["help"] !== undefined) {
context.logger.log(
typeof context.argv["help"] === "string" && context.argv["help"] !== ""
? util.createDetailedUsage(context, context.argv["help"])
: util.createUsage(context)
);
process.exit(0);
}
if (context.argv["support-info"]) {
context.logger.log(
prettier.format(stringify(prettier.getSupportInfo()), {
parser: "json"
})
);
process.exit(0);
}
const hasFilePatterns = context.filePatterns.length !== 0;
const useStdin =
context.argv["stdin"] || (!hasFilePatterns && !process.stdin.isTTY);
if (context.argv["find-config-path"]) {
util.logResolvedConfigPathOrDie(context);
} else if (context.argv["file-info"]) {
util.logFileInfoOrDie(context);
} else if (useStdin) {
util.formatStdin(context);
} else if (hasFilePatterns) {
util.formatFiles(context);
} else {
context.logger.log(util.createUsage(context));
process.exit(1);
}
} catch (error) {
context.logger.error(error.message);
process.exit(1);
}
}
module.exports = {
run
};