UNPKG

@masuidrive/ticket

Version:

Real-time ticket tracking viewer with Vite + Express

80 lines (64 loc) 2.12 kB
#!/usr/bin/env node import { TicketServer } from './server'; import path from 'path'; const DEFAULT_PORT = 4932; function parseArgs(): { port: number; projectRoot: string } { const args = process.argv.slice(2); let port = DEFAULT_PORT; let projectRoot = process.cwd(); for (let i = 0; i < args.length; i++) { if ((args[i] === '-p' || args[i] === '--port') && args[i + 1]) { port = parseInt(args[i + 1], 10); if (isNaN(port)) { console.error('Invalid port number'); process.exit(1); } i++; } else if ((args[i] === '-d' || args[i] === '--dir') && args[i + 1]) { projectRoot = path.resolve(args[i + 1]); i++; } else if (args[i] === '-h' || args[i] === '--help') { showHelp(); process.exit(0); } } return { port, projectRoot }; } function showHelp(): void { console.log(` Ticket Viewer Server - Serves current-ticket.md with real-time updates Usage: npx @masuidrive/ticket [options] Options: -p, --port <number> Port to run the server on (default: ${DEFAULT_PORT}) -d, --dir <path> Project directory containing current-ticket.md (default: current directory) -h, --help Show this help message Examples: npx @masuidrive/ticket # Start server on default port npx @masuidrive/ticket -p 5000 # Start server on port 5000 npx @masuidrive/ticket -d ../myproject # Serve ticket from different directory `); } function main(): void { const { port, projectRoot } = parseArgs(); console.log(`Starting Ticket Viewer Server...`); console.log(`Project root: ${projectRoot}`); console.log(`Port: ${port}`); const server = new TicketServer(port, projectRoot); server.start(); // Handle graceful shutdown process.on('SIGINT', () => { console.log('\nShutting down server...'); server.stop(); process.exit(0); }); process.on('SIGTERM', () => { console.log('\nShutting down server...'); server.stop(); process.exit(0); }); } // Run if this is the main module if (require.main === module) { main(); } export { TicketServer };