Commit d5d8d7ef by Torkel Ödegaard

minor setting refactorings

parent c1fd4265
......@@ -233,7 +233,7 @@ func (ss *SqlStore) buildConnectionString() (string, error) {
case migrator.SQLITE:
// special case for tests
if !filepath.IsAbs(ss.dbCfg.Path) {
ss.dbCfg.Path = filepath.Join(setting.DataPath, ss.dbCfg.Path)
ss.dbCfg.Path = filepath.Join(ss.Cfg.DataPath, ss.dbCfg.Path)
}
os.MkdirAll(path.Dir(ss.dbCfg.Path), os.ModePerm)
cnnstr = "file:" + ss.dbCfg.Path + "?cache=shared&mode=rwc"
......
......@@ -54,9 +54,7 @@ var (
ApplicationName string
// Paths
LogsPath string
HomePath string
DataPath string
PluginsPath string
CustomInitPath = "conf/custom.ini"
......@@ -187,11 +185,18 @@ var (
ImageUploadProvider string
)
// TODO move all global vars to this struct
type Cfg struct {
Raw *ini.File
// HTTP Server Settings
AppUrl string
AppSubUrl string
// Paths
ProvisioningPath string
DataPath string
LogsPath string
// SMTP email settings
Smtp SmtpSettings
......@@ -411,7 +416,7 @@ func loadSpecifedConfigFile(configFile string, masterFile *ini.File) error {
return nil
}
func loadConfiguration(args *CommandLineArgs) (*ini.File, error) {
func (cfg *Cfg) loadConfiguration(args *CommandLineArgs) (*ini.File, error) {
var err error
// load config defaults
......@@ -442,7 +447,7 @@ func loadConfiguration(args *CommandLineArgs) (*ini.File, error) {
// load specified config file
err = loadSpecifedConfigFile(args.Config, parsedFile)
if err != nil {
initLogging(parsedFile)
cfg.initLogging(parsedFile)
log.Fatal(3, err.Error())
}
......@@ -459,8 +464,8 @@ func loadConfiguration(args *CommandLineArgs) (*ini.File, error) {
evalConfigValues(parsedFile)
// update data path and logging config
DataPath = makeAbsolute(parsedFile.Section("paths").Key("data").String(), HomePath)
initLogging(parsedFile)
cfg.DataPath = makeAbsolute(parsedFile.Section("paths").Key("data").String(), HomePath)
cfg.initLogging(parsedFile)
return parsedFile, err
}
......@@ -517,7 +522,7 @@ func NewCfg() *Cfg {
func (cfg *Cfg) Load(args *CommandLineArgs) error {
setHomePath(args)
iniFile, err := loadConfiguration(args)
iniFile, err := cfg.loadConfiguration(args)
if err != nil {
return err
}
......@@ -538,6 +543,8 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error {
cfg.ProvisioningPath = makeAbsolute(iniFile.Section("paths").Key("provisioning").String(), HomePath)
server := iniFile.Section("server")
AppUrl, AppSubUrl = parseAppUrlAndSubUrl(server)
cfg.AppUrl = AppUrl
cfg.AppSubUrl = AppSubUrl
Protocol = HTTP
if server.Key("protocol").MustString("http") == "https" {
......@@ -662,7 +669,7 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error {
log.Fatal(4, "Invalid callback_url(%s): %s", cfg.RendererCallbackUrl, err)
}
}
cfg.ImagesDir = filepath.Join(DataPath, "png")
cfg.ImagesDir = filepath.Join(cfg.DataPath, "png")
cfg.PhantomDir = filepath.Join(HomePath, "tools/phantomjs")
cfg.TempDataLifetime = iniFile.Section("paths").Key("temp_data_lifetime").MustDuration(time.Second * 3600 * 24)
cfg.MetricsEndpointEnabled = iniFile.Section("metrics").Key("enabled").MustBool(true)
......@@ -720,7 +727,7 @@ func (cfg *Cfg) readSessionConfig() {
SessionOptions.IDLength = 16
if SessionOptions.Provider == "file" {
SessionOptions.ProviderConfig = makeAbsolute(SessionOptions.ProviderConfig, DataPath)
SessionOptions.ProviderConfig = makeAbsolute(SessionOptions.ProviderConfig, cfg.DataPath)
os.MkdirAll(path.Dir(SessionOptions.ProviderConfig), os.ModePerm)
}
......@@ -731,15 +738,15 @@ func (cfg *Cfg) readSessionConfig() {
SessionConnMaxLifetime = cfg.Raw.Section("session").Key("conn_max_lifetime").MustInt64(14400)
}
func initLogging(file *ini.File) {
func (cfg *Cfg) initLogging(file *ini.File) {
// split on comma
LogModes = strings.Split(file.Section("log").Key("mode").MustString("console"), ",")
logModes := strings.Split(file.Section("log").Key("mode").MustString("console"), ",")
// also try space
if len(LogModes) == 1 {
LogModes = strings.Split(file.Section("log").Key("mode").MustString("console"), " ")
if len(logModes) == 1 {
logModes = strings.Split(file.Section("log").Key("mode").MustString("console"), " ")
}
LogsPath = makeAbsolute(file.Section("paths").Key("logs").String(), HomePath)
log.ReadLoggingConfig(LogModes, LogsPath, file)
cfg.LogsPath = makeAbsolute(file.Section("paths").Key("logs").String(), HomePath)
log.ReadLoggingConfig(logModes, cfg.LogsPath, file)
}
func (cfg *Cfg) LogConfigSources() {
......@@ -763,8 +770,8 @@ func (cfg *Cfg) LogConfigSources() {
}
logger.Info("Path Home", "path", HomePath)
logger.Info("Path Data", "path", DataPath)
logger.Info("Path Logs", "path", LogsPath)
logger.Info("Path Data", "path", cfg.DataPath)
logger.Info("Path Logs", "path", cfg.LogsPath)
logger.Info("Path Plugins", "path", PluginsPath)
logger.Info("Path Provisioning", "path", cfg.ProvisioningPath)
logger.Info("App mode " + Env)
......
......@@ -30,8 +30,8 @@ func TestLoadingSettings(t *testing.T) {
cfg.Load(&CommandLineArgs{HomePath: "../../"})
So(AdminUser, ShouldEqual, "superduper")
So(DataPath, ShouldEqual, filepath.Join(HomePath, "data"))
So(LogsPath, ShouldEqual, filepath.Join(DataPath, "log"))
So(cfg.DataPath, ShouldEqual, filepath.Join(HomePath, "data"))
So(cfg.LogsPath, ShouldEqual, filepath.Join(cfg.DataPath, "log"))
})
Convey("Should replace password when defined in environment", func() {
......@@ -76,8 +76,8 @@ func TestLoadingSettings(t *testing.T) {
HomePath: "../../",
Args: []string{`cfg:paths.data=c:\tmp\data`, `cfg:paths.logs=c:\tmp\logs`},
})
So(DataPath, ShouldEqual, `c:\tmp\data`)
So(LogsPath, ShouldEqual, `c:\tmp\logs`)
So(cfg.DataPath, ShouldEqual, `c:\tmp\data`)
So(cfg.LogsPath, ShouldEqual, `c:\tmp\logs`)
} else {
cfg := NewCfg()
cfg.Load(&CommandLineArgs{
......@@ -85,8 +85,8 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{"cfg:paths.data=/tmp/data", "cfg:paths.logs=/tmp/logs"},
})
So(DataPath, ShouldEqual, "/tmp/data")
So(LogsPath, ShouldEqual, "/tmp/logs")
So(cfg.DataPath, ShouldEqual, "/tmp/data")
So(cfg.LogsPath, ShouldEqual, "/tmp/logs")
}
})
......@@ -112,7 +112,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{`cfg:default.paths.data=c:\tmp\data`},
})
So(DataPath, ShouldEqual, `c:\tmp\override`)
So(cfg.DataPath, ShouldEqual, `c:\tmp\override`)
} else {
cfg := NewCfg()
cfg.Load(&CommandLineArgs{
......@@ -121,7 +121,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{"cfg:default.paths.data=/tmp/data"},
})
So(DataPath, ShouldEqual, "/tmp/override")
So(cfg.DataPath, ShouldEqual, "/tmp/override")
}
})
......@@ -134,7 +134,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{`cfg:paths.data=c:\tmp\data`},
})
So(DataPath, ShouldEqual, `c:\tmp\data`)
So(cfg.DataPath, ShouldEqual, `c:\tmp\data`)
} else {
cfg := NewCfg()
cfg.Load(&CommandLineArgs{
......@@ -143,7 +143,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{"cfg:paths.data=/tmp/data"},
})
So(DataPath, ShouldEqual, "/tmp/data")
So(cfg.DataPath, ShouldEqual, "/tmp/data")
}
})
......@@ -156,7 +156,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{"cfg:paths.data=${GF_DATA_PATH}"},
})
So(DataPath, ShouldEqual, `c:\tmp\env_override`)
So(cfg.DataPath, ShouldEqual, `c:\tmp\env_override`)
} else {
os.Setenv("GF_DATA_PATH", "/tmp/env_override")
cfg := NewCfg()
......@@ -165,7 +165,7 @@ func TestLoadingSettings(t *testing.T) {
Args: []string{"cfg:paths.data=${GF_DATA_PATH}"},
})
So(DataPath, ShouldEqual, "/tmp/env_override")
So(cfg.DataPath, ShouldEqual, "/tmp/env_override")
}
})
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment