github.com/myhau/pulumi/pkg/v3@v3.70.2-0.20221116134521-f2775972e587/codegen/testing/test/testdata/go-plain-ref-repro/go/repro/pulumiUtilities.go (about)

     1  // Code generated by test DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package repro
     5  
     6  import (
     7  	"fmt"
     8  	"os"
     9  	"reflect"
    10  	"regexp"
    11  	"strconv"
    12  	"strings"
    13  
    14  	"github.com/blang/semver"
    15  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    16  )
    17  
    18  type envParser func(v string) interface{}
    19  
    20  func parseEnvBool(v string) interface{} {
    21  	b, err := strconv.ParseBool(v)
    22  	if err != nil {
    23  		return nil
    24  	}
    25  	return b
    26  }
    27  
    28  func parseEnvInt(v string) interface{} {
    29  	i, err := strconv.ParseInt(v, 0, 0)
    30  	if err != nil {
    31  		return nil
    32  	}
    33  	return int(i)
    34  }
    35  
    36  func parseEnvFloat(v string) interface{} {
    37  	f, err := strconv.ParseFloat(v, 64)
    38  	if err != nil {
    39  		return nil
    40  	}
    41  	return f
    42  }
    43  
    44  func parseEnvStringArray(v string) interface{} {
    45  	var result pulumi.StringArray
    46  	for _, item := range strings.Split(v, ";") {
    47  		result = append(result, pulumi.String(item))
    48  	}
    49  	return result
    50  }
    51  
    52  func getEnvOrDefault(def interface{}, parser envParser, vars ...string) interface{} {
    53  	for _, v := range vars {
    54  		if value := os.Getenv(v); value != "" {
    55  			if parser != nil {
    56  				return parser(value)
    57  			}
    58  			return value
    59  		}
    60  	}
    61  	return def
    62  }
    63  
    64  // PkgVersion uses reflection to determine the version of the current package.
    65  // If a version cannot be determined, v1 will be assumed. The second return
    66  // value is always nil.
    67  func PkgVersion() (semver.Version, error) {
    68  	type sentinal struct{}
    69  	pkgPath := reflect.TypeOf(sentinal{}).PkgPath()
    70  	re := regexp.MustCompile("^.*/pulumi-repro/sdk(/v\\d+)?")
    71  	if match := re.FindStringSubmatch(pkgPath); match != nil {
    72  		vStr := match[1]
    73  		if len(vStr) == 0 { // If the version capture group was empty, default to v1.
    74  			return semver.Version{Major: 1}, nil
    75  		}
    76  		return semver.MustParse(fmt.Sprintf("%s.0.0", vStr[2:])), nil
    77  	}
    78  	return semver.Version{Major: 1}, nil
    79  }
    80  
    81  // isZero is a null safe check for if a value is it's types zero value.
    82  func isZero(v interface{}) bool {
    83  	if v == nil {
    84  		return true
    85  	}
    86  	return reflect.ValueOf(v).IsZero()
    87  }