refactor: move config handler to internal
This commit is contained in:
parent
858ba57c17
commit
5e4e681bbd
2 changed files with 1 additions and 1 deletions
44
internal/config/viper.go
Normal file
44
internal/config/viper.go
Normal file
|
@ -0,0 +1,44 @@
|
|||
package config
|
||||
|
||||
import (
|
||||
"github.com/spf13/viper"
|
||||
"log"
|
||||
)
|
||||
|
||||
type AppConfig struct {
|
||||
Port string
|
||||
Private bool
|
||||
TemplateDir string
|
||||
LogDir string
|
||||
PasteDir string
|
||||
Expire int // Add an expiration setting
|
||||
}
|
||||
|
||||
func LoadConfig() (*AppConfig, error) {
|
||||
var config AppConfig
|
||||
|
||||
viper.SetConfigName("config") // name of the config file (without extension)
|
||||
viper.AddConfigPath(".") // look in the current directory for the config file
|
||||
viper.AutomaticEnv() // read in environment variables that match
|
||||
|
||||
viper.SetDefault("Port", "8080")
|
||||
viper.SetDefault("Private", false)
|
||||
viper.SetDefault("TemplateDir", "templates")
|
||||
viper.SetDefault("LogDir", "logs")
|
||||
viper.SetDefault("PasteDir", "pastes")
|
||||
viper.SetDefault("Expire", 24) // in hours
|
||||
viper.SetDefault("Metrics", false)
|
||||
|
||||
// read the configuration file if it's present
|
||||
// goblin can also be configured through command lines during runtime
|
||||
if err := viper.ReadInConfig(); err != nil {
|
||||
log.Printf("Failed to read config file: %v\n", err)
|
||||
}
|
||||
|
||||
// Unmarshal the configuration into the AppConfig struct
|
||||
if err := viper.Unmarshal(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &config, nil
|
||||
}
|
Reference in a new issue