UNPKG

@tanstack/cli

Version:
70 lines (69 loc) 2.33 kB
import { cancel, confirm, intro, isCancel, log, outro, spinner, } from '@clack/prompts'; import chalk from 'chalk'; import { createDefaultEnvironment } from '@tanstack/create'; export function createUIEnvironment(appName, silent, getTelemetry) { const defaultEnvironment = createDefaultEnvironment(); let newEnvironment = { ...defaultEnvironment, appName, }; if (!silent) { newEnvironment = { ...newEnvironment, intro: (message) => { intro(message); }, outro: (message) => { outro(message); }, info: (title, message) => { log.info(`${title ? chalk.red(title) : ''}${message ? '\n' + chalk.green(message) : ''}`); }, error: (title, message) => { log.error(`${title ? `${title}: ` : ''}${message ? '\n' + message : ''}`); }, warn: (title, message) => { log.warn(`${title ? `${title}: ` : ''}${message ? '\n' + message : ''}`); }, confirm: async (message) => { const shouldContinue = await confirm({ message, }); if (isCancel(shouldContinue)) { cancel('Operation cancelled.'); process.exit(0); } return shouldContinue; }, spinner: () => { const s = spinner(); return { start: (message) => { s.start(message); }, stop: (message) => { s.stop(message); }, }; }, startStep: (info) => { getTelemetry?.()?.startStep(info); }, finishStep: (id, _finalMessage) => { getTelemetry?.()?.finishStep(id); }, }; } else { newEnvironment = { ...newEnvironment, startStep: (info) => { getTelemetry?.()?.startStep(info); }, finishStep: (id, _finalMessage) => { getTelemetry?.()?.finishStep(id); }, }; } return newEnvironment; }