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))
 | |
| }
 | 
