tags

package
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2026 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const EnvPlaceholderPrefix = "__ENV__:"

EnvPlaceholderPrefix is the special prefix used to serialize deferred !env values.

View Source
const (
	// MaxFileSize is the maximum file size we'll load (10MB)
	MaxFileSize = 10 * 1024 * 1024
)
View Source
const RefPlaceholderPrefix = "__REF__:"

RefPlaceholderPrefix is the special prefix for serialized placeholders

Variables

This section is empty.

Functions

func AssignReflectValue added in v0.8.0

func AssignReflectValue(target, value reflect.Value) bool

AssignReflectValue attempts to set target to value, converting if needed.

func BuildEnvPlaceholder added in v0.8.0

func BuildEnvPlaceholder(varRef, extractPath string) string

BuildEnvPlaceholder serializes an env reference into a deferred placeholder string.

func ExtractValue

func ExtractValue(data any, path string) (any, error)

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

func GetAvailablePaths(data any, prefix string, maxDepth int) []string

GetAvailablePaths returns available paths from a data structure for error messages

func IsEnvPlaceholder added in v0.8.0

func IsEnvPlaceholder(value string) bool

IsEnvPlaceholder checks if a string contains a deferred !env placeholder.

func IsRefPlaceholder added in v0.1.5

func IsRefPlaceholder(value string) bool

IsRefPlaceholder checks if a string is a reference placeholder

func ParseEnvPlaceholder added in v0.8.0

func ParseEnvPlaceholder(placeholder string) (varRef, extractPath string, ok bool)

ParseEnvPlaceholder extracts the variable name and extract path from a deferred !env placeholder.

func ParseRefPlaceholder added in v0.1.5

func ParseRefPlaceholder(placeholder string) (resourceRef, field string, ok bool)

ParseRefPlaceholder extracts ref and field from a placeholder string

func ResolveEnvPlaceholder added in v0.8.0

func ResolveEnvPlaceholder(placeholder string) (string, error)

ResolveEnvPlaceholder resolves a deferred !env placeholder using the current environment.

func SetMapValue added in v0.8.0

func SetMapValue(target, key, value reflect.Value) bool

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

type TagResolver

type TagResolver interface {
	// Tag returns the YAML tag this resolver handles (e.g., "!file")
	Tag() string

	// Resolve processes a YAML node with this tag and returns the resolved value
	Resolve(node *yaml.Node) (any, error)
}

TagResolver processes custom YAML tags

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL