smartconfig/resolver_consul.go
sneak 8a38afba5e passes tests, has cli filter now.
* still has not been *really* tested yet
2025-07-20 15:29:06 +02:00

33 lines
740 B
Go

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
}