Documentation
¶
Overview ¶
Package env is a codegen-first environment variable parser for Go. Use cmd/envgen to generate type-specific loaders with zero runtime reflection.
Index ¶
- Constants
- func AppendParse(errs *[]FieldError, field, key, value string, parseErr error)
- func AppendParseSensitive(errs *[]FieldError, field, key, value string, parseErr error)
- func AppendRequired(errs *[]FieldError, field, key string)
- func BytesToString(b []byte) string
- func ClosestKey(key string, keys []string) (string, int)
- func Expand(s string, snap *EnvSnapshot) string
- func IsEmpty(s string) bool
- func LoadDotEnv(path string) error
- func LooksLikeSecret(value string) bool
- func NewError(fields []FieldError) error
- func ParseBool(s string) (bool, error)
- func ParseDotEnv(data []byte) (map[string]string, error)
- func ParseDotEnvFile(path string) (map[string]string, error)
- func ParseDuration(s string) (time.Duration, error)
- func ParseFloat32(s string) (float32, error)
- func ParseFloat64(s string) (float64, error)
- func ParseInt(s string) (int, error)
- func ParseInt8(s string) (int8, error)
- func ParseInt16(s string) (int16, error)
- func ParseInt32(s string) (int32, error)
- func ParseInt64(s string) (int64, error)
- func ParseIntSlice(s, sep string) ([]int, error)
- func ParseString(s string) (string, error)
- func ParseStringMap(s, sep, kvSep string) (map[string]string, error)
- func ParseStringSlice(s, sep string) ([]string, error)
- func ParseTime(s, layout string) (time.Time, error)
- func ParseUint(s string) (uint, error)
- func ParseUint8(s string) (uint8, error)
- func ParseUint16(s string) (uint16, error)
- func ParseUint32(s string) (uint32, error)
- func ParseUint64(s string) (uint64, error)
- func Reload()
- func ResetSnapshot()
- func StringToBytes(s string) []byte
- type AuditMode
- type AuditOptions
- type AuditReport
- type EnvSnapshot
- type Error
- type FieldError
- type Finding
- type FindingKind
- type FindingSeverity
- type SchemaField
- type Unmarshaler
Constants ¶
const MaxDotEnvBytes = 1 << 20 // 1 MiB
MaxDotEnvBytes is the maximum .env file size accepted by ParseDotEnvFile.
const SensitiveMask = "***"
SensitiveMask replaces sensitive fields in generated Masked() output.
Variables ¶
This section is empty.
Functions ¶
func AppendParse ¶
func AppendParse(errs *[]FieldError, field, key, value string, parseErr error)
AppendParse records a parse failure. Prefer AppendParseSensitive for sensitive fields.
func AppendParseSensitive ¶ added in v0.6.0
func AppendParseSensitive(errs *[]FieldError, field, key, value string, parseErr error)
AppendParseSensitive records a parse failure without retaining or printing the raw value.
func AppendRequired ¶
func AppendRequired(errs *[]FieldError, field, key string)
func BytesToString ¶ added in v0.5.0
BytesToString returns a string view of b without copying.
func ClosestKey ¶ added in v0.6.0
ClosestKey returns the schema key with minimal Levenshtein distance to key. Candidates whose length differs by more than the typo budget are skipped. Distance is -1 when no candidate remains.
func Expand ¶ added in v0.2.0
func Expand(s string, snap *EnvSnapshot) string
Expand replaces ${VAR} and $VAR references using values from snap.
func LoadDotEnv ¶ added in v0.2.0
LoadDotEnv loads variables from path into the process environment. Existing variables are not overwritten. The cached snapshot is refreshed. path is treated as a trusted filesystem path.
func LooksLikeSecret ¶ added in v0.6.0
LooksLikeSecret reports whether value resembles an API token or secret.
func ParseDotEnv ¶ added in v0.2.0
ParseDotEnv parses dotenv content. Supports # comments, export prefix, and quoted values.
func ParseDotEnvFile ¶ added in v0.2.0
ParseDotEnvFile reads KEY=VALUE pairs from a dotenv file.
func ParseFloat32 ¶
func ParseFloat64 ¶
func ParseInt16 ¶
func ParseInt32 ¶
func ParseInt64 ¶
func ParseIntSlice ¶
func ParseString ¶
func ParseStringSlice ¶
func ParseUint8 ¶
func ParseUint16 ¶
func ParseUint32 ¶
func ParseUint64 ¶
func Reload ¶ added in v0.4.0
func Reload()
Reload refreshes the cached snapshot from os.Environ(). Generated ReloadConfig calls this before re-parsing.
func ResetSnapshot ¶
func ResetSnapshot()
ResetSnapshot rebuilds the cached snapshot from the current process environment. It always stores a fresh snapshot and does not share work with Snapshot's first-build flight, so a concurrent first Snapshot cannot overwrite a newer reload.
func StringToBytes ¶ added in v0.5.0
StringToBytes returns a read-only view of s as a []byte without copying.
Types ¶
type AuditMode ¶ added in v0.6.0
type AuditMode int
AuditMode controls which warnings become errors.
type AuditOptions ¶ added in v0.6.0
type AuditOptions struct {
Mode AuditMode
StrictUnknown bool // orphans are errors (default: warnings)
AllUnknown bool // report unknown keys that are neither orphans nor typos
// contains filtered or unexported fields
}
AuditOptions tunes contract checks.
type AuditReport ¶ added in v0.6.0
type AuditReport struct {
Findings []Finding
}
AuditReport collects findings from one audit pass.
func Audit ¶ added in v0.6.0
func Audit(snap *EnvSnapshot, schema []SchemaField, opts AuditOptions) AuditReport
Audit checks snap against schema: typos, orphans, silent defaults, required gaps, unmarked secrets.
func (AuditReport) Err ¶ added in v0.6.0
func (r AuditReport) Err() error
Err returns a non-nil error when any finding has SeverityError.
func (AuditReport) HasErrors ¶ added in v0.6.0
func (r AuditReport) HasErrors() bool
HasErrors reports whether any finding is SeverityError.
type EnvSnapshot ¶
type EnvSnapshot struct {
// contains filtered or unexported fields
}
EnvSnapshot holds an indexed view of environment variables.
func FromEnviron ¶
func FromEnviron(environ []string) *EnvSnapshot
func FromMap ¶
func FromMap(vars map[string]string) *EnvSnapshot
FromMap copies vars into a new snapshot. Callers may mutate the input map afterward.
func Snapshot ¶
func Snapshot() *EnvSnapshot
Snapshot returns a cached process environment index. The index is built once from os.Environ() until ResetSnapshot is called. Concurrent first callers share a single FromEnviron via singleflight.
func SnapshotWithDotEnv ¶ added in v0.2.0
func SnapshotWithDotEnv(paths ...string) (*EnvSnapshot, error)
SnapshotWithDotEnv builds a snapshot from dotenv files overlaid with os.Environ(). Process environment values take precedence over file values.
func (*EnvSnapshot) Len ¶
func (s *EnvSnapshot) Len() int
func (*EnvSnapshot) Range ¶ added in v0.6.0
func (s *EnvSnapshot) Range(fn func(key, value string) bool)
Range calls fn for each key/value. If fn returns false, iteration stops.
type Error ¶
type Error struct {
Fields []FieldError
// contains filtered or unexported fields
}
Error collects every field error from one parse pass.
type FieldError ¶
type FieldError struct {
Err error
Field string
EnvKey string
Op string
Value string
Sensitive bool
// contains filtered or unexported fields
}
FieldError is a single field-level configuration error.
func (FieldError) Error ¶
func (e FieldError) Error() string
type Finding ¶ added in v0.6.0
type Finding struct {
Key string
Field string
Message string
Suggest string
Kind FindingKind
Severity FindingSeverity
}
Finding is one contract violation or hygiene warning.
type FindingKind ¶ added in v0.6.0
type FindingKind int
FindingKind classifies an audit finding.
const ( FindingTypo FindingKind = iota FindingOrphan FindingSilentDefault FindingMissingRequired FindingUnmarkedSecret )
func (FindingKind) String ¶ added in v0.6.0
func (k FindingKind) String() string
type FindingSeverity ¶ added in v0.6.0
type FindingSeverity int
FindingSeverity is error or warning.
const ( SeverityWarning FindingSeverity = iota SeverityError )
func (FindingSeverity) String ¶ added in v0.6.0
func (s FindingSeverity) String() string
type SchemaField ¶ added in v0.6.0
type SchemaField struct {
Key string
FieldPath string
Default string
Prefix string
Required bool
HasDefault bool
Sensitive bool
// contains filtered or unexported fields
}
SchemaField describes one env key known to a generated (or CLI) schema.
type Unmarshaler ¶
Unmarshaler parses a custom type from a raw environment value.