71 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # File Source
 | |
| 
 | |
| The file source reads config from a file. 
 | |
| 
 | |
| It uses the File extension to determine the Format e.g `config.yaml` has the yaml format. 
 | |
| It does not make use of encoders or interpet the file data. If a file extension is not present 
 | |
| the source Format will default to the Encoder in options.
 | |
| 
 | |
| ## Example
 | |
| 
 | |
| A config file format in json
 | |
| 
 | |
| ```json
 | |
| {
 | |
|     "hosts": {
 | |
|         "database": {
 | |
|             "address": "10.0.0.1",
 | |
|             "port": 3306
 | |
|         },
 | |
|         "cache": {
 | |
|             "address": "10.0.0.2",
 | |
|             "port": 6379
 | |
|         }
 | |
|     }
 | |
| }
 | |
| ```
 | |
| 
 | |
| ## New Source
 | |
| 
 | |
| Specify file source with path to file. Path is optional and will default to `config.json`
 | |
| 
 | |
| ```go
 | |
| fileSource := file.NewSource(
 | |
| 	file.WithPath("/tmp/config.json"),
 | |
| )
 | |
| ```
 | |
| 
 | |
| ## File Format
 | |
| 
 | |
| To load different file formats e.g yaml, toml, xml simply specify them with their extension
 | |
| 
 | |
| ```
 | |
| fileSource := file.NewSource(
 | |
|         file.WithPath("/tmp/config.yaml"),
 | |
| )
 | |
| ```
 | |
| 
 | |
| If you want to specify a file without extension, ensure you set the encoder to the same format
 | |
| 
 | |
| ```
 | |
| e := toml.NewEncoder()
 | |
| 
 | |
| fileSource := file.NewSource(
 | |
|         file.WithPath("/tmp/config"),
 | |
| 	source.WithEncoder(e),
 | |
| )
 | |
| ```
 | |
| 
 | |
| ## Load Source
 | |
| 
 | |
| Load the source into config
 | |
| 
 | |
| ```go
 | |
| // Create new config
 | |
| conf := config.NewConfig()
 | |
| 
 | |
| // Load file source
 | |
| conf.Load(fileSource)
 | |
| ```
 | |
| 
 |