Replace env var parsing with Go's flag package: - --watch (default: ../express) - --workers (default: 1) - --base-port (default: 3000) - --port (default: 8080) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
42 lines
968 B
Go
42 lines
968 B
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
)
|
|
|
|
func main() {
|
|
watchDir := flag.String("watch", "../express", "directory to watch for changes")
|
|
workers := flag.Int("workers", 1, "number of worker processes")
|
|
basePort := flag.Int("base-port", 3000, "base port for worker processes")
|
|
listenPort := flag.Int("port", 8080, "port for the reverse proxy to listen on")
|
|
|
|
flag.Parse()
|
|
|
|
// Create worker pool
|
|
pool := NewWorkerPool()
|
|
|
|
// Setup signal handling
|
|
sigCh := make(chan os.Signal, 1)
|
|
signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
|
|
|
|
fileChanges := make(chan FileChange, 10)
|
|
|
|
go watchFiles(*watchDir, fileChanges)
|
|
|
|
go runExpress(fileChanges, *workers, *basePort, pool)
|
|
|
|
// Start the reverse proxy
|
|
listenAddr := fmt.Sprintf(":%d", *listenPort)
|
|
go startProxy(listenAddr, pool)
|
|
|
|
// Wait for interrupt signal
|
|
<-sigCh
|
|
fmt.Println("\nReceived interrupt signal, shutting down...")
|
|
|
|
fmt.Println("All processes terminated cleanly")
|
|
}
|