Extract daemon logic from cmd/daemon/ into internal/daemon/ package and create a new unified CLI entry point at cmd/multica/ using cobra. The CLI supports `daemon` as a long-running subcommand plus ctrl subcommands for agent/runtime management, config, status, and version. Server, migrate, and seed binaries remain unchanged. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
26 lines
562 B
Go
26 lines
562 B
Go
package cli
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
"strings"
|
|
"text/tabwriter"
|
|
)
|
|
|
|
// PrintTable writes a simple table with headers and rows to w.
|
|
func PrintTable(w io.Writer, headers []string, rows [][]string) {
|
|
tw := tabwriter.NewWriter(w, 0, 4, 2, ' ', 0)
|
|
fmt.Fprintln(tw, strings.Join(headers, "\t"))
|
|
for _, row := range rows {
|
|
fmt.Fprintln(tw, strings.Join(row, "\t"))
|
|
}
|
|
tw.Flush()
|
|
}
|
|
|
|
// PrintJSON writes v as indented JSON to w.
|
|
func PrintJSON(w io.Writer, v any) error {
|
|
enc := json.NewEncoder(w)
|
|
enc.SetIndent("", " ")
|
|
return enc.Encode(v)
|
|
}
|