win 0cda0e0b96
Some checks failed
CI / test (push) Failing after 8s
CI / golangci-lint (push) Failing after 5s
Security Scan / backend-security (push) Failing after 7s
Security Scan / frontend-security (push) Failing after 6s
feat: add dockerized antigravity ls worker mode
2026-03-30 23:57:25 +08:00

50 lines
1.0 KiB
Go

package main
import (
"context"
"errors"
"log/slog"
"net/http"
"os"
"os/signal"
"syscall"
"github.com/Wei-Shaw/sub2api/internal/pkg/lspool"
)
func main() {
server, err := lspool.NewWorkerServerFromEnv()
if err != nil {
slog.Error("failed to initialize lsworker", "err", err)
os.Exit(1)
}
defer server.Close()
httpServer := &http.Server{
Addr: envOrDefault("LSWORKER_LISTEN_ADDR", "0.0.0.0:18081"),
Handler: server.Handler(),
ReadHeaderTimeout: 10 * 1e9,
}
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
go func() {
<-ctx.Done()
_ = httpServer.Shutdown(context.Background())
}()
slog.Info("lsworker listening", "addr", httpServer.Addr)
if err := httpServer.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
slog.Error("lsworker exited with error", "err", err)
os.Exit(1)
}
}
func envOrDefault(key, fallback string) string {
if value := os.Getenv(key); value != "" {
return value
}
return fallback
}