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

     1  package opmanifest
     2  
     3  import (
     4  	"encoding/json"
     5  	"os"
     6  
     7  	"github.com/pkg/errors"
     8  	"github.com/setekhid/ketos/pkg/registry"
     9  	"github.com/spf13/cobra"
    10  )
    11  
    12  var (
    13  	CatManifest = &cobra.Command{
    14  		Use:   "cat-manifest",
    15  		Short: "cat-manifest [image-name]:tag",
    16  		Args:  cobra.ExactArgs(1),
    17  
    18  		RunE: catManifest,
    19  	}
    20  )
    21  
    22  func init() {
    23  }
    24  
    25  func catManifest(cmd *cobra.Command, args []string) error {
    26  
    27  	image, err := FillImage(args[0])
    28  	if err != nil {
    29  		return err
    30  	}
    31  
    32  	repo, tag, err := registry.DockerImage(image).Connect()
    33  	if err != nil {
    34  		return err
    35  	}
    36  
    37  	manifest, err := repo.GetManifest(tag)
    38  	if err != nil {
    39  		return err
    40  	}
    41  
    42  	content, err := json.Marshal(manifest)
    43  	if err != nil {
    44  		return errors.Wrap(err, "marshal manifest")
    45  	}
    46  
    47  	_, err = os.Stdout.Write(content)
    48  	if err != nil {
    49  		return errors.Wrap(err, "output manifest to stdout")
    50  	}
    51  
    52  	return nil
    53  }