UNPKG

claude-arcade

Version:

Add classic arcade games to your Claude Code workflow with Ctrl+G

89 lines (88 loc) 3.34 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const child_process_1 = require("child_process"); const terminal_kit_1 = __importDefault(require("terminal-kit")); const term = terminal_kit_1.default.terminal; function showMenu() { console.clear(); console.log('\x1b[36m%s\x1b[0m', '╔════════════════════════════════════════════════╗'); console.log('\x1b[36m%s\x1b[0m', '║ Claude Code + Game Launcher ║'); console.log('\x1b[36m%s\x1b[0m', '╚════════════════════════════════════════════════╝'); console.log(''); console.log('\x1b[32m%s\x1b[0m', 'Choose your activity:'); console.log(''); console.log('\x1b[33m%s\x1b[0m', ' [C] Launch Claude Code (main terminal)'); console.log('\x1b[33m%s\x1b[0m', ' [G] Play Breakout Game (alternate screen)'); console.log('\x1b[31m%s\x1b[0m', ' [Q] Quit'); console.log(''); console.log('\x1b[35m%s\x1b[0m', '→ Press a key to continue...'); console.log(''); term.grabInput(true); term.once('key', (name) => { term.grabInput(false); if (name === 'q' || name === 'Q' || name === 'CTRL_C') { console.log(''); console.log('\x1b[32m✓ Goodbye!\x1b[0m'); process.exit(0); } if (name === 'c' || name === 'C') { launchClaude(); } else if (name === 'g' || name === 'G') { launchGame(); } else { showMenu(); } }); } function launchClaude() { console.clear(); console.log('\x1b[32m→ Launching Claude Code...\x1b[0m'); console.log(''); const claude = (0, child_process_1.spawn)('claude', process.argv.slice(2), { stdio: 'inherit', shell: true }); claude.on('error', (err) => { console.log(''); console.log('\x1b[31m✗ Error launching Claude Code:\x1b[0m', err.message); console.log('\x1b[33m Make sure Claude Code is installed and "claude" is in your PATH\x1b[0m'); console.log(''); setTimeout(() => showMenu(), 2000); }); claude.on('close', (code) => { console.log(''); console.log(`\x1b[32m✓ Claude Code exited (code ${code})\x1b[0m`); console.log(''); setTimeout(() => showMenu(), 1000); }); } function launchGame() { console.log('\x1b[32m→ Launching game in alternate screen...\x1b[0m'); console.log(''); const game = (0, child_process_1.spawn)('npm', ['run', 'dev'], { stdio: 'inherit', shell: true, cwd: __dirname + '/..' }); game.on('close', () => { console.log(''); console.log('\x1b[32m✓ Game exited! Back to launcher.\x1b[0m'); console.log(''); setTimeout(() => showMenu(), 1000); }); } // Handle Ctrl+C process.on('SIGINT', () => { term.grabInput(false); console.log(''); console.log('\x1b[32m✓ Goodbye!\x1b[0m'); process.exit(0); }); // Start showMenu();