func extractOptions()

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
}