From 5f0a248653bec433fa705583dc65efa77dd7786b Mon Sep 17 00:00:00 2001 From: shobhitagnihotri69 Date: Wed, 9 Sep 2026 11:31:25 +0530 Subject: [PATCH] fix(cli): gracefully handle prompt cancellation and validate template path --- packages/create-bubblelab-app/bin/cli.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/create-bubblelab-app/bin/cli.js b/packages/create-bubblelab-app/bin/cli.js index 7bfa9132d..b931d05ad 100755 --- a/packages/create-bubblelab-app/bin/cli.js +++ b/packages/create-bubblelab-app/bin/cli.js @@ -66,11 +66,16 @@ async function main() { name: 'firecrawlApiKey', message: 'Enter your Firecrawl API key (optional, press Enter to skip):', }, - ]); + ], { + onCancel: () => { + console.log(pc.yellow('\nOperation cancelled.')); + process.exit(0); + }, + }); - if (!response.projectName) { - console.log(pc.red('\n❌ Project creation cancelled')); - process.exit(1); + if (!response.projectName || !response.template || !response.googleApiKey) { + console.log(pc.yellow('\nOperation cancelled.')); + process.exit(0); } const { @@ -80,6 +85,13 @@ async function main() { googleApiKey, firecrawlApiKey, } = response; + + const templateDir = path.join(__dirname, '..', 'templates', template); + if (!fs.existsSync(templateDir)) { + console.log(pc.red(`\n❌ Template "${template}" does not exist.`)); + process.exit(1); + } + const targetDir = path.join(process.cwd(), projectName); // Check if directory exists @@ -93,7 +105,6 @@ async function main() { fs.mkdirSync(targetDir, { recursive: true }); // Copy template - const templateDir = path.join(__dirname, '..', 'templates', template); copyDirectory(templateDir, targetDir); // Update package.json with project name