2022-04-03 00:04:45 +08:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
2024-11-24 18:08:39 +08:00
|
|
|
var nodeModule = require("module");
|
|
|
|
|
|
|
|
|
|
if (typeof nodeModule.enableCompileCache === "function") {
|
|
|
|
|
nodeModule.enableCompileCache();
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-24 08:51:20 +08:00
|
|
|
function parseVersion(version) {
|
2026-08-13 07:35:02 +08:00
|
|
|
var parts = version.split("-", 1)[0].split(".", 3);
|
2026-07-24 08:51:20 +08:00
|
|
|
return {
|
|
|
|
|
major: Number(parts[0]),
|
|
|
|
|
minor: Number(parts[1]) || 0,
|
|
|
|
|
patch: Number(parts[2]) || 0
|
|
|
|
|
};
|
|
|
|
|
}
|
2022-04-03 00:04:45 +08:00
|
|
|
|
2026-07-24 08:51:20 +08:00
|
|
|
function isVersionSatisfies(version, required) {
|
|
|
|
|
required = parseVersion(required);
|
|
|
|
|
version = parseVersion(version);
|
2022-04-03 00:04:45 +08:00
|
|
|
|
2026-07-24 08:51:20 +08:00
|
|
|
return (
|
|
|
|
|
version.major > required.major ||
|
|
|
|
|
(version.major === required.major && version.minor > required.minor) ||
|
|
|
|
|
(version.major === required.major &&
|
|
|
|
|
version.minor === required.minor &&
|
|
|
|
|
version.patch >= required.patch)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function shouldEnableExperimentalCli() {
|
|
|
|
|
var index = process.argv.indexOf("--experimental-cli");
|
2025-05-06 10:34:05 +08:00
|
|
|
|
|
|
|
|
if (index !== -1) {
|
|
|
|
|
process.argv.splice(index, 1);
|
|
|
|
|
}
|
2026-07-24 08:51:20 +08:00
|
|
|
|
|
|
|
|
return index !== -1 || process.env.PRETTIER_EXPERIMENTAL_CLI;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var requiredVersion = require("../package.json").engines.node.replace(">=", "");
|
|
|
|
|
|
|
|
|
|
function run() {
|
|
|
|
|
// Based on `please-upgrade-node` package
|
|
|
|
|
if (!isVersionSatisfies(process.versions.node, requiredVersion)) {
|
|
|
|
|
var message =
|
|
|
|
|
"Prettier requires at least version " +
|
|
|
|
|
requiredVersion +
|
|
|
|
|
" of Node.js, please upgrade!";
|
|
|
|
|
|
|
|
|
|
process.exitCode = 1;
|
|
|
|
|
console.error(message);
|
|
|
|
|
return Promise.reject(new Error(message));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var dynamicImport = new Function("module", "return import(module)");
|
|
|
|
|
|
|
|
|
|
if (shouldEnableExperimentalCli()) {
|
|
|
|
|
return dynamicImport("../src/experimental-cli/index.js").then(
|
|
|
|
|
function (cli) {
|
|
|
|
|
return cli.__promise;
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return dynamicImport("../src/cli/index.js").then(function runCli(cli) {
|
2023-11-30 13:34:09 +08:00
|
|
|
return cli.run();
|
|
|
|
|
});
|
|
|
|
|
}
|
2025-05-06 10:34:05 +08:00
|
|
|
|
|
|
|
|
// Exposed for test
|
2026-07-24 08:51:20 +08:00
|
|
|
module.exports.__promise = run();
|