astro
Version:
Astro is a modern site builder with web best practices, performance, and DX front-of-mind.
45 lines (44 loc) • 1.93 kB
JavaScript
import { createNodeLoggerFromFlags } from "../core/logger/impls/node.js";
import { createJsonLoggerFromFlags } from "../core/logger/impls/json.js";
/** @deprecated Use AstroConfigResolver instead */
export function flagsToAstroInlineConfig(flags) {
const inlineConfig = {
// Inline-only configs
configFile: typeof flags.config === "string" ? flags.config : undefined,
mode: typeof flags.mode === "string" ? flags.mode : undefined,
logLevel: flags.verbose ? "debug" : flags.silent ? "silent" : undefined,
force: flags.force ? true : undefined,
// Astro user configs
root: typeof flags.root === "string" ? flags.root : undefined,
site: typeof flags.site === "string" ? flags.site : undefined,
base: typeof flags.base === "string" ? flags.base : undefined,
outDir: typeof flags.outDir === "string" ? flags.outDir : undefined,
server: {
port: typeof flags.port === "number" ? flags.port : undefined,
host: typeof flags.host === "string" || typeof flags.host === "boolean" ? flags.host : undefined,
open: typeof flags.open === "string" || typeof flags.open === "boolean" ? flags.open : undefined,
allowedHosts: typeof flags.allowedHosts === "string" ? flags.allowedHosts.split(",") : typeof flags.allowedHosts === "boolean" && flags.allowedHosts === true ? flags.allowedHosts : []
}
};
if (flags.json) {
inlineConfig.logger = { entrypoint: "astro/logger/json" };
}
return inlineConfig;
}
/**
* The `logging` is usually created from an `AstroInlineConfig`, but some flows like `add`
* doesn't read the AstroConfig directly, so we create a `logging` object from the CLI flags instead.
*/
export function createLoggerFromFlags(flags) {
let logLevel = flags.level;
if (flags.verbose) {
logLevel = "debug";
} else if (flags.silent) {
logLevel = "silent";
}
if (flags.json) {
return createJsonLoggerFromFlags({ logLevel });
} else {
return createNodeLoggerFromFlags({ logLevel });
}
}