func()

in internal/oraclediscovery/oraclediscovery.go [172:201]


func (d DiscoveryService) extractOracleEnvVars(environFilePath string, varsToExtract ...string) (map[string]string, error) {
	data, err := d.readFile(environFilePath)
	if err != nil {
		return nil, fmt.Errorf("reading environment variables from %q file: %w", environFilePath, err)
	}

	// The entries in /proc/[pid]/environ file are separated by the null character
	envVars := strings.Split(string(data), "\x00")
	results := make(map[string]string)
	varsSet := make(map[string]bool)
	for _, v := range varsToExtract {
		varsSet[v] = true
	}

	for _, envVar := range envVars {
		if envVar == "" {
			continue
		}
		split := strings.SplitN(envVar, "=", 2)
		if len(split) != 2 {
			return nil, fmt.Errorf("failed to split environment variable %q into key and value", envVar)
		}
		varName, varValue := split[0], split[1]
		if _, ok := varsSet[varName]; ok {
			results[varName] = varValue
		}
	}

	return results, nil
}