From cc1d61f1f5d4b2e60135186e44550745f0e13f0f Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Sat, 24 Jun 2023 17:13:35 +0800 Subject: [PATCH] Use InitWorkPathAndCfgProvider for environment-to-ini to avoid unnecessary checks (#25480) Fix #25481 The `InitWorkPathAndCommonConfig` calls `LoadCommonSettings` which does many checks like "current user is root or not". Some commands like "environment-to-ini" shouldn't do such check, because it might be run with "root" user at the moment (eg: the docker's setup script) ps: in the future, the docker's setup script should be improved to avoid Gitea's command running with "root" --- contrib/environment-to-ini/environment-to-ini.go | 2 +- modules/setting/path.go | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/contrib/environment-to-ini/environment-to-ini.go b/contrib/environment-to-ini/environment-to-ini.go index 2cdf4e3943..230ed58269 100644 --- a/contrib/environment-to-ini/environment-to-ini.go +++ b/contrib/environment-to-ini/environment-to-ini.go @@ -88,7 +88,7 @@ func main() { } func runEnvironmentToIni(c *cli.Context) error { - setting.InitWorkPathAndCommonConfig(os.Getenv, setting.ArgWorkPathAndCustomConf{ + setting.InitWorkPathAndCfgProvider(os.Getenv, setting.ArgWorkPathAndCustomConf{ WorkPath: c.String("work-path"), CustomPath: c.String("custom-path"), CustomConf: c.String("config"), diff --git a/modules/setting/path.go b/modules/setting/path.go index 91bb2e9bb7..163f1d1590 100644 --- a/modules/setting/path.go +++ b/modules/setting/path.go @@ -89,6 +89,12 @@ func (s *stringWithDefault) Set(v string) { // InitWorkPathAndCommonConfig will set AppWorkPath, CustomPath and CustomConf, init default config provider by CustomConf and load common settings, func InitWorkPathAndCommonConfig(getEnvFn func(name string) string, args ArgWorkPathAndCustomConf) { + InitWorkPathAndCfgProvider(getEnvFn, args) + LoadCommonSettings() +} + +// InitWorkPathAndCfgProvider will set AppWorkPath, CustomPath and CustomConf, init default config provider by CustomConf +func InitWorkPathAndCfgProvider(getEnvFn func(name string) string, args ArgWorkPathAndCustomConf) { tryAbsPath := func(paths ...string) string { s := paths[len(paths)-1] for i := len(paths) - 2; i >= 0; i-- { @@ -186,6 +192,4 @@ func InitWorkPathAndCommonConfig(getEnvFn func(name string) string, args ArgWork AppWorkPath = tmpWorkPath.Value CustomPath = tmpCustomPath.Value CustomConf = tmpCustomConf.Value - - LoadCommonSettings() }