github.com/vmware/govmomi@v0.51.0/cli/vm/guest/mktemp.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 "fmt" 11 12 "github.com/vmware/govmomi/cli" 13 ) 14 15 type mktemp struct { 16 *GuestFlag 17 18 dir bool 19 path string 20 prefix string 21 suffix string 22 } 23 24 func init() { 25 cli.Register("guest.mktemp", &mktemp{}) 26 } 27 28 func (cmd *mktemp) Register(ctx context.Context, f *flag.FlagSet) { 29 cmd.GuestFlag, ctx = newGuestFlag(ctx) 30 cmd.GuestFlag.Register(ctx, f) 31 32 f.BoolVar(&cmd.dir, "d", false, "Make a directory instead of a file") 33 f.StringVar(&cmd.path, "p", "", "If specified, create relative to this directory") 34 f.StringVar(&cmd.prefix, "t", "", "Prefix") 35 f.StringVar(&cmd.suffix, "s", "", "Suffix") 36 } 37 38 func (cmd *mktemp) Process(ctx context.Context) error { 39 if err := cmd.GuestFlag.Process(ctx); err != nil { 40 return err 41 } 42 return nil 43 } 44 45 func (cmd *mktemp) Description() string { 46 return `Create a temporary file or directory in VM. 47 48 Examples: 49 govc guest.mktemp -vm $name 50 govc guest.mktemp -vm $name -d 51 govc guest.mktemp -vm $name -t myprefix 52 govc guest.mktemp -vm $name -p /var/tmp/$USER` 53 } 54 55 func (cmd *mktemp) Run(ctx context.Context, f *flag.FlagSet) error { 56 m, err := cmd.FileManager() 57 if err != nil { 58 return err 59 } 60 61 mk := m.CreateTemporaryFile 62 if cmd.dir { 63 mk = m.CreateTemporaryDirectory 64 } 65 66 name, err := mk(ctx, cmd.Auth(), cmd.prefix, cmd.suffix, cmd.path) 67 if err != nil { 68 return err 69 } 70 71 fmt.Println(name) 72 73 return nil 74 }