diff --git a/cmd/ipfs/diag.go b/cmd/ipfs/diag.go index 24b6c7a21..c024d08db 100644 --- a/cmd/ipfs/diag.go +++ b/cmd/ipfs/diag.go @@ -20,9 +20,13 @@ var cmdIpfsDiag = &commander.Command{ Flag: *flag.NewFlagSet("ipfs-diag", flag.ExitOnError), } +func init() { + cmdIpfsDiag.Flag.Bool("raw", false, "print raw json output") +} + var diagCmd = makeCommand(command{ name: "diag", args: 0, - flags: nil, + flags: []string{"raw"}, cmdFn: commands.Diag, }) diff --git a/core/commands/diag.go b/core/commands/diag.go index 2152b9d49..f8061115f 100644 --- a/core/commands/diag.go +++ b/core/commands/diag.go @@ -3,6 +3,7 @@ package commands import ( "encoding/json" "errors" + "fmt" "io" "time" @@ -17,10 +18,23 @@ func Diag(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.W if err != nil { return err } - enc := json.NewEncoder(out) - err = enc.Encode(info) - if err != nil { - return err + raw := opts["raw"].(bool) + if raw { + enc := json.NewEncoder(out) + err = enc.Encode(info) + if err != nil { + return err + } + } else { + for _, i := range info { + fmt.Fprintf(out, "Peer: %s\n", i.ID) + fmt.Fprintf(out, "\tUp for: %s\n", i.LifeSpan.String()) + fmt.Fprintf(out, "\tConnected To:\n") + for _, c := range i.Connections { + fmt.Fprintf(out, "\t%s\n\t\tLatency = %s\n", c.ID, c.Latency.String()) + } + fmt.Fprintln(out) + } } return nil }