github.com/myhau/pulumi/pkg/v3@v3.70.2-0.20221116134521-f2775972e587/codegen/testing/test/testdata/regress-8403/go/mongodbatlas/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 mongodbatlas 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-mongodbatlas/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 }