Files
vat-api.eu/node_modules/@nuxt/cli/dist/add-template-BfsD3GVG.mjs
2026-02-13 22:02:30 +01:00

80 lines
2.8 KiB
JavaScript

import { o as logLevelArgs, t as cwdArgs } from "./_shared-BCYCnX0T.mjs";
import { n as logger } from "./logger-B4ge7MhP.mjs";
import { n as templates, t as templateNames } from "./templates-CCEGPE6-.mjs";
import { r as relativeToProcess, t as loadKit } from "./kit-4LNqcmNp.mjs";
import process from "node:process";
import { defineCommand } from "citty";
import { colors } from "consola/utils";
import { cancel, intro, outro } from "@clack/prompts";
import { dirname, extname, resolve } from "pathe";
import { existsSync, promises } from "node:fs";
//#region ../nuxi/src/commands/add-template.ts
var add_template_default = defineCommand({
meta: {
name: "add-template",
description: "Create a new template file."
},
args: {
...cwdArgs,
...logLevelArgs,
force: {
type: "boolean",
description: "Force override file if it already exists",
default: false
},
template: {
type: "positional",
required: true,
valueHint: templateNames.join("|"),
description: `Specify which template to generate`
},
name: {
type: "positional",
required: true,
description: "Specify name of the generated file"
}
},
async run(ctx) {
const cwd = resolve(ctx.args.cwd);
intro(colors.cyan("Adding template..."));
const templateName = ctx.args.template;
if (!templateNames.includes(templateName)) {
const templateNames = Object.keys(templates).map((name) => colors.cyan(name));
const lastTemplateName = templateNames.pop();
logger.error(`Template ${colors.cyan(templateName)} is not supported.`);
logger.info(`Possible values are ${templateNames.join(", ")} or ${lastTemplateName}.`);
process.exit(1);
}
const ext = extname(ctx.args.name);
const name = ext === ".vue" || ext === ".ts" ? ctx.args.name.replace(ext, "") : ctx.args.name;
if (!name) {
cancel("name argument is missing!");
process.exit(1);
}
const config = await (await loadKit(cwd)).loadNuxtConfig({ cwd });
const template = templates[templateName];
const res = template({
name,
args: ctx.args,
nuxtOptions: config
});
if (!ctx.args.force && existsSync(res.path)) {
logger.error(`File exists at ${colors.cyan(relativeToProcess(res.path))}.`);
logger.info(`Use ${colors.cyan("--force")} to override or use a different name.`);
process.exit(1);
}
const parentDir = dirname(res.path);
if (!existsSync(parentDir)) {
logger.step(`Creating directory ${colors.cyan(relativeToProcess(parentDir))}.`);
if (templateName === "page") logger.info("This enables vue-router functionality!");
await promises.mkdir(parentDir, { recursive: true });
}
await promises.writeFile(res.path, `${res.contents.trim()}\n`);
logger.success(`Created ${colors.cyan(relativeToProcess(res.path))}.`);
outro(`Generated a new ${colors.cyan(templateName)}!`);
}
});
//#endregion
export { add_template_default as default };