summaryrefslogtreecommitdiff
path: root/vendor/github.com/spf13/viper/internal/encoding
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/spf13/viper/internal/encoding')
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/decoder.go61
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/dotenv/codec.go61
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/dotenv/map_utils.go41
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/encoder.go60
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/error.go7
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/hcl/codec.go40
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/ini/codec.go99
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/ini/map_utils.go74
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/javaproperties/codec.go86
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/javaproperties/map_utils.go74
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/json/codec.go17
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/toml/codec.go16
-rw-r--r--vendor/github.com/spf13/viper/internal/encoding/yaml/codec.go14
13 files changed, 0 insertions, 650 deletions
diff --git a/vendor/github.com/spf13/viper/internal/encoding/decoder.go b/vendor/github.com/spf13/viper/internal/encoding/decoder.go
deleted file mode 100644
index 8a7b1dbc9..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/decoder.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package encoding
-
-import (
- "sync"
-)
-
-// Decoder decodes the contents of b into v.
-// It's primarily used for decoding contents of a file into a map[string]any.
-type Decoder interface {
- Decode(b []byte, v map[string]any) error
-}
-
-const (
- // ErrDecoderNotFound is returned when there is no decoder registered for a format.
- ErrDecoderNotFound = encodingError("decoder not found for this format")
-
- // ErrDecoderFormatAlreadyRegistered is returned when an decoder is already registered for a format.
- ErrDecoderFormatAlreadyRegistered = encodingError("decoder already registered for this format")
-)
-
-// DecoderRegistry can choose an appropriate Decoder based on the provided format.
-type DecoderRegistry struct {
- decoders map[string]Decoder
-
- mu sync.RWMutex
-}
-
-// NewDecoderRegistry returns a new, initialized DecoderRegistry.
-func NewDecoderRegistry() *DecoderRegistry {
- return &DecoderRegistry{
- decoders: make(map[string]Decoder),
- }
-}
-
-// RegisterDecoder registers a Decoder for a format.
-// Registering a Decoder for an already existing format is not supported.
-func (e *DecoderRegistry) RegisterDecoder(format string, enc Decoder) error {
- e.mu.Lock()
- defer e.mu.Unlock()
-
- if _, ok := e.decoders[format]; ok {
- return ErrDecoderFormatAlreadyRegistered
- }
-
- e.decoders[format] = enc
-
- return nil
-}
-
-// Decode calls the underlying Decoder based on the format.
-func (e *DecoderRegistry) Decode(format string, b []byte, v map[string]any) error {
- e.mu.RLock()
- decoder, ok := e.decoders[format]
- e.mu.RUnlock()
-
- if !ok {
- return ErrDecoderNotFound
- }
-
- return decoder.Decode(b, v)
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/dotenv/codec.go b/vendor/github.com/spf13/viper/internal/encoding/dotenv/codec.go
deleted file mode 100644
index 3ebc76f02..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/dotenv/codec.go
+++ /dev/null
@@ -1,61 +0,0 @@
-package dotenv
-
-import (
- "bytes"
- "fmt"
- "sort"
- "strings"
-
- "github.com/subosito/gotenv"
-)
-
-const keyDelimiter = "_"
-
-// Codec implements the encoding.Encoder and encoding.Decoder interfaces for encoding data containing environment variables
-// (commonly called as dotenv format).
-type Codec struct{}
-
-func (Codec) Encode(v map[string]any) ([]byte, error) {
- flattened := map[string]any{}
-
- flattened = flattenAndMergeMap(flattened, v, "", keyDelimiter)
-
- keys := make([]string, 0, len(flattened))
-
- for key := range flattened {
- keys = append(keys, key)
- }
-
- sort.Strings(keys)
-
- var buf bytes.Buffer
-
- for _, key := range keys {
- _, err := buf.WriteString(fmt.Sprintf("%v=%v\n", strings.ToUpper(key), flattened[key]))
- if err != nil {
- return nil, err
- }
- }
-
- return buf.Bytes(), nil
-}
-
-func (Codec) Decode(b []byte, v map[string]any) error {
- var buf bytes.Buffer
-
- _, err := buf.Write(b)
- if err != nil {
- return err
- }
-
- env, err := gotenv.StrictParse(&buf)
- if err != nil {
- return err
- }
-
- for key, value := range env {
- v[key] = value
- }
-
- return nil
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/dotenv/map_utils.go b/vendor/github.com/spf13/viper/internal/encoding/dotenv/map_utils.go
deleted file mode 100644
index 8bfe0a9de..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/dotenv/map_utils.go
+++ /dev/null
@@ -1,41 +0,0 @@
-package dotenv
-
-import (
- "strings"
-
- "github.com/spf13/cast"
-)
-
-// flattenAndMergeMap recursively flattens the given map into a new map
-// Code is based on the function with the same name in the main package.
-// TODO: move it to a common place.
-func flattenAndMergeMap(shadow, m map[string]any, prefix, delimiter string) map[string]any {
- if shadow != nil && prefix != "" && shadow[prefix] != nil {
- // prefix is shadowed => nothing more to flatten
- return shadow
- }
- if shadow == nil {
- shadow = make(map[string]any)
- }
-
- var m2 map[string]any
- if prefix != "" {
- prefix += delimiter
- }
- for k, val := range m {
- fullKey := prefix + k
- switch val := val.(type) {
- case map[string]any:
- m2 = val
- case map[any]any:
- m2 = cast.ToStringMap(val)
- default:
- // immediate value
- shadow[strings.ToLower(fullKey)] = val
- continue
- }
- // recursively merge to shadow map
- shadow = flattenAndMergeMap(shadow, m2, fullKey, delimiter)
- }
- return shadow
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/encoder.go b/vendor/github.com/spf13/viper/internal/encoding/encoder.go
deleted file mode 100644
index 659585962..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/encoder.go
+++ /dev/null
@@ -1,60 +0,0 @@
-package encoding
-
-import (
- "sync"
-)
-
-// Encoder encodes the contents of v into a byte representation.
-// It's primarily used for encoding a map[string]any into a file format.
-type Encoder interface {
- Encode(v map[string]any) ([]byte, error)
-}
-
-const (
- // ErrEncoderNotFound is returned when there is no encoder registered for a format.
- ErrEncoderNotFound = encodingError("encoder not found for this format")
-
- // ErrEncoderFormatAlreadyRegistered is returned when an encoder is already registered for a format.
- ErrEncoderFormatAlreadyRegistered = encodingError("encoder already registered for this format")
-)
-
-// EncoderRegistry can choose an appropriate Encoder based on the provided format.
-type EncoderRegistry struct {
- encoders map[string]Encoder
-
- mu sync.RWMutex
-}
-
-// NewEncoderRegistry returns a new, initialized EncoderRegistry.
-func NewEncoderRegistry() *EncoderRegistry {
- return &EncoderRegistry{
- encoders: make(map[string]Encoder),
- }
-}
-
-// RegisterEncoder registers an Encoder for a format.
-// Registering a Encoder for an already existing format is not supported.
-func (e *EncoderRegistry) RegisterEncoder(format string, enc Encoder) error {
- e.mu.Lock()
- defer e.mu.Unlock()
-
- if _, ok := e.encoders[format]; ok {
- return ErrEncoderFormatAlreadyRegistered
- }
-
- e.encoders[format] = enc
-
- return nil
-}
-
-func (e *EncoderRegistry) Encode(format string, v map[string]any) ([]byte, error) {
- e.mu.RLock()
- encoder, ok := e.encoders[format]
- e.mu.RUnlock()
-
- if !ok {
- return nil, ErrEncoderNotFound
- }
-
- return encoder.Encode(v)
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/error.go b/vendor/github.com/spf13/viper/internal/encoding/error.go
deleted file mode 100644
index e4cde02d7..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/error.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package encoding
-
-type encodingError string
-
-func (e encodingError) Error() string {
- return string(e)
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/hcl/codec.go b/vendor/github.com/spf13/viper/internal/encoding/hcl/codec.go
deleted file mode 100644
index d7fa8a1b7..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/hcl/codec.go
+++ /dev/null
@@ -1,40 +0,0 @@
-package hcl
-
-import (
- "bytes"
- "encoding/json"
-
- "github.com/hashicorp/hcl"
- "github.com/hashicorp/hcl/hcl/printer"
-)
-
-// Codec implements the encoding.Encoder and encoding.Decoder interfaces for HCL encoding.
-// TODO: add printer config to the codec?
-type Codec struct{}
-
-func (Codec) Encode(v map[string]any) ([]byte, error) {
- b, err := json.Marshal(v)
- if err != nil {
- return nil, err
- }
-
- // TODO: use printer.Format? Is the trailing newline an issue?
-
- ast, err := hcl.Parse(string(b))
- if err != nil {
- return nil, err
- }
-
- var buf bytes.Buffer
-
- err = printer.Fprint(&buf, ast.Node)
- if err != nil {
- return nil, err
- }
-
- return buf.Bytes(), nil
-}
-
-func (Codec) Decode(b []byte, v map[string]any) error {
- return hcl.Unmarshal(b, &v)
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/ini/codec.go b/vendor/github.com/spf13/viper/internal/encoding/ini/codec.go
deleted file mode 100644
index d91cf59d2..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/ini/codec.go
+++ /dev/null
@@ -1,99 +0,0 @@
-package ini
-
-import (
- "bytes"
- "sort"
- "strings"
-
- "github.com/spf13/cast"
- "gopkg.in/ini.v1"
-)
-
-// LoadOptions contains all customized options used for load data source(s).
-// This type is added here for convenience: this way consumers can import a single package called "ini".
-type LoadOptions = ini.LoadOptions
-
-// Codec implements the encoding.Encoder and encoding.Decoder interfaces for INI encoding.
-type Codec struct {
- KeyDelimiter string
- LoadOptions LoadOptions
-}
-
-func (c Codec) Encode(v map[string]any) ([]byte, error) {
- cfg := ini.Empty()
- ini.PrettyFormat = false
-
- flattened := map[string]any{}
-
- flattened = flattenAndMergeMap(flattened, v, "", c.keyDelimiter())
-
- keys := make([]string, 0, len(flattened))
-
- for key := range flattened {
- keys = append(keys, key)
- }
-
- sort.Strings(keys)
-
- for _, key := range keys {
- sectionName, keyName := "", key
-
- lastSep := strings.LastIndex(key, ".")
- if lastSep != -1 {
- sectionName = key[:(lastSep)]
- keyName = key[(lastSep + 1):]
- }
-
- // TODO: is this a good idea?
- if sectionName == "default" {
- sectionName = ""
- }
-
- cfg.Section(sectionName).Key(keyName).SetValue(cast.ToString(flattened[key]))
- }
-
- var buf bytes.Buffer
-
- _, err := cfg.WriteTo(&buf)
- if err != nil {
- return nil, err
- }
-
- return buf.Bytes(), nil
-}
-
-func (c Codec) Decode(b []byte, v map[string]any) error {
- cfg := ini.Empty(c.LoadOptions)
-
- err := cfg.Append(b)
- if err != nil {
- return err
- }
-
- sections := cfg.Sections()
-
- for i := 0; i < len(sections); i++ {
- section := sections[i]
- keys := section.Keys()
-
- for j := 0; j < len(keys); j++ {
- key := keys[j]
- value := cfg.Section(section.Name()).Key(key.Name()).String()
-
- deepestMap := deepSearch(v, strings.Split(section.Name(), c.keyDelimiter()))
-
- // set innermost value
- deepestMap[key.Name()] = value
- }
- }
-
- return nil
-}
-
-func (c Codec) keyDelimiter() string {
- if c.KeyDelimiter == "" {
- return "."
- }
-
- return c.KeyDelimiter
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/ini/map_utils.go b/vendor/github.com/spf13/viper/internal/encoding/ini/map_utils.go
deleted file mode 100644
index 490ab594e..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/ini/map_utils.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package ini
-
-import (
- "strings"
-
- "github.com/spf13/cast"
-)
-
-// THIS CODE IS COPIED HERE: IT SHOULD NOT BE MODIFIED
-// AT SOME POINT IT WILL BE MOVED TO A COMMON PLACE
-// deepSearch scans deep maps, following the key indexes listed in the
-// sequence "path".
-// The last value is expected to be another map, and is returned.
-//
-// In case intermediate keys do not exist, or map to a non-map value,
-// a new map is created and inserted, and the search continues from there:
-// the initial map "m" may be modified!
-func deepSearch(m map[string]any, path []string) map[string]any {
- for _, k := range path {
- m2, ok := m[k]
- if !ok {
- // intermediate key does not exist
- // => create it and continue from there
- m3 := make(map[string]any)
- m[k] = m3
- m = m3
- continue
- }
- m3, ok := m2.(map[string]any)
- if !ok {
- // intermediate key is a value
- // => replace with a new map
- m3 = make(map[string]any)
- m[k] = m3
- }
- // continue search from here
- m = m3
- }
- return m
-}
-
-// flattenAndMergeMap recursively flattens the given map into a new map
-// Code is based on the function with the same name in the main package.
-// TODO: move it to a common place.
-func flattenAndMergeMap(shadow, m map[string]any, prefix, delimiter string) map[string]any {
- if shadow != nil && prefix != "" && shadow[prefix] != nil {
- // prefix is shadowed => nothing more to flatten
- return shadow
- }
- if shadow == nil {
- shadow = make(map[string]any)
- }
-
- var m2 map[string]any
- if prefix != "" {
- prefix += delimiter
- }
- for k, val := range m {
- fullKey := prefix + k
- switch val := val.(type) {
- case map[string]any:
- m2 = val
- case map[any]any:
- m2 = cast.ToStringMap(val)
- default:
- // immediate value
- shadow[strings.ToLower(fullKey)] = val
- continue
- }
- // recursively merge to shadow map
- shadow = flattenAndMergeMap(shadow, m2, fullKey, delimiter)
- }
- return shadow
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/javaproperties/codec.go b/vendor/github.com/spf13/viper/internal/encoding/javaproperties/codec.go
deleted file mode 100644
index e92e5172c..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/javaproperties/codec.go
+++ /dev/null
@@ -1,86 +0,0 @@
-package javaproperties
-
-import (
- "bytes"
- "sort"
- "strings"
-
- "github.com/magiconair/properties"
- "github.com/spf13/cast"
-)
-
-// Codec implements the encoding.Encoder and encoding.Decoder interfaces for Java properties encoding.
-type Codec struct {
- KeyDelimiter string
-
- // Store read properties on the object so that we can write back in order with comments.
- // This will only be used if the configuration read is a properties file.
- // TODO: drop this feature in v2
- // TODO: make use of the global properties object optional
- Properties *properties.Properties
-}
-
-func (c *Codec) Encode(v map[string]any) ([]byte, error) {
- if c.Properties == nil {
- c.Properties = properties.NewProperties()
- }
-
- flattened := map[string]any{}
-
- flattened = flattenAndMergeMap(flattened, v, "", c.keyDelimiter())
-
- keys := make([]string, 0, len(flattened))
-
- for key := range flattened {
- keys = append(keys, key)
- }
-
- sort.Strings(keys)
-
- for _, key := range keys {
- _, _, err := c.Properties.Set(key, cast.ToString(flattened[key]))
- if err != nil {
- return nil, err
- }
- }
-
- var buf bytes.Buffer
-
- _, err := c.Properties.WriteComment(&buf, "#", properties.UTF8)
- if err != nil {
- return nil, err
- }
-
- return buf.Bytes(), nil
-}
-
-func (c *Codec) Decode(b []byte, v map[string]any) error {
- var err error
- c.Properties, err = properties.Load(b, properties.UTF8)
- if err != nil {
- return err
- }
-
- for _, key := range c.Properties.Keys() {
- // ignore existence check: we know it's there
- value, _ := c.Properties.Get(key)
-
- // recursively build nested maps
- path := strings.Split(key, c.keyDelimiter())
- lastKey := strings.ToLower(path[len(path)-1])
- deepestMap := deepSearch(v, path[0:len(path)-1])
-
- // set innermost value
- deepestMap[lastKey] = value
- }
-
- return nil
-}
-
-func (c Codec) keyDelimiter() string {
- if c.KeyDelimiter == "" {
- return "."
- }
-
- return c.KeyDelimiter
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/javaproperties/map_utils.go b/vendor/github.com/spf13/viper/internal/encoding/javaproperties/map_utils.go
deleted file mode 100644
index 6e1aff223..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/javaproperties/map_utils.go
+++ /dev/null
@@ -1,74 +0,0 @@
-package javaproperties
-
-import (
- "strings"
-
- "github.com/spf13/cast"
-)
-
-// THIS CODE IS COPIED HERE: IT SHOULD NOT BE MODIFIED
-// AT SOME POINT IT WILL BE MOVED TO A COMMON PLACE
-// deepSearch scans deep maps, following the key indexes listed in the
-// sequence "path".
-// The last value is expected to be another map, and is returned.
-//
-// In case intermediate keys do not exist, or map to a non-map value,
-// a new map is created and inserted, and the search continues from there:
-// the initial map "m" may be modified!
-func deepSearch(m map[string]any, path []string) map[string]any {
- for _, k := range path {
- m2, ok := m[k]
- if !ok {
- // intermediate key does not exist
- // => create it and continue from there
- m3 := make(map[string]any)
- m[k] = m3
- m = m3
- continue
- }
- m3, ok := m2.(map[string]any)
- if !ok {
- // intermediate key is a value
- // => replace with a new map
- m3 = make(map[string]any)
- m[k] = m3
- }
- // continue search from here
- m = m3
- }
- return m
-}
-
-// flattenAndMergeMap recursively flattens the given map into a new map
-// Code is based on the function with the same name in the main package.
-// TODO: move it to a common place.
-func flattenAndMergeMap(shadow, m map[string]any, prefix, delimiter string) map[string]any {
- if shadow != nil && prefix != "" && shadow[prefix] != nil {
- // prefix is shadowed => nothing more to flatten
- return shadow
- }
- if shadow == nil {
- shadow = make(map[string]any)
- }
-
- var m2 map[string]any
- if prefix != "" {
- prefix += delimiter
- }
- for k, val := range m {
- fullKey := prefix + k
- switch val := val.(type) {
- case map[string]any:
- m2 = val
- case map[any]any:
- m2 = cast.ToStringMap(val)
- default:
- // immediate value
- shadow[strings.ToLower(fullKey)] = val
- continue
- }
- // recursively merge to shadow map
- shadow = flattenAndMergeMap(shadow, m2, fullKey, delimiter)
- }
- return shadow
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/json/codec.go b/vendor/github.com/spf13/viper/internal/encoding/json/codec.go
deleted file mode 100644
index da7546b5a..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/json/codec.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package json
-
-import (
- "encoding/json"
-)
-
-// Codec implements the encoding.Encoder and encoding.Decoder interfaces for JSON encoding.
-type Codec struct{}
-
-func (Codec) Encode(v map[string]any) ([]byte, error) {
- // TODO: expose prefix and indent in the Codec as setting?
- return json.MarshalIndent(v, "", " ")
-}
-
-func (Codec) Decode(b []byte, v map[string]any) error {
- return json.Unmarshal(b, &v)
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/toml/codec.go b/vendor/github.com/spf13/viper/internal/encoding/toml/codec.go
deleted file mode 100644
index c70aa8d28..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/toml/codec.go
+++ /dev/null
@@ -1,16 +0,0 @@
-package toml
-
-import (
- "github.com/pelletier/go-toml/v2"
-)
-
-// Codec implements the encoding.Encoder and encoding.Decoder interfaces for TOML encoding.
-type Codec struct{}
-
-func (Codec) Encode(v map[string]any) ([]byte, error) {
- return toml.Marshal(v)
-}
-
-func (Codec) Decode(b []byte, v map[string]any) error {
- return toml.Unmarshal(b, &v)
-}
diff --git a/vendor/github.com/spf13/viper/internal/encoding/yaml/codec.go b/vendor/github.com/spf13/viper/internal/encoding/yaml/codec.go
deleted file mode 100644
index 036879249..000000000
--- a/vendor/github.com/spf13/viper/internal/encoding/yaml/codec.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package yaml
-
-import "gopkg.in/yaml.v3"
-
-// Codec implements the encoding.Encoder and encoding.Decoder interfaces for YAML encoding.
-type Codec struct{}
-
-func (Codec) Encode(v map[string]any) ([]byte, error) {
- return yaml.Marshal(v)
-}
-
-func (Codec) Decode(b []byte, v map[string]any) error {
- return yaml.Unmarshal(b, &v)
-}