github.com/vmware/govmomi@v0.51.0/cli/vm/guest/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 guest 6 7 import ( 8 "context" 9 "flag" 10 11 "github.com/vmware/govmomi/cli" 12 "github.com/vmware/govmomi/fault" 13 "github.com/vmware/govmomi/vim25/types" 14 ) 15 16 type mv struct { 17 *GuestFlag 18 19 noclobber bool 20 } 21 22 func init() { 23 cli.Register("guest.mv", &mv{}) 24 } 25 26 func (cmd *mv) Register(ctx context.Context, f *flag.FlagSet) { 27 cmd.GuestFlag, ctx = newGuestFlag(ctx) 28 cmd.GuestFlag.Register(ctx, f) 29 30 f.BoolVar(&cmd.noclobber, "n", false, "Do not overwrite an existing file") 31 } 32 33 func (cmd *mv) Process(ctx context.Context) error { 34 if err := cmd.GuestFlag.Process(ctx); err != nil { 35 return err 36 } 37 return nil 38 } 39 40 func (cmd *mv) Usage() string { 41 return "SOURCE DEST" 42 } 43 44 func (cmd *mv) Description() string { 45 return `Move (rename) files in VM. 46 47 Examples: 48 govc guest.mv -vm $name /tmp/foo.sh /tmp/bar.sh 49 govc guest.mv -vm $name -n /tmp/baz.sh /tmp/bar.sh` 50 } 51 52 func (cmd *mv) Run(ctx context.Context, f *flag.FlagSet) error { 53 m, err := cmd.FileManager() 54 if err != nil { 55 return err 56 } 57 58 src := f.Arg(0) 59 dst := f.Arg(1) 60 61 err = m.MoveFile(ctx, cmd.Auth(), src, dst, !cmd.noclobber) 62 63 if err != nil { 64 if fault.Is(err, &types.NotAFile{}) { 65 err = m.MoveDirectory(ctx, cmd.Auth(), src, dst) 66 } 67 } 68 69 return err 70 }