github.com/vmware/govmomi@v0.51.0/cli/library/cp.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 library
     6  
     7  import (
     8  	"context"
     9  	"flag"
    10  	"fmt"
    11  
    12  	"github.com/vmware/govmomi/cli"
    13  	"github.com/vmware/govmomi/cli/flags"
    14  	"github.com/vmware/govmomi/vapi/library"
    15  )
    16  
    17  type cp struct {
    18  	*flags.ClientFlag
    19  
    20  	library.Item
    21  }
    22  
    23  func init() {
    24  	cli.Register("library.cp", &cp{})
    25  }
    26  
    27  func (cmd *cp) Register(ctx context.Context, f *flag.FlagSet) {
    28  	cmd.ClientFlag, ctx = flags.NewClientFlag(ctx)
    29  	cmd.ClientFlag.Register(ctx, f)
    30  
    31  	f.StringVar(&cmd.Name, "n", "", "Library item name")
    32  }
    33  
    34  func (cmd *cp) Usage() string {
    35  	return "SRC DST"
    36  }
    37  
    38  func (cmd *cp) Description() string {
    39  	return `Copy SRC library item to DST library.
    40  Examples:
    41    govc library.cp /my-content/my-item /my-other-content
    42    govc library.cp -n my-item2 /my-content/my-item /my-other-content`
    43  }
    44  
    45  func (cmd *cp) Run(ctx context.Context, f *flag.FlagSet) error {
    46  	srcPath := f.Arg(0)
    47  	dstPath := f.Arg(1)
    48  
    49  	c, err := cmd.RestClient()
    50  	if err != nil {
    51  		return err
    52  	}
    53  
    54  	m := library.NewManager(c)
    55  	src, err := flags.ContentLibraryItem(ctx, c, srcPath)
    56  	if err != nil {
    57  		return err
    58  	}
    59  
    60  	dst, err := flags.ContentLibrary(ctx, c, dstPath)
    61  	if err != nil {
    62  		return err
    63  	}
    64  
    65  	cmd.LibraryID = dst.ID
    66  	if cmd.Name == "" {
    67  		cmd.Name = src.Name
    68  	}
    69  
    70  	id, err := m.CopyLibraryItem(ctx, src, cmd.Item)
    71  	if err != nil {
    72  		return err
    73  	}
    74  
    75  	fmt.Println(id)
    76  
    77  	return nil
    78  }