Documentation
¶
Index ¶
- Constants
- func AssignReflectValue(target, value reflect.Value) bool
- func BuildEnvPlaceholder(varRef, extractPath string) string
- func ExtractValue(data any, path string) (any, error)
- func GetAvailablePaths(data any, prefix string, maxDepth int) []string
- func IsEnvPlaceholder(value string) bool
- func IsRefPlaceholder(value string) bool
- func ParseEnvPlaceholder(placeholder string) (varRef, extractPath string, ok bool)
- func ParseRefPlaceholder(placeholder string) (resourceRef, field string, ok bool)
- func ResolveEnvPlaceholder(placeholder string) (string, error)
- func SetMapValue(target, key, value reflect.Value) bool
- type EnvRef
- type EnvTagMode
- type EnvTagResolver
- type FileRef
- type FileTagResolver
- type RefTagResolver
- type ResolvedValue
- type ResolverRegistry
- type TagResolver
Constants ¶
const EnvPlaceholderPrefix = "__ENV__:"
EnvPlaceholderPrefix is the special prefix used to serialize deferred !env values.
const (
// MaxFileSize is the maximum file size we'll load (10MB)
MaxFileSize = 10 * 1024 * 1024
)
const RefPlaceholderPrefix = "__REF__:"
RefPlaceholderPrefix is the special prefix for serialized placeholders
Variables ¶
This section is empty.
Functions ¶
func AssignReflectValue ¶ added in v0.8.0
AssignReflectValue attempts to set target to value, converting if needed.
func BuildEnvPlaceholder ¶ added in v0.8.0
BuildEnvPlaceholder serializes an env reference into a deferred placeholder string.
func ExtractValue ¶
ExtractValue extracts a value from structured data using dot notation path Supports paths like "info.title" or "servers.0.url" (array access in future)
func GetAvailablePaths ¶
GetAvailablePaths returns available paths from a data structure for error messages
func IsEnvPlaceholder ¶ added in v0.8.0
IsEnvPlaceholder checks if a string contains a deferred !env placeholder.
func IsRefPlaceholder ¶ added in v0.1.5
IsRefPlaceholder checks if a string is a reference placeholder
func ParseEnvPlaceholder ¶ added in v0.8.0
ParseEnvPlaceholder extracts the variable name and extract path from a deferred !env placeholder.
func ParseRefPlaceholder ¶ added in v0.1.5
ParseRefPlaceholder extracts ref and field from a placeholder string
func ResolveEnvPlaceholder ¶ added in v0.8.0
ResolveEnvPlaceholder resolves a deferred !env placeholder using the current environment.
func SetMapValue ¶ added in v0.8.0
SetMapValue sets key→value on target map, coercing value to the map's element type. Returns false if assignment fails.
Types ¶
type EnvRef ¶ added in v0.8.0
type EnvRef struct {
Var string `yaml:"var"` // Environment variable to read
Extract string `yaml:"extract"` // Optional: path to extract value from YAML/JSON content
}
EnvRef represents an environment variable reference with optional value extraction.
type EnvTagMode ¶ added in v0.8.0
type EnvTagMode int
EnvTagMode controls whether !env resolves to a concrete value or a deferred placeholder.
const ( // EnvTagModeResolve resolves !env tags to their current environment variable values. EnvTagModeResolve EnvTagMode = iota // EnvTagModePlaceholder preserves !env tags as deferred placeholders. EnvTagModePlaceholder )
type EnvTagResolver ¶ added in v0.8.0
type EnvTagResolver struct {
// contains filtered or unexported fields
}
EnvTagResolver handles !env tags for loading environment-backed values.
func NewEnvTagResolver ¶ added in v0.8.0
func NewEnvTagResolver(mode EnvTagMode) *EnvTagResolver
NewEnvTagResolver creates a new env tag resolver.
func (*EnvTagResolver) Resolve ¶ added in v0.8.0
func (r *EnvTagResolver) Resolve(node *yaml.Node) (any, error)
Resolve processes a YAML node with the !env tag.
func (*EnvTagResolver) Tag ¶ added in v0.8.0
func (r *EnvTagResolver) Tag() string
Tag returns the YAML tag this resolver handles.
type FileRef ¶
type FileRef struct {
Path string `yaml:"path"` // Path to the file to load
Extract string `yaml:"extract"` // Optional: path to extract value (e.g., "info.title")
}
FileRef represents a file reference with optional value extraction
type FileTagResolver ¶
type FileTagResolver struct {
// contains filtered or unexported fields
}
FileTagResolver handles !file tags for loading external content
func NewFileTagResolver ¶
func NewFileTagResolver(baseDir string, rootDir string) *FileTagResolver
NewFileTagResolver creates a new file tag resolver. baseDir resolves relative paths; rootDir defines the allowed boundary for resolved paths.
func (*FileTagResolver) Resolve ¶
func (f *FileTagResolver) Resolve(node *yaml.Node) (any, error)
Resolve processes a YAML node with the !file tag
func (*FileTagResolver) Tag ¶
func (f *FileTagResolver) Tag() string
Tag returns the YAML tag this resolver handles
type RefTagResolver ¶ added in v0.1.5
type RefTagResolver struct {
// contains filtered or unexported fields
}
RefTagResolver handles !ref tags for resource references
func NewRefTagResolver ¶ added in v0.1.5
func NewRefTagResolver(baseDir string) *RefTagResolver
NewRefTagResolver creates a new ref tag resolver
func (*RefTagResolver) Resolve ¶ added in v0.1.5
func (r *RefTagResolver) Resolve(node *yaml.Node) (any, error)
Resolve processes a YAML node with the !ref tag
func (*RefTagResolver) Tag ¶ added in v0.1.5
func (r *RefTagResolver) Tag() string
Tag returns the YAML tag this resolver handles
type ResolvedValue ¶
type ResolvedValue struct {
Value any // The resolved value
Source string // Source information for error reporting
}
ResolvedValue represents a value that was resolved from a tag
type ResolverRegistry ¶
type ResolverRegistry struct {
// contains filtered or unexported fields
}
ResolverRegistry manages tag resolvers and processes YAML with custom tags
func NewResolverRegistry ¶
func NewResolverRegistry() *ResolverRegistry
NewResolverRegistry creates a new tag resolver registry
func (*ResolverRegistry) HasResolvers ¶
func (r *ResolverRegistry) HasResolvers() bool
HasResolvers returns true if any resolvers are registered
func (*ResolverRegistry) Process ¶
func (r *ResolverRegistry) Process(data []byte) ([]byte, error)
Process takes YAML data with custom tags and returns processed YAML
func (*ResolverRegistry) Register ¶
func (r *ResolverRegistry) Register(resolver TagResolver)
Register adds a tag resolver to the registry