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  }