func GetConsolidatedConfig()

in pkg/esoutput/config.go [186:268]


func GetConsolidatedConfig(jsonRawConf json.RawMessage, env map[string]string, arg string) (Config, error) {
	result := NewConfig()
	if jsonRawConf != nil {
		jsonConf := Config{}
		if err := json.Unmarshal(jsonRawConf, &jsonConf); err != nil {
			return result, err
		}
		result = result.Apply(jsonConf)
	}

	getEnvBool := func(env map[string]string, name string) (null.Bool, error) {
		if v, vDefined := env[name]; vDefined {
			if b, err := strconv.ParseBool(v); err != nil {
				return null.NewBool(false, false), err
			} else {
				return null.BoolFrom(b), nil
			}
		}
		return null.NewBool(false, false), nil
	}

	// envconfig is not processing some undefined vars (at least duration) so apply them manually
	if flushPeriod, flushPeriodDefined := env["K6_ELASTICSEARCH_FLUSH_PERIOD"]; flushPeriodDefined {
		if err := result.FlushPeriod.UnmarshalText([]byte(flushPeriod)); err != nil {
			return result, err
		}
	}

	if url, defined := env["K6_ELASTICSEARCH_URL"]; defined {
		result.Url = null.StringFrom(url)
	}

	if cloudId, defined := env["K6_ELASTICSEARCH_CLOUD_ID"]; defined {
		result.CloudID = null.StringFrom(cloudId)
	}

	if ca, defined := env["K6_ELASTICSEARCH_CA_CERT_FILE"]; defined {
		result.CACert = null.StringFrom(ca)
	}

	if skipVerify, err := getEnvBool(env, "K6_ELASTICSEARCH_INSECURE_SKIP_VERIFY"); err != nil {
		return result, err
	} else {
		if skipVerify.Valid {
			result.InsecureSkipVerify = skipVerify
		}
	}

	if clientCert, defined := env["K6_ELASTICSEARCH_CLIENT_CERT_FILE"]; defined {
		result.ClientCert = null.StringFrom(clientCert)
	}
	if clientKey, defined := env["K6_ELASTICSEARCH_CLIENT_KEY_FILE"]; defined {
		result.ClientKey = null.StringFrom(clientKey)
	}

	if user, defined := env["K6_ELASTICSEARCH_USER"]; defined {
		result.User = null.StringFrom(user)
	}

	if password, defined := env["K6_ELASTICSEARCH_PASSWORD"]; defined {
		result.Password = null.StringFrom(password)
	}
	if apiKey, defined := env["K6_ELASTICSEARCH_API_KEY"]; defined {
		result.APIKey = null.StringFrom(apiKey)
	}
	if serviceAccountToken, defined := env["K6_ELASTICSEARCH_SERVICE_ACCOUNT_TOKEN"]; defined {
		result.ServiceAccountToken = null.StringFrom(serviceAccountToken)
	}
	if indexName, defined := env["K6_ELASTICSEARCH_INDEX_NAME"]; defined {
		result.IndexName = null.StringFrom(indexName)
	}

	if arg != "" {
		argConf, err := ParseArg(arg)
		if err != nil {
			return result, err
		}

		result = result.Apply(argConf)
	}

	return result, nil
}