github.com/vmware/govmomi@v0.51.0/cli/library/trust/create.go (about)

     1  // © Broadcom. All Rights Reserved.
     2  // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package trust
     6  
     7  import (
     8  	"bytes"
     9  	"context"
    10  	"flag"
    11  	"io"
    12  	"os"
    13  	"path/filepath"
    14  
    15  	"github.com/vmware/govmomi/cli"
    16  	"github.com/vmware/govmomi/cli/flags"
    17  	"github.com/vmware/govmomi/vapi/library"
    18  )
    19  
    20  type create struct {
    21  	*flags.ClientFlag
    22  }
    23  
    24  func init() {
    25  	cli.Register("library.trust.create", &create{})
    26  }
    27  
    28  func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) {
    29  	cmd.ClientFlag, ctx = flags.NewClientFlag(ctx)
    30  	cmd.ClientFlag.Register(ctx, f)
    31  }
    32  
    33  func (cmd *create) Usage() string {
    34  	return "FILE"
    35  }
    36  
    37  func (cmd *create) Description() string {
    38  	return `Add a certificate to content library trust store.
    39  
    40  If FILE name is "-", read certificate from stdin.
    41  
    42  Examples:
    43    govc library.trust.create cert.pem
    44    govc about.cert -show -u wp-content-int.vmware.com | govc library.trust.create -`
    45  }
    46  
    47  func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error {
    48  	c, err := cmd.RestClient()
    49  	if err != nil {
    50  		return err
    51  	}
    52  
    53  	var cert string
    54  
    55  	name := f.Arg(0)
    56  	if name == "-" || name == "" {
    57  		var buf bytes.Buffer
    58  		if _, err := io.Copy(&buf, os.Stdin); err != nil {
    59  			return err
    60  		}
    61  		cert = buf.String()
    62  	} else {
    63  		b, err := os.ReadFile(filepath.Clean(name))
    64  		if err != nil {
    65  			return err
    66  		}
    67  		cert = string(b)
    68  	}
    69  
    70  	return library.NewManager(c).CreateTrustedCertificate(ctx, cert)
    71  }