@sern/cli
Version:
Official CLI for @sern/handler
59 lines (55 loc) • 1.83 kB
JavaScript
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