summaryrefslogtreecommitdiff
path: root/internal/cli/serve.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-03-08 20:40:55 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-03-08 20:40:55 +0000
commit1ce83b6b6a300f4389dd84c4477f3ca73a431524 (patch)
treebefe1444267d0f4f333b226f016a7767e354c2a2 /internal/cli/serve.go
parentdb1ebb7a3f9310ca2cc483d65e9c0e578c2eb4ff (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.go15
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)