Documentation
¶
Index ¶
- Constants
- func AssignReflectValue(target, value reflect.Value) bool
- func BuildEnvPlaceholder(varRef, extractPath string) string
- func BuildSecretPlaceholder(expression SecretExpression) (string, error)
- func ExternalLookupDisplayKey(matchFields map[string]string, sensitiveFields []string) string
- func ExternalLookupKey(matchFields map[string]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 IsExternalPlaceholder(value string) bool
- func IsRefPlaceholder(value string) bool
- func IsSecretPlaceholder(value string) bool
- func IsStoredEnvNode(node *yaml.Node) bool
- func ParseEnvPlaceholder(placeholder string) (varRef, extractPath string, ok bool)
- func ParseRefPlaceholder(placeholder string) (resourceRef, field string, ok bool)
- func ParseReferenceLiteral(value string) (string, bool)
- func ProtectReferenceLiteral(value string) string
- func RedactEnvOldValue(oldValue, newValue any) any
- func ResolveEnvPlaceholder(placeholder string) (string, error)
- func ResolveSecretExpression(expression SecretExpression) (string, error)
- func ResolveSecretExpressionFromBase(expression SecretExpression, baseDir string) (string, error)
- func ResolveStoredEnv(opts EnvOptions, selected string) (any, error)
- func SetMapValue(target, key, value reflect.Value) bool
- type EnvOptions
- type EnvRef
- type EnvTagMode
- type EnvTagResolver
- type ExternalLookup
- type ExternalTagResolver
- type FileRef
- type FileTagResolver
- type RefTagResolver
- type ResolvedValue
- type ResolverRegistry
- type SecretExpression
- type SecretPart
- type SecretSource
- type SecretTagResolver
- type TagResolver
Constants ¶
const ( // TagEnv identifies environment-backed values. TagEnv = "!env" // TagExternal identifies planner-time external lookups. TagExternal = "!external" // TagFile identifies file-backed values. TagFile = "!file" // TagLookup identifies the alias for planner-time external lookups. TagLookup = "!lookup" // TagRef identifies declarative resource references. TagRef = "!ref" // TagSecret identifies a sensitive value assembled from deferred sources. TagSecret = "!secret" )
const DeferredEnvRedactedDisplay = "[redacted from !env]"
const EnvPlaceholderPrefix = "__ENV__:"
EnvPlaceholderPrefix is the special prefix used to serialize deferred !env values.
const ExternalPlaceholderPrefix = "__EXTERNAL__:"
ExternalPlaceholderPrefix identifies planner-time external lookup placeholders.
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
const SecretPlaceholderPrefix = "__SECRET__:" // pragma: allowlist secret
SecretPlaceholderPrefix identifies serialized deferred secret expressions.
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 BuildSecretPlaceholder ¶ added in v1.13.0
func BuildSecretPlaceholder(expression SecretExpression) (string, error)
BuildSecretPlaceholder serializes a secret expression without resolving it.
func ExternalLookupDisplayKey ¶ added in v1.10.0
ExternalLookupDisplayKey returns a selector representation suitable for diagnostics.
func ExternalLookupKey ¶ added in v1.8.0
ExternalLookupKey returns a stable selector representation for caching and diagnostics.
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 IsExternalPlaceholder ¶ added in v1.8.0
IsExternalPlaceholder reports whether a string contains a planner-time lookup.
func IsRefPlaceholder ¶ added in v0.1.5
IsRefPlaceholder checks if a string is a reference placeholder
func IsSecretPlaceholder ¶ added in v1.13.0
IsSecretPlaceholder reports whether a value is a serialized secret expression.
func IsStoredEnvNode ¶ added in v1.19.0
IsStoredEnvNode reports syntactic opt-in; ParseEnvOptions validates the options.
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 ParseReferenceLiteral ¶ added in v1.18.0
ParseReferenceLiteral decodes a string protected during YAML tag processing.
func ProtectReferenceLiteral ¶ added in v1.18.0
ProtectReferenceLiteral preserves the distinction between explicit YAML tags and ordinary strings that happen to resemble the internal encodings.
func RedactEnvOldValue ¶ added in v1.20.0
RedactEnvOldValue hides remote values at paths supplied by deferred !env in the desired value. Old values are display metadata, never execution inputs. Neither input is mutated. JSON normalization supports typed SDK containers and preserves numbers without converting them to float64.
func ResolveEnvPlaceholder ¶ added in v0.8.0
ResolveEnvPlaceholder resolves a deferred !env placeholder using the current environment.
func ResolveSecretExpression ¶ added in v1.13.0
func ResolveSecretExpression(expression SecretExpression) (string, error)
ResolveSecretExpression resolves and concatenates all expression parts.
func ResolveSecretExpressionFromBase ¶ added in v1.15.0
func ResolveSecretExpressionFromBase(expression SecretExpression, baseDir string) (string, error)
ResolveSecretExpressionFromBase resolves file sources relative to a trusted execution boundary.
func ResolveStoredEnv ¶ added in v1.19.0
func ResolveStoredEnv(opts EnvOptions, selected string) (any, error)
ResolveStoredEnv returns a JSON-compatible value using a selected conversion type.
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 EnvOptions ¶ added in v1.19.0
EnvOptions separates storage from value conversion.
func ParseEnvOptions ¶ added in v1.19.0
func ParseEnvOptions(node *yaml.Node) (EnvOptions, error)
ParseEnvOptions validates environment options without reading the environment.
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 ExternalLookup ¶ added in v1.8.0
type ExternalLookup struct {
ResourceType string `json:"resource_type,omitempty"`
ParentRef string `json:"parent_ref,omitempty"`
Parent *ExternalLookup `json:"parent,omitempty"`
MatchFields map[string]string `json:"match_fields"`
SensitiveFields []string `json:"sensitive_fields,omitempty"`
Line int `json:"line,omitempty"`
Column int `json:"column,omitempty"`
}
ExternalLookup describes a lookup parsed from !external or !lookup.
func ParseExternalPlaceholder ¶ added in v1.8.0
func ParseExternalPlaceholder(value string) (ExternalLookup, bool)
ParseExternalPlaceholder decodes a planner-time external lookup placeholder.
type ExternalTagResolver ¶ added in v1.8.0
type ExternalTagResolver struct {
// contains filtered or unexported fields
}
ExternalTagResolver converts external lookup tags into planner-time placeholders.
func NewExternalTagResolver ¶ added in v1.8.0
func NewExternalTagResolver(tag string) *ExternalTagResolver
NewExternalTagResolver creates a resolver for !external or its !lookup alias.
func (*ExternalTagResolver) Resolve ¶ added in v1.8.0
func (r *ExternalTagResolver) Resolve(node *yaml.Node) (any, error)
Resolve validates and serializes an external lookup without performing network access.
func (*ExternalTagResolver) Tag ¶ added in v1.8.0
func (r *ExternalTagResolver) Tag() string
Tag returns the YAML tag handled by this resolver.
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 SecretExpression ¶ added in v1.13.0
type SecretExpression struct {
Parts []SecretPart `json:"parts"`
}
SecretExpression is an ordered sequence whose resolved value is sensitive.
func ParseSecretPlaceholder ¶ added in v1.13.0
func ParseSecretPlaceholder(value string) (SecretExpression, error)
ParseSecretPlaceholder decodes a serialized secret expression.
func SecretExpressionFromEnvPlaceholder ¶ added in v1.13.0
func SecretExpressionFromEnvPlaceholder(value string) (SecretExpression, error)
SecretExpressionFromEnvPlaceholder converts a legacy deferred !env value.
type SecretPart ¶ added in v1.13.0
type SecretPart struct {
Literal *string `json:"literal,omitempty"`
Source *SecretSource `json:"source,omitempty"`
}
SecretPart is either public literal text or a deferred source.
type SecretSource ¶ added in v1.13.0
type SecretSource struct {
Kind string `json:"kind"`
Reference string `json:"reference"`
Extract string `json:"extract,omitempty"`
RootDir string `json:"root_dir,omitempty"`
}
SecretSource describes one deferred source in a secret expression.
type SecretTagResolver ¶ added in v1.13.0
type SecretTagResolver struct {
// contains filtered or unexported fields
}
SecretTagResolver preserves !secret declarations for execution-time resolution.
func NewSecretTagResolver ¶ added in v1.13.0
func NewSecretTagResolver() *SecretTagResolver
NewSecretTagResolver creates a !secret resolver.
func NewSecretTagResolverWithFileScope ¶ added in v1.15.0
func NewSecretTagResolverWithFileScope(baseDir, rootDir string) *SecretTagResolver
NewSecretTagResolverWithFileScope creates a secret resolver that can preserve deferred !file sources without reading their contents.
func (*SecretTagResolver) Resolve ¶ added in v1.13.0
func (r *SecretTagResolver) Resolve(node *yaml.Node) (any, error)
Resolve validates and serializes a deferred secret expression.
func (*SecretTagResolver) Tag ¶ added in v1.13.0
func (r *SecretTagResolver) Tag() string
Tag returns the YAML tag handled by this resolver.