kjelsrud.dev/node_modules/astro/dist/cli/load-settings.js
2023-07-19 21:31:30 +02:00

39 lines
1.5 KiB
JavaScript

import * as colors from "kleur/colors";
import fs from "node:fs";
import { ZodError } from "zod";
import { createSettings, openConfig, resolveConfigPath } from "../core/config/index.js";
import { collectErrorMetadata } from "../core/errors/dev/index.js";
import { error } from "../core/logger/core.js";
import { formatConfigErrorMessage, formatErrorMessage } from "../core/messages.js";
import * as event from "../events/index.js";
import { eventConfigError, telemetry } from "../events/index.js";
async function loadSettings({ cmd, flags, logging }) {
const root = flags.root;
const { astroConfig: initialAstroConfig, userConfig: initialUserConfig } = await openConfig({
cwd: root,
flags,
cmd
}).catch(async (e) => {
await handleConfigError(e, { cmd, cwd: root, flags, logging });
return {};
});
if (!initialAstroConfig)
return;
telemetry.record(event.eventCliSession(cmd, initialUserConfig, flags));
return createSettings(initialAstroConfig, root);
}
async function handleConfigError(e, { cmd, cwd, flags, logging }) {
const path = await resolveConfigPath({ cwd, flags, fs });
error(logging, "astro", `Unable to load ${path ? colors.bold(path) : "your Astro config"}
`);
if (e instanceof ZodError) {
console.error(formatConfigErrorMessage(e) + "\n");
telemetry.record(eventConfigError({ cmd, err: e, isFatal: true }));
} else if (e instanceof Error) {
console.error(formatErrorMessage(collectErrorMetadata(e)) + "\n");
}
}
export {
handleConfigError,
loadSettings
};