github.com/vmware/govmomi@v0.51.0/cli/vm/guest/mkdir.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 mkdir struct { 17 *GuestFlag 18 19 createParents bool 20 } 21 22 func init() { 23 cli.Register("guest.mkdir", &mkdir{}) 24 } 25 26 func (cmd *mkdir) Register(ctx context.Context, f *flag.FlagSet) { 27 cmd.GuestFlag, ctx = newGuestFlag(ctx) 28 cmd.GuestFlag.Register(ctx, f) 29 30 f.BoolVar(&cmd.createParents, "p", false, "Create intermediate directories as needed") 31 } 32 33 func (cmd *mkdir) 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 *mkdir) Usage() string { 41 return "PATH" 42 } 43 44 func (cmd *mkdir) Description() string { 45 return `Create directory PATH in VM. 46 47 Examples: 48 govc guest.mkdir -vm $name /tmp/logs 49 govc guest.mkdir -vm $name -p /tmp/logs/foo/bar` 50 } 51 52 func (cmd *mkdir) Run(ctx context.Context, f *flag.FlagSet) error { 53 m, err := cmd.FileManager() 54 if err != nil { 55 return err 56 } 57 58 err = m.MakeDirectory(ctx, cmd.Auth(), f.Arg(0), cmd.createParents) 59 60 // ignore EEXIST if -p flag is given 61 if err != nil && cmd.createParents { 62 if fault.Is(err, &types.FileAlreadyExists{}) { 63 return nil 64 } 65 } 66 67 return err 68 }