github.com/ggreg80/ketos@v0.0.0-20171109040536-049616f51ddb/cmd/oplayer/pull_cmd.go (about) 1 package oplayer 2 3 import ( 4 "github.com/opencontainers/go-digest" 5 "github.com/setekhid/ketos/pkg/registry" 6 "github.com/spf13/cobra" 7 ) 8 9 var ( 10 PullLayer = &cobra.Command{ 11 Use: "pull-layer", 12 Short: "pull-layer [--repository|-r image-name] layer-digest directory", 13 Args: cobra.ExactArgs(2), 14 15 RunE: pullLayer, 16 } 17 ) 18 19 func init() { 20 21 flags := PullLayer.Flags() 22 flags.StringP("repository", "r", "", 23 "repository name with or without tag") 24 } 25 26 func pullLayer(cmd *cobra.Command, args []string) error { 27 28 repoName, err := cmd.Flags().GetString("repository") 29 if err != nil { 30 return err 31 } 32 33 if len(repoName) <= 0 { 34 repoName, err = DefaultImageRepo() 35 if err != nil { 36 return err 37 } 38 } 39 40 digest, err := digest.Parse(args[0]) 41 if err != nil { 42 return err 43 } 44 45 layerDirectory := args[1] 46 47 repo, _, err := registry.DockerImage(repoName).Connect() 48 if err != nil { 49 return err 50 } 51 52 return repo.GetLayer2Directory(digest, layerDirectory) 53 }