File: info.go

package info (click to toggle)
rootlesskit 2.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 636 kB
  • sloc: sh: 433; makefile: 25
file content (59 lines) | stat: -rw-r--r-- 1,385 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package main

import (
	"context"
	"encoding/json"
	"fmt"

	"github.com/urfave/cli/v2"
)

var infoCommand = cli.Command{
	Name:      "info",
	Usage:     "Show info",
	ArgsUsage: "[flags]",
	Flags: []cli.Flag{
		&cli.BoolFlag{
			Name:  "json",
			Usage: "Prints as JSON",
		},
	},
	Action: infoAction,
}

func infoAction(clicontext *cli.Context) error {
	w := clicontext.App.Writer
	c, err := newClient(clicontext)
	if err != nil {
		return err
	}
	ctx := context.Background()
	info, err := c.Info(ctx)
	if err != nil {
		return err
	}
	if clicontext.Bool("json") {
		m, err := json.MarshalIndent(info, "", "    ")
		if err != nil {
			return err
		}
		fmt.Fprintln(w, string(m))
		return nil
	}
	fmt.Fprintf(w, "- REST API version: %s\n", info.APIVersion)
	fmt.Fprintf(w, "- Implementation version: %s\n", info.Version)
	fmt.Fprintf(w, "- State Directory: %s\n", info.StateDir)
	fmt.Fprintf(w, "- Child PID: %d\n", info.ChildPID)
	if info.NetworkDriver != nil {
		fmt.Fprintf(w, "- Network Driver: %s\n", info.NetworkDriver.Driver)
		fmt.Fprintf(w, "  - DNS: %v\n", info.NetworkDriver.DNS)
		if info.NetworkDriver.ChildIP != nil {
			fmt.Fprintf(w, "  - IP: %v\n", info.NetworkDriver.ChildIP)
		}
	}
	if info.PortDriver != nil {
		fmt.Fprintf(w, "- Port Driver: %s\n", info.PortDriver.Driver)
		fmt.Fprintf(w, "  - Supported protocols: %v\n", info.PortDriver.Protos)
	}
	return nil
}