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  }