Update paths in sync.sh, master/main.go, and CLAUDE.md to reflect the directory rename. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
)
|
|
|
|
func main() {
|
|
watchDir := flag.String("watch", "../backend", "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")
|
|
loggerPort := flag.Int("logger-port", 8085, "port for the logger service")
|
|
loggerCapacity := flag.Int("logger-capacity", 1000000, "max messages for logger to store")
|
|
|
|
flag.Parse()
|
|
|
|
// Setup signal handling
|
|
sigCh := make(chan os.Signal, 1)
|
|
signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
|
|
|
|
// Start and manage the logger process
|
|
stopLogger := startLogger(*loggerPort, *loggerCapacity)
|
|
defer stopLogger()
|
|
|
|
// Create worker pool
|
|
pool := NewWorkerPool()
|
|
|
|
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")
|
|
}
|