github.com/rootless-containers/rootlesskit/v2@v2.3.4/cmd/rootlessctl/info.go (about) 1 package main 2 3 import ( 4 "context" 5 "encoding/json" 6 "fmt" 7 8 "github.com/urfave/cli/v2" 9 ) 10 11 var infoCommand = cli.Command{ 12 Name: "info", 13 Usage: "Show info", 14 ArgsUsage: "[flags]", 15 Flags: []cli.Flag{ 16 &cli.BoolFlag{ 17 Name: "json", 18 Usage: "Prints as JSON", 19 }, 20 }, 21 Action: infoAction, 22 } 23 24 func infoAction(clicontext *cli.Context) error { 25 w := clicontext.App.Writer 26 c, err := newClient(clicontext) 27 if err != nil { 28 return err 29 } 30 ctx := context.Background() 31 info, err := c.Info(ctx) 32 if err != nil { 33 return err 34 } 35 if clicontext.Bool("json") { 36 m, err := json.MarshalIndent(info, "", " ") 37 if err != nil { 38 return err 39 } 40 fmt.Fprintln(w, string(m)) 41 return nil 42 } 43 fmt.Fprintf(w, "- REST API version: %s\n", info.APIVersion) 44 fmt.Fprintf(w, "- Implementation version: %s\n", info.Version) 45 fmt.Fprintf(w, "- State Directory: %s\n", info.StateDir) 46 fmt.Fprintf(w, "- Child PID: %d\n", info.ChildPID) 47 if info.NetworkDriver != nil { 48 fmt.Fprintf(w, "- Network Driver: %s\n", info.NetworkDriver.Driver) 49 fmt.Fprintf(w, " - DNS: %v\n", info.NetworkDriver.DNS) 50 if info.NetworkDriver.ChildIP != nil { 51 fmt.Fprintf(w, " - IP: %v\n", info.NetworkDriver.ChildIP) 52 } 53 } 54 if info.PortDriver != nil { 55 fmt.Fprintf(w, "- Port Driver: %s\n", info.PortDriver.Driver) 56 fmt.Fprintf(w, " - Supported protocols: %v\n", info.PortDriver.Protos) 57 } 58 return nil 59 }