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 }