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