UNPKG

@sern/cli

Version:

Official CLI for @sern/handler

59 lines (55 loc) 1.83 kB
import prompt from 'prompts'; import { readFile, mkdir, writeFile } from 'fs/promises'; import { resolve, dirname } from 'node:path'; import { URL, fileURLToPath } from 'url'; // src/commands/extra.ts // src/prompts/extra.ts var extraPrompt = { message: "What extra feature do you want to add?", name: "extra", type: "select", choices: [ { title: "Dockerfile (TypeScript)", description: "Dockerfile for TypeScript", value: "Dockerfile-typescript", selected: true }, { title: "Dockerfile (JavaScript)", description: "Dockerfile for JavaScript", value: "Dockerfile-javascript" } ] }; var root = new URL("../../", import.meta.url); var templates = new URL("./templates/", root); var extraURL = new URL("./extra/", templates); var extraFolder = fileURLToPath(extraURL); async function create(name, lang, location, no_ext) { const file = `${name}.${lang}.sern`; const target = no_ext ? `${location}/${name}` : `${location}/${name}.${lang}`; return createFile(file, target); } async function createFile(template, target) { const location = `${extraFolder}${template}`; const file = await readFile(location, "utf8"); await writeFileRecursive(target, file); } async function writeFileRecursive(target, data) { const resolvedTarget = resolve(target); const dir = dirname(resolvedTarget); await mkdir(dir, { recursive: true }); return writeFile(resolvedTarget, data); } // src/commands/extra.ts async function extra() { const extra2 = await prompt([extraPrompt]); if (Object.keys(extra2).length < 1) process.exit(1); const lang = extra2.extra.includes("typescript") ? "TS" : "JS"; await create(extra2.extra.split("-")[0], lang, process.cwd(), true); } export { extra }; //# sourceMappingURL=out.js.map //# sourceMappingURL=extra.js.map