86 lines
1.9 KiB
Go
86 lines
1.9 KiB
Go
package commands
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/containerd/containerd"
|
|
"github.com/urfave/cli"
|
|
)
|
|
|
|
var (
|
|
// SnapshotterFlags are cli flags specifying snapshotter names
|
|
SnapshotterFlags = []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: "snapshotter",
|
|
Usage: "snapshotter name. Empty value stands for the default value.",
|
|
Value: containerd.DefaultSnapshotter,
|
|
EnvVar: "CONTAINERD_SNAPSHOTTER",
|
|
},
|
|
}
|
|
|
|
// LabelFlag is a cli flag specifying labels
|
|
LabelFlag = cli.StringSliceFlag{
|
|
Name: "label",
|
|
Usage: "labels to attach to the image",
|
|
}
|
|
|
|
// RegistryFlags are cli flags specifying registry options
|
|
RegistryFlags = []cli.Flag{
|
|
cli.BoolFlag{
|
|
Name: "skip-verify,k",
|
|
Usage: "skip SSL certificate validation",
|
|
},
|
|
cli.BoolFlag{
|
|
Name: "plain-http",
|
|
Usage: "allow connections using plain HTTP",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "user,u",
|
|
Usage: "user[:password] Registry user and password",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "refresh",
|
|
Usage: "refresh token for authorization server",
|
|
},
|
|
}
|
|
)
|
|
|
|
// ObjectWithLabelArgs returns the first arg and a LabelArgs object
|
|
func ObjectWithLabelArgs(clicontext *cli.Context) (string, map[string]string) {
|
|
var (
|
|
first = clicontext.Args().First()
|
|
labelStrings = clicontext.Args().Tail()
|
|
)
|
|
|
|
return first, LabelArgs(labelStrings)
|
|
}
|
|
|
|
// LabelArgs returns a map of label key,value pairs
|
|
func LabelArgs(labelStrings []string) map[string]string {
|
|
labels := make(map[string]string, len(labelStrings))
|
|
for _, label := range labelStrings {
|
|
parts := strings.SplitN(label, "=", 2)
|
|
key := parts[0]
|
|
value := "true"
|
|
if len(parts) > 1 {
|
|
value = parts[1]
|
|
}
|
|
|
|
labels[key] = value
|
|
}
|
|
|
|
return labels
|
|
}
|
|
|
|
// PrintAsJSON prints input in JSON format
|
|
func PrintAsJSON(x interface{}) {
|
|
b, err := json.MarshalIndent(x, "", " ")
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "can't marshal %+v as a JSON string: %v\n", x, err)
|
|
}
|
|
fmt.Println(string(b))
|
|
}
|