package configkit import ( "errors" "io" "strings" "gitea.maximumdirect.net/eric/ConfigKit/internal/document" yamladapter "gitea.maximumdirect.net/eric/ConfigKit/internal/yaml" ) var errEffectiveUnavailable = errors.New("configkit: effective configuration is unavailable") // WriteEffective writes deterministic redacted YAML from the frozen resolved // snapshot. The output is intended for inspection and is not promised reloadable. // Writer errors, including short writes, are returned and may leave partial output. func (r *Result[T]) WriteEffective(output io.Writer) error { if r == nil || r.final == nil || output == nil { return errEffectiveUnavailable } safe := redactedDocument(r.final, r.secrets, Path{}) return yamladapter.Write(output, safe) } func redactedDocument(node *document.Node, secret map[string]bool, path Path) *document.Node { result, _ := safeSnapshotDocument(node, secret, path) return result } func pathIsSecret(secret map[string]bool, path Path) bool { if secret[""] { return true } pointer := path.String() for pointer != "" { if secret[pointer] { return true } position := strings.LastIndexByte(pointer, '/') if position <= 0 { break } pointer = pointer[:position] } return false }