github.com/vmware/govmomi@v0.51.0/cli/datastore/mv.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 datastore 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 12 "github.com/vmware/govmomi/cli" 13 ) 14 15 type mv struct { 16 target 17 } 18 19 func init() { 20 cli.Register("datastore.mv", &mv{}) 21 } 22 23 func (cmd *mv) Usage() string { 24 return "SRC DST" 25 } 26 27 func (cmd *mv) Description() string { 28 return `Move SRC to DST on DATASTORE. 29 30 Examples: 31 govc datastore.mv foo/foo.vmx foo/foo.vmx.old 32 govc datastore.mv -f my.vmx foo/foo.vmx` 33 } 34 35 func (cmd *mv) Run(ctx context.Context, f *flag.FlagSet) error { 36 args := f.Args() 37 if len(args) != 2 { 38 return flag.ErrHelp 39 } 40 41 m, err := cmd.FileManager() 42 if err != nil { 43 return err 44 } 45 46 src, err := cmd.DatastorePath(args[0]) 47 if err != nil { 48 return err 49 } 50 51 dst, err := cmd.target.ds.DatastorePath(args[1]) 52 if err != nil { 53 return err 54 } 55 56 mv := m.MoveFile 57 if cmd.kind { 58 mv = m.Move 59 } 60 61 logger := cmd.ProgressLogger(fmt.Sprintf("Moving %s to %s...", src, dst)) 62 defer logger.Wait() 63 64 return mv(m.WithProgress(ctx, logger), src, dst) 65 }