mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 12:02:26 -05:00 
			
		
		
		
	Implement Cobra CLI tooling, Viper config tooling (#336)
* start pulling out + replacing urfave and config * replace many many instances of config * move more stuff => viper * properly remove urfave * move some flags to root command * add testrig commands to root * alias config file keys * start adding cli parsing tests * reorder viper init * remove config path alias * fmt * change config file keys to non-nested * we're more or less in business now * tidy up the common func * go fmt * get tests passing again * add note about the cliparsing tests * reorganize * update docs with changes * structure cmd dir better * rename + move some files around * fix dangling comma
This commit is contained in:
		
					parent
					
						
							
								182b4eea73
							
						
					
				
			
			
				commit
				
					
						0884f89431
					
				
			
		
					 487 changed files with 46667 additions and 8831 deletions
				
			
		
							
								
								
									
										60
									
								
								vendor/github.com/spf13/viper/internal/encoding/encoder.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								vendor/github.com/spf13/viper/internal/encoding/encoder.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,60 @@ | |||
| package encoding | ||||
| 
 | ||||
| import ( | ||||
| 	"sync" | ||||
| ) | ||||
| 
 | ||||
| // Encoder encodes the contents of v into a byte representation. | ||||
| // It's primarily used for encoding a map[string]interface{} into a file format. | ||||
| type Encoder interface { | ||||
| 	Encode(v interface{}) ([]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 interface{}) ([]byte, error) { | ||||
| 	e.mu.RLock() | ||||
| 	encoder, ok := e.encoders[format] | ||||
| 	e.mu.RUnlock() | ||||
| 
 | ||||
| 	if !ok { | ||||
| 		return nil, ErrEncoderNotFound | ||||
| 	} | ||||
| 
 | ||||
| 	return encoder.Encode(v) | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue