Files
diachron/master/main.go
Michael Wolf db1f2151de Rename express/ to backend/ and update references
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>
2026-02-02 17:54:44 -05:00

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")
}