summaryrefslogtreecommitdiff
path: root/internal/cli/serve.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/cli/serve.go')
-rw-r--r--internal/cli/serve.go15
1 files changed, 8 insertions, 7 deletions
diff --git a/internal/cli/serve.go b/internal/cli/serve.go
index b679b38..36a53b5 100644
--- a/internal/cli/serve.go
+++ b/internal/cli/serve.go
@@ -3,7 +3,6 @@ package cli
import (
"context"
"fmt"
- "log/slog"
"net/http"
"os"
"os/signal"
@@ -12,6 +11,7 @@ import (
"github.com/thepeterstone/claudomator/internal/api"
"github.com/thepeterstone/claudomator/internal/executor"
+ "github.com/thepeterstone/claudomator/internal/notify"
"github.com/thepeterstone/claudomator/internal/storage"
"github.com/thepeterstone/claudomator/internal/version"
"github.com/spf13/cobra"
@@ -44,11 +44,7 @@ func serve(addr string) error {
}
defer store.Close()
- level := slog.LevelInfo
- if verbose {
- level = slog.LevelDebug
- }
- logger := slog.New(slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: level}))
+ logger := newLogger(verbose)
apiURL := "http://localhost" + addr
if len(addr) > 0 && addr[0] != ':' {
@@ -76,6 +72,9 @@ func serve(addr string) error {
}
srv := api.NewServer(store, pool, logger, cfg.ClaudeBinaryPath, cfg.GeminiBinaryPath)
+ if cfg.WebhookURL != "" {
+ srv.SetNotifier(notify.NewWebhookNotifier(cfg.WebhookURL, logger))
+ }
srv.StartHub()
httpSrv := &http.Server{
@@ -94,7 +93,9 @@ func serve(addr string) error {
logger.Info("shutting down server...")
shutdownCtx, shutdownCancel := context.WithTimeout(ctx, 5*time.Second)
defer shutdownCancel()
- httpSrv.Shutdown(shutdownCtx)
+ if err := httpSrv.Shutdown(shutdownCtx); err != nil {
+ logger.Warn("shutdown error", "err", err)
+ }
}()
fmt.Printf("Claudomator %s listening on %s\n", version.Version(), addr)