in go/wtl/environment/sauce/sauce.go [142:188]
func extractOptions(m *metadata.Metadata) sauceOptions {
opts := sauceOptions{
username: os.Getenv("SAUCE_USERNAME"),
accessKey: os.Getenv("SAUCE_ACCESS_KEY"),
tunnelID: os.Getenv("TUNNEL_IDENTIFIER"),
}
extMap, ok := m.ExtensionMap()
if !ok {
return opts
}
soMap, ok := extMap["sauceOptions"].(map[string]interface{})
if !ok {
return opts
}
if u, ok := soMap["username"].(string); ok {
opts.username = u
}
if ak, ok := soMap["accessKey"].(string); ok {
opts.accessKey = ak
}
if sc, ok := soMap["startConnect"].(bool); ok {
opts.startConnect = sc
}
if tid, ok := soMap["tunnelId"].(string); ok {
opts.tunnelID = tid
} else if opts.startConnect {
opts.tunnelID = "tunnel-%d"
}
if strings.Contains(opts.tunnelID, "%d") {
r, err := rand.Int(rand.Reader, big.NewInt(10000))
if err != nil {
return opts
}
opts.tunnelID = fmt.Sprintf(opts.tunnelID, r)
}
return opts
}