feat: add config loader
This commit is contained in:
		
							
								
								
									
										43
									
								
								internal/pkg/config/config.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								internal/pkg/config/config.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
package config
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/spf13/viper"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	DEFAULT_CONFIG_FILE_NAME = "weapp"
 | 
			
		||||
	DEFAULT_CONFIG_FILE_TYPE = "yaml"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var defaultPaths = []string{
 | 
			
		||||
	".",
 | 
			
		||||
	"./conf",
 | 
			
		||||
	"./config",
 | 
			
		||||
	"../conf",
 | 
			
		||||
	"../config",
 | 
			
		||||
	"/conf",
 | 
			
		||||
	"/config",
 | 
			
		||||
	"${HOME}/config",
 | 
			
		||||
	"/",
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func AutoLoad() error {
 | 
			
		||||
	return LoadConfig(DEFAULT_CONFIG_FILE_NAME, DEFAULT_CONFIG_FILE_TYPE)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func LoadConfig(fileName, filetype string, paths ...string) error {
 | 
			
		||||
	for _, path := range defaultPaths {
 | 
			
		||||
		viper.AddConfigPath(path)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, path := range paths {
 | 
			
		||||
		viper.AddConfigPath(path)
 | 
			
		||||
	}
 | 
			
		||||
	viper.SetConfigName(fileName)
 | 
			
		||||
	viper.SetConfigType(filetype)
 | 
			
		||||
	if err := viper.ReadInConfig(); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user