Improviong dynamic load of configs by putting only one variable one
Cette révision appartient à :
Parent
cccd389ccd
révision
4714c5c0f5
|
@ -9,16 +9,9 @@ import (
|
||||||
yaml "gopkg.in/yaml.v2"
|
yaml "gopkg.in/yaml.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
|
||||||
// DefaultConfigPath : path to the default config file (please do not change it)
|
|
||||||
DefaultConfigPath = "config/default_config.yml"
|
|
||||||
// ConfigPath : path to the user specific config file (please do not change it)
|
|
||||||
ConfigPath = "config/config.yml"
|
|
||||||
)
|
|
||||||
|
|
||||||
var config *Config
|
var config *Config
|
||||||
var once sync.Once
|
var once sync.Once
|
||||||
var configpaths = []string{DefaultConfigPath, ConfigPath}
|
var Configpaths = []string{"config/default_config.yml", "config/config.yml"}
|
||||||
|
|
||||||
func Get() *Config {
|
func Get() *Config {
|
||||||
once.Do(func() {
|
once.Do(func() {
|
||||||
|
@ -60,13 +53,13 @@ func init() {
|
||||||
|
|
||||||
// Reload the configuration from the files provided in the config variables
|
// Reload the configuration from the files provided in the config variables
|
||||||
func Reload() {
|
func Reload() {
|
||||||
configor.Load(Get(), configpaths...)
|
configor.Load(Get(), Configpaths...)
|
||||||
}
|
}
|
||||||
|
|
||||||
// BindFlags returns a function which is to be used after
|
// BindFlags returns a function which is to be used after
|
||||||
// flag.Parse to check and copy the flags' values to the Config instance.
|
// flag.Parse to check and copy the flags' values to the Config instance.
|
||||||
func BindFlags() func() {
|
func BindFlags() func() {
|
||||||
confFile := flag.String("conf", ConfigPath, "path to the configuration file")
|
confFile := flag.String("conf", Configpaths[1], "path to the configuration file")
|
||||||
flag.StringVar(&Get().DBType, "dbtype", Get().DBType, "database backend")
|
flag.StringVar(&Get().DBType, "dbtype", Get().DBType, "database backend")
|
||||||
flag.StringVar(&Get().Host, "host", Get().Host, "binding address of the server")
|
flag.StringVar(&Get().Host, "host", Get().Host, "binding address of the server")
|
||||||
flag.IntVar(&Get().Port, "port", Get().Port, "port of the server")
|
flag.IntVar(&Get().Port, "port", Get().Port, "port of the server")
|
||||||
|
@ -74,7 +67,7 @@ func BindFlags() func() {
|
||||||
flag.StringVar(&Get().DBLogMode, "dblogmode", Get().DBLogMode, "database log verbosity (errors only by default)")
|
flag.StringVar(&Get().DBLogMode, "dblogmode", Get().DBLogMode, "database log verbosity (errors only by default)")
|
||||||
return func() {
|
return func() {
|
||||||
if *confFile != "" {
|
if *confFile != "" {
|
||||||
configpaths = append(configpaths, *confFile)
|
Configpaths = append(Configpaths, *confFile)
|
||||||
Reload()
|
Reload()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
ConfigPath = "config.yml"
|
Configpaths = []string{"config.yml", "default_config.yml"}
|
||||||
DefaultConfigPath = "default_config.yml"
|
|
||||||
Reload()
|
Reload()
|
||||||
return
|
return
|
||||||
}()
|
}()
|
||||||
|
|
|
@ -11,8 +11,8 @@ import (
|
||||||
|
|
||||||
// run before config/parse.go:init()
|
// run before config/parse.go:init()
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
config.ConfigPath = path.Join("..", config.ConfigPath)
|
config.Configpaths[1] = path.Join("..", config.Configpaths[1])
|
||||||
config.DefaultConfigPath = path.Join("..", config.DefaultConfigPath)
|
config.Configpaths[0] = path.Join("..", config.Configpaths[0])
|
||||||
config.Reload()
|
config.Reload()
|
||||||
return
|
return
|
||||||
}()
|
}()
|
||||||
|
|
|
@ -21,8 +21,8 @@ import (
|
||||||
// run before router/init.go:init()
|
// run before router/init.go:init()
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
gin.SetMode(gin.TestMode)
|
gin.SetMode(gin.TestMode)
|
||||||
config.ConfigPath = path.Join("..", config.ConfigPath)
|
config.Configpaths[1] = path.Join("..", config.Configpaths[1])
|
||||||
config.DefaultConfigPath = path.Join("..", config.DefaultConfigPath)
|
config.Configpaths[0] = path.Join("..", config.Configpaths[0])
|
||||||
config.Reload()
|
config.Reload()
|
||||||
categories.InitCategories()
|
categories.InitCategories()
|
||||||
return
|
return
|
||||||
|
|
|
@ -26,8 +26,8 @@ import (
|
||||||
// run before router/init.go:init()
|
// run before router/init.go:init()
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
gin.SetMode(gin.TestMode)
|
gin.SetMode(gin.TestMode)
|
||||||
config.ConfigPath = path.Join("..", config.ConfigPath)
|
config.Configpaths[1] = path.Join("..", config.Configpaths[1])
|
||||||
config.DefaultConfigPath = path.Join("..", config.DefaultConfigPath)
|
config.Configpaths[0] = path.Join("..", config.Configpaths[0])
|
||||||
config.Reload()
|
config.Reload()
|
||||||
return
|
return
|
||||||
}()
|
}()
|
||||||
|
|
|
@ -13,8 +13,8 @@ import (
|
||||||
|
|
||||||
// run before config/parse.go:init()
|
// run before config/parse.go:init()
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
config.ConfigPath = path.Join("..", "..", config.ConfigPath)
|
config.Configpaths[1] = path.Join("..", "..", config.Configpaths[1])
|
||||||
config.DefaultConfigPath = path.Join("..", "..", config.DefaultConfigPath)
|
config.Configpaths[0] = path.Join("..", "..", config.Configpaths[0])
|
||||||
config.Reload()
|
config.Reload()
|
||||||
return
|
return
|
||||||
}()
|
}()
|
||||||
|
|
|
@ -11,8 +11,8 @@ import (
|
||||||
|
|
||||||
// run before config/parse.go:init()
|
// run before config/parse.go:init()
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
config.ConfigPath = path.Join("..", config.ConfigPath)
|
config.Configpaths[1] = path.Join("..", config.Configpaths[1])
|
||||||
config.DefaultConfigPath = path.Join("..", config.DefaultConfigPath)
|
config.Configpaths[0] = path.Join("..", config.Configpaths[0])
|
||||||
config.Reload()
|
config.Reload()
|
||||||
return
|
return
|
||||||
}()
|
}()
|
||||||
|
|
|
@ -17,8 +17,8 @@ import (
|
||||||
|
|
||||||
// run before config/parse.go:init()
|
// run before config/parse.go:init()
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
config.ConfigPath = path.Join("..", "..", config.ConfigPath)
|
config.Configpaths[1] = path.Join("..", "..", config.Configpaths[1])
|
||||||
config.DefaultConfigPath = path.Join("..", "..", config.DefaultConfigPath)
|
config.Configpaths[0] = path.Join("..", "..", config.Configpaths[0])
|
||||||
config.Reload()
|
config.Reload()
|
||||||
return
|
return
|
||||||
}()
|
}()
|
||||||
|
|
|
@ -12,8 +12,8 @@ import (
|
||||||
|
|
||||||
// run before config/parse.go:init()
|
// run before config/parse.go:init()
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
config.ConfigPath = path.Join("..", "..", "..", config.ConfigPath)
|
config.Configpaths[1] = path.Join("..", "..", "..", config.Configpaths[1])
|
||||||
config.DefaultConfigPath = path.Join("..", "..", "..", config.DefaultConfigPath)
|
config.Configpaths[0] = path.Join("..", "..", "..", config.Configpaths[0])
|
||||||
config.Reload()
|
config.Reload()
|
||||||
categories.InitCategories()
|
categories.InitCategories()
|
||||||
return
|
return
|
||||||
|
|
|
@ -14,8 +14,8 @@ import (
|
||||||
|
|
||||||
// run before config/parse.go:init()
|
// run before config/parse.go:init()
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
config.ConfigPath = path.Join("..", "..", config.ConfigPath)
|
config.Configpaths[1] = path.Join("..", "..", config.Configpaths[1])
|
||||||
config.DefaultConfigPath = path.Join("..", "..", config.DefaultConfigPath)
|
config.Configpaths[0] = path.Join("..", "..", config.Configpaths[0])
|
||||||
config.Reload()
|
config.Reload()
|
||||||
config.Get().I18n.Directory = path.Join("..", "..", config.Get().I18n.Directory)
|
config.Get().I18n.Directory = path.Join("..", "..", config.Get().I18n.Directory)
|
||||||
return
|
return
|
||||||
|
|
|
@ -13,8 +13,8 @@ import (
|
||||||
|
|
||||||
// run before config/parse.go:init()
|
// run before config/parse.go:init()
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
config.ConfigPath = path.Join("..", "..", "..", config.ConfigPath)
|
config.Configpaths[1] = path.Join("..", "..", "..", config.Configpaths[1])
|
||||||
config.DefaultConfigPath = path.Join("..", "..", "..", config.DefaultConfigPath)
|
config.Configpaths[0] = path.Join("..", "..", "..", config.Configpaths[0])
|
||||||
config.Reload()
|
config.Reload()
|
||||||
config.Get().I18n.Directory = path.Join("..", "..", "..", config.Get().I18n.Directory)
|
config.Get().I18n.Directory = path.Join("..", "..", "..", config.Get().I18n.Directory)
|
||||||
categories.InitCategories()
|
categories.InitCategories()
|
||||||
|
|
|
@ -12,8 +12,8 @@ import (
|
||||||
|
|
||||||
// run before config/parse.go:init()
|
// run before config/parse.go:init()
|
||||||
var _ = func() (_ struct{}) {
|
var _ = func() (_ struct{}) {
|
||||||
config.ConfigPath = path.Join("..", "..", config.ConfigPath)
|
config.Configpaths[1] = path.Join("..", "..", config.Configpaths[1])
|
||||||
config.DefaultConfigPath = path.Join("..", "..", config.DefaultConfigPath)
|
config.Configpaths[0] = path.Join("..", "..", config.Configpaths[0])
|
||||||
config.Reload()
|
config.Reload()
|
||||||
return
|
return
|
||||||
}()
|
}()
|
||||||
|
|
Référencer dans un nouveau ticket