diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-03-08 20:40:55 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-03-08 20:40:55 +0000 |
| commit | 1ce83b6b6a300f4389dd84c4477f3ca73a431524 (patch) | |
| tree | befe1444267d0f4f333b226f016a7767e354c2a2 /internal/cli/serve.go | |
| parent | db1ebb7a3f9310ca2cc483d65e9c0e578c2eb4ff (diff) | |
cli: newLogger helper, defaultServerURL, shared http client, report command
- Extract newLogger() to remove duplication across run/serve/start
- Add defaultServerURL const ("http://localhost:8484") used by all client commands
- Move http.Client into internal/cli/http.go with 30s timeout
- Add 'report' command for printing execution summaries
- Add test coverage for create and serve commands
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/cli/serve.go')
| -rw-r--r-- | internal/cli/serve.go | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/internal/cli/serve.go b/internal/cli/serve.go index 363e276..cd5bfce 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] != ':' { @@ -63,6 +59,9 @@ func serve(addr string) error { pool := executor.NewPool(cfg.MaxConcurrent, runner, store, logger) srv := api.NewServer(store, pool, logger, cfg.ClaudeBinaryPath) + if cfg.WebhookURL != "" { + srv.SetNotifier(notify.NewWebhookNotifier(cfg.WebhookURL, logger)) + } srv.StartHub() httpSrv := &http.Server{ @@ -81,7 +80,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) |
