From 92497b1ffd5cd45044b19c1dac9aebacc4ddd746 Mon Sep 17 00:00:00 2001 From: Donald Labaj Date: Fri, 13 Feb 2026 09:36:53 -0500 Subject: [PATCH] Added start command. --- src/cli.ts | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/cli.ts b/src/cli.ts index b8a7116..f216423 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -304,4 +304,48 @@ program } }); +/** Command to install, build, and start the project */ +program + .command('start') + .description('Install dependencies, build, and start the project') + .argument('[path]', 'Path to the project directory (defaults to current directory)') + .option('-p, --package-manager ', 'Package manager to use (npm, yarn, or pnpm)', 'npm') + .action(async (projectPath, options) => { + const cwd = projectPath ? path.resolve(projectPath) : process.cwd(); + const packageManager = options.packageManager ?? 'npm'; + + const validManagers = ['npm', 'yarn', 'pnpm']; + if (!validManagers.includes(packageManager)) { + console.error(`❌ Invalid package manager "${packageManager}". Use one of: ${validManagers.join(', ')}`); + process.exit(1); + } + + const installArgs = packageManager === 'yarn' ? [] : ['install']; + const buildArgs = packageManager === 'yarn' ? ['build'] : ['run', 'build']; + const startArgs = ['start']; + + try { + console.log(`📦 Installing dependencies (${packageManager})...`); + await execa(packageManager, installArgs, { cwd, stdio: 'inherit' }); + console.log('✅ Dependencies installed.'); + + console.log('🔨 Building...'); + await execa(packageManager, buildArgs, { cwd, stdio: 'inherit' }); + console.log('✅ Build complete.'); + + console.log('🚀 Starting...'); + await execa(packageManager, startArgs, { cwd, stdio: 'inherit' }); + } catch (error) { + console.error('❌ An error occurred:'); + if (error instanceof Error) { + console.error(error.message); + } else if (error && typeof error === 'object' && 'stderr' in error) { + console.error((error as { stderr?: string }).stderr || String(error)); + } else { + console.error(String(error)); + } + process.exit(1); + } + }); + program.parse(process.argv); \ No newline at end of file