Artifact a2e7cae3cbd4ec31e42bca010540b3f6fb3c9a3a446aaf83506beefdd1ed81e1:
- File
cli/bridge_serve.go
— part of check-in
[845d1d229e]
at
2026-04-27 16:36:47
on branch trunk
— cli: extract command tree into reusable package
Move sync, bridge, notify, and doctor commands from cmd/edgesync/ into a new top-level cli/ package. The integration struct in cmd/edgesync/cli.go now imports from EdgeSync/cli (aliased as edgecli) and assembles the binary's command surface.
This mirrors libfossil/cli's pattern — the cli/ package exports embeddable Kong command structs that downstream consumers (e.g. agent-infra) can integrate alongside libfossil/cli.RepoCmd into their own unified CLI.
No behavior change: cmd/edgesync still builds the same binary with the same flags, and the existing notify_test.go end-to-end suite passes unchanged. (user: [email protected], size: 1144) [annotate] [blame] [check-ins using] [more...]
package cli import ( "fmt" "log" "os" "os/signal" "syscall" "github.com/danmestas/EdgeSync/bridge/bridge" libfossilcli "github.com/danmestas/libfossil/cli" ) // BridgeCmd is the top-level command group for the NATS-to-Fossil bridge. type BridgeCmd struct { Serve BridgeServeCmd `cmd:"" help:"Start NATS-to-Fossil bridge"` } type BridgeServeCmd struct { NATSUrl string `help:"NATS server URL" default:"nats://localhost:4222"` FossilURL string `required:"" help:"Fossil server HTTP URL"` Project string `required:"" help:"Project code for NATS subject"` } func (c *BridgeServeCmd) Run(g *libfossilcli.Globals) error { b, err := bridge.New(bridge.Config{ NATSUrl: c.NATSUrl, FossilURL: c.FossilURL, ProjectCode: c.Project, }) if err != nil { return fmt.Errorf("bridge: %w", err) } if err := b.Start(); err != nil { return fmt.Errorf("start: %w", err) } log.Printf("edgesync bridge running (nats=%s fossil=%s project=%s)", c.NATSUrl, c.FossilURL, c.Project) sig := make(chan os.Signal, 1) signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM) <-sig log.Printf("shutting down...") return b.Stop() }