create-questpie-app
Version:
Bootstrap a new QUESTPIE Studio application with your choice of template and packages
4 lines ⢠2.88 kB
JavaScript
import{getAvailablePackages as e,getDefaultPackagesForTemplate as t}from"./package-manager.js";import n from"chalk";import r from"inquirer";async function i(){let{projectName:e}=await r.prompt([{type:`input`,name:`projectName`,message:`What is your project named?`,default:`my-questpie-app`,validate:e=>e.trim()?/^[a-z0-9-]+$/.test(e)?!0:`Project name must contain only lowercase letters, numbers, and hyphens`:`Project name is required`}]);return e}async function a(){let{projectType:e}=await r.prompt([{type:`list`,name:`projectType`,message:`What type of project would you like to create?`,choices:[{name:`${n.blue(`Monorepo`)} - Full monorepo with apps and packages`,value:`monorepo`},{name:`${n.blue(`Single App`)} - Just the web/admin application`,value:`single-app`},{name:`${n.blue(`Single Module`)} - Just a module package`,value:`single-module`}],default:`monorepo`}]);return e}async function o(){let{template:e}=await r.prompt([{type:`list`,name:`template`,message:`Which template would you like to use?`,choices:[{name:`${n.blue(`Web Template`)} - Full-stack web application with frontend components`,value:`web`},{name:`${n.green(`Admin Template`)} - Admin panel and dashboard application`,value:`admin`}],default:`web`}]);return e}async function s(i,a){try{let n=await e(a),o=t(i),s=n.filter(e=>!e.isCore).filter(e=>e.name!==`web`||i!==`web`),c=n.filter(e=>e.isCore);for(let e of c);if(i===`web`&&n.find(e=>e.name===`web`),s.length===0)return o;let{selectedPackages:l}=await r.prompt([{type:`checkbox`,name:`selectedPackages`,message:`
Select additional packages to include:`,choices:s.map(e=>({name:`${e.name}@${e.version} - ${e.description}`,value:e.name,checked:!1}))}]);return[...new Set([...o,...l])]}catch(e){console.error(n.red(`
ā Failed to fetch packages:`)),e instanceof Error&&console.error(n.red(` ${e.message}`)),process.exit(1)}}async function c(){let{token:e}=await r.prompt([{type:`password`,name:`token`,message:`Enter your QUESTPIE registry token:`,validate:async e=>{if(!e.trim())return`Token cannot be empty`;let{validateTokenAccess:t}=await import(`./package-manager.js`),n=await t(e.trim());return n.isValid?!0:`Invalid token: ${n.error||`Unknown error`}`}}]);return e.trim()}async function l(){let{skipGit:e}=await r.prompt([{type:`confirm`,name:`skipGit`,message:`Skip git initialization?`,default:!1}]);return e}async function u(){let{skipInstall:e}=await r.prompt([{type:`confirm`,name:`skipInstall`,message:`Skip package installation?`,default:!1}]);return e}async function d(e,t,n,i,a,o){i.length;let{confirm:s}=await r.prompt([{type:`confirm`,name:`confirm`,message:`Create this project?`,default:!0}]);return s}export{d as confirmProjectCreation,s as promptPackages,i as promptProjectName,a as promptProjectType,c as promptRegistryToken,l as promptSkipGit,u as promptSkipInstall,o as promptTemplate};
//# sourceMappingURL=prompts.js.map