github.com/ggreg80/ketos@v0.0.0-20171109040536-049616f51ddb/cmd/opmanifest/put_cmd.go (about)

     1  package opmanifest
     2  
     3  import (
     4  	"encoding/json"
     5  	"os"
     6  
     7  	manifestV1 "github.com/docker/distribution/manifest/schema1"
     8  	"github.com/pkg/errors"
     9  	"github.com/setekhid/ketos/pkg/registry"
    10  	"github.com/spf13/cobra"
    11  )
    12  
    13  var (
    14  	PutManifest = &cobra.Command{
    15  		Use:   "put-manifest",
    16  		Short: "put-manifest [image-name]:tag",
    17  		Args:  cobra.ExactArgs(1),
    18  
    19  		RunE: putManifest,
    20  	}
    21  )
    22  
    23  func init() {
    24  }
    25  
    26  func putManifest(cmd *cobra.Command, args []string) error {
    27  
    28  	image, err := FillImage(args[0])
    29  	if err != nil {
    30  		return err
    31  	}
    32  
    33  	repo, tag, err := registry.DockerImage(image).Connect()
    34  	if err != nil {
    35  		return err
    36  	}
    37  
    38  	manifest := &manifestV1.Manifest{}
    39  	err = json.NewDecoder(os.Stdin).Decode(manifest)
    40  	if err != nil {
    41  		return errors.Wrap(err, "unmarshal manifest")
    42  	}
    43  
    44  	return repo.PutManifest(tag, manifest)
    45  }