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