UNPKG

estilo

Version:

Create color schemes for Vim, NeoVim, Airline and Lightline

66 lines (65 loc) 2.63 kB
import * as dntShim from "../_dnt.shims.js"; import { ensureDir } from "./util.js"; import { basename, resolve } from "../deps/jsr.io/@std/path/1.0.8/mod.js"; import { Eta } from "../deps/jsr.io/@eta-dev/eta/3.5.0/src/index.js"; import assets from "./assets.js"; const eta = new Eta(); const decoder = new TextDecoder(); const defaultPalette = "myblue: '#99ccff'"; export async function createProject(projectPath, noQuestions) { const options = noQuestions ? getDefaultConfig(projectPath) : await askConfig(projectPath); await createBoilerplate(projectPath, options); } function getDefaultConfig(projectPath) { return { name: basename(projectPath), author: "", version: "1.0.0", url: "", license: "MIT", }; } async function ask(question, defaultAnswer = "") { console.log(`%c${question}%c${defaultAnswer ? " (" + defaultAnswer + ")" : ""}`, "font-weight: bold; color: green;", "font-weight: normal"); const buffer = new Uint8Array(1024); await dntShim.Deno.stdin.read(buffer); const answer = decoder.decode(buffer); return answer.split("\n")[0].trim() || defaultAnswer; } async function askConfig(projectPath) { const folderName = basename(projectPath); const defConfig = { name: folderName, author: "", version: "1.0.0", url: "", license: "MIT", }; const config = { name: await ask("Project name:", defConfig.name), version: await ask("Version:", defConfig.version), license: await ask("License:", defConfig.license), author: await ask("Author:"), url: await ask("URL:"), }; return config; } async function createBoilerplate(projectPath, options) { const estiloStr = renderConfigFile(options); const estilosFolder = resolve(projectPath, "estilos"); const syntaxFolder = resolve(estilosFolder, "syntax"); const palettesFolder = resolve(estilosFolder, "palettes"); await ensureDir(estilosFolder); await ensureDir(syntaxFolder); await ensureDir(palettesFolder); dntShim.Deno.writeTextFileSync(resolve(projectPath, "estilo.yml"), estiloStr); dntShim.Deno.writeTextFileSync(resolve(estilosFolder, "terminal.yml"), assets.syntax.terminal); dntShim.Deno.writeTextFileSync(resolve(palettesFolder, options.name + ".yml"), defaultPalette); dntShim.Deno.writeTextFileSync(resolve(syntaxFolder, "base.yml"), assets.syntax.base); console.log("%c✓ Your project is ready\n", "color: green"); } function renderConfigFile(options) { return eta.renderString(assets.mustaches["project"], options); }