github.com/vmware/govmomi@v0.51.0/cli/flags/optional_string.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 flags
     6  
     7  import (
     8  	"flag"
     9  )
    10  
    11  type optionalString struct {
    12  	val **string
    13  }
    14  
    15  func (s *optionalString) Set(input string) error {
    16  	*s.val = &input
    17  	return nil
    18  }
    19  
    20  func (s *optionalString) Get() any {
    21  	if *s.val == nil {
    22  		return nil
    23  	}
    24  	return **s.val
    25  }
    26  
    27  func (s *optionalString) String() string {
    28  	if s.val == nil || *s.val == nil {
    29  		return "<nil>"
    30  	}
    31  	return **s.val
    32  }
    33  
    34  // NewOptionalString returns a flag.Value implementation where there is no default value.
    35  // This avoids sending a default value over the wire as using flag.StringVar() would.
    36  func NewOptionalString(v **string) flag.Value {
    37  	return &optionalString{v}
    38  }