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  }