package smartconfig import ( "fmt" "github.com/hashicorp/consul/api" ) // ConsulResolver retrieves values from Consul KV store. // Usage: ${CONSUL:myapp/config/database} type ConsulResolver struct{} // Resolve retrieves the value from Consul. func (r *ConsulResolver) Resolve(value string) (string, error) { config := api.DefaultConfig() client, err := api.NewClient(config) if err != nil { return "", fmt.Errorf("failed to create Consul client: %w", err) } kv := client.KV() pair, _, err := kv.Get(value, nil) if err != nil { return "", fmt.Errorf("failed to get key %s from Consul: %w", value, err) } if pair == nil { return "", fmt.Errorf("key %s not found in Consul", value) } return string(pair.Value), nil }