@tanstack/cli
Version:
TanStack CLI
70 lines (69 loc) • 2.33 kB
JavaScript
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;
}