mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 04:52:24 -05:00 
			
		
		
		
	[chore] bumps our spf13/viper version (#3943)
* bumps our spf13/viper version * fixes the one breaking change
This commit is contained in:
		
					parent
					
						
							
								1bf40e755c
							
						
					
				
			
			
				commit
				
					
						f46e490c30
					
				
			
		
					 147 changed files with 4637 additions and 18493 deletions
				
			
		
							
								
								
									
										61
									
								
								vendor/github.com/spf13/viper/internal/encoding/decoder.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										61
									
								
								vendor/github.com/spf13/viper/internal/encoding/decoder.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -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) | ||||
| } | ||||
							
								
								
									
										60
									
								
								vendor/github.com/spf13/viper/internal/encoding/encoder.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										60
									
								
								vendor/github.com/spf13/viper/internal/encoding/encoder.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -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) | ||||
| } | ||||
							
								
								
									
										7
									
								
								vendor/github.com/spf13/viper/internal/encoding/error.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/spf13/viper/internal/encoding/error.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,7 +0,0 @@ | |||
| package encoding | ||||
| 
 | ||||
| type encodingError string | ||||
| 
 | ||||
| func (e encodingError) Error() string { | ||||
| 	return string(e) | ||||
| } | ||||
							
								
								
									
										40
									
								
								vendor/github.com/spf13/viper/internal/encoding/hcl/codec.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								vendor/github.com/spf13/viper/internal/encoding/hcl/codec.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -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) | ||||
| } | ||||
							
								
								
									
										99
									
								
								vendor/github.com/spf13/viper/internal/encoding/ini/codec.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										99
									
								
								vendor/github.com/spf13/viper/internal/encoding/ini/codec.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -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 | ||||
| } | ||||
							
								
								
									
										74
									
								
								vendor/github.com/spf13/viper/internal/encoding/ini/map_utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										74
									
								
								vendor/github.com/spf13/viper/internal/encoding/ini/map_utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -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 | ||||
| } | ||||
							
								
								
									
										86
									
								
								vendor/github.com/spf13/viper/internal/encoding/javaproperties/codec.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										86
									
								
								vendor/github.com/spf13/viper/internal/encoding/javaproperties/codec.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -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 | ||||
| } | ||||
							
								
								
									
										74
									
								
								vendor/github.com/spf13/viper/internal/encoding/javaproperties/map_utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										74
									
								
								vendor/github.com/spf13/viper/internal/encoding/javaproperties/map_utils.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -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 | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue