Merge setting.InitXXX into one function with options (#24389)
This PR will merge 3 Init functions on setting packages as 1 and introduce an options struct.
This commit is contained in:
parent
a2fe68e50b
commit
377a0a20f0
28 changed files with 104 additions and 137 deletions
|
@ -44,8 +44,7 @@ func (w *wrappedLevelLogger) Log(skip int, level log.Level, format string, v ...
|
|||
}
|
||||
|
||||
func initDBDisableConsole(ctx context.Context, disableConsole bool) error {
|
||||
setting.InitProviderFromExistingFile()
|
||||
setting.LoadCommonSettings()
|
||||
setting.Init(&setting.Options{})
|
||||
setting.LoadDBSetting()
|
||||
setting.InitSQLLog(disableConsole)
|
||||
if err := db.InitEngine(ctx); err != nil {
|
||||
|
|
|
@ -66,8 +66,7 @@ func checkConfigurationFiles(ctx context.Context, logger log.Logger, autofix boo
|
|||
return err
|
||||
}
|
||||
|
||||
setting.InitProviderFromExistingFile()
|
||||
setting.LoadCommonSettings()
|
||||
setting.Init(&setting.Options{})
|
||||
|
||||
configurationFiles := []configurationFile{
|
||||
{"Configuration File Path", setting.CustomConf, false, true, false},
|
||||
|
|
|
@ -28,8 +28,9 @@ var localMetas = map[string]string{
|
|||
}
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
setting.InitProviderAllowEmpty()
|
||||
setting.LoadCommonSettings()
|
||||
setting.Init(&setting.Options{
|
||||
AllowEmpty: true,
|
||||
})
|
||||
if err := git.InitSimple(context.Background()); err != nil {
|
||||
log.Fatal("git init failed, err: %v", err)
|
||||
}
|
||||
|
|
|
@ -33,8 +33,9 @@ var localMetas = map[string]string{
|
|||
}
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
setting.InitProviderAllowEmpty()
|
||||
setting.LoadCommonSettings()
|
||||
setting.Init(&setting.Options{
|
||||
AllowEmpty: true,
|
||||
})
|
||||
if err := git.InitSimple(context.Background()); err != nil {
|
||||
log.Fatal("git init failed, err: %v", err)
|
||||
}
|
||||
|
|
|
@ -35,10 +35,9 @@ type ConfigProvider interface {
|
|||
}
|
||||
|
||||
type iniFileConfigProvider struct {
|
||||
opts *Options
|
||||
*ini.File
|
||||
filepath string // the ini file path
|
||||
newFile bool // whether the file has not existed previously
|
||||
allowEmpty bool // whether not finding configuration files is allowed (only true for the tests)
|
||||
newFile bool // whether the file has not existed previously
|
||||
}
|
||||
|
||||
// NewEmptyConfigProvider create a new empty config provider
|
||||
|
@ -66,41 +65,47 @@ func newConfigProviderFromData(configContent string) (ConfigProvider, error) {
|
|||
}, nil
|
||||
}
|
||||
|
||||
type Options struct {
|
||||
CustomConf string // the ini file path
|
||||
AllowEmpty bool // whether not finding configuration files is allowed (only true for the tests)
|
||||
ExtraConfig string
|
||||
DisableLoadCommonSettings bool
|
||||
}
|
||||
|
||||
// newConfigProviderFromFile load configuration from file.
|
||||
// NOTE: do not print any log except error.
|
||||
func newConfigProviderFromFile(customConf string, allowEmpty bool, extraConfig string) (*iniFileConfigProvider, error) {
|
||||
func newConfigProviderFromFile(opts *Options) (*iniFileConfigProvider, error) {
|
||||
cfg := ini.Empty()
|
||||
newFile := true
|
||||
|
||||
if customConf != "" {
|
||||
isFile, err := util.IsFile(customConf)
|
||||
if opts.CustomConf != "" {
|
||||
isFile, err := util.IsFile(opts.CustomConf)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to check if %s is a file. Error: %v", customConf, err)
|
||||
return nil, fmt.Errorf("unable to check if %s is a file. Error: %v", opts.CustomConf, err)
|
||||
}
|
||||
if isFile {
|
||||
if err := cfg.Append(customConf); err != nil {
|
||||
return nil, fmt.Errorf("failed to load custom conf '%s': %v", customConf, err)
|
||||
if err := cfg.Append(opts.CustomConf); err != nil {
|
||||
return nil, fmt.Errorf("failed to load custom conf '%s': %v", opts.CustomConf, err)
|
||||
}
|
||||
newFile = false
|
||||
}
|
||||
}
|
||||
|
||||
if newFile && !allowEmpty {
|
||||
if newFile && !opts.AllowEmpty {
|
||||
return nil, fmt.Errorf("unable to find configuration file: %q, please ensure you are running in the correct environment or set the correct configuration file with -c", CustomConf)
|
||||
}
|
||||
|
||||
if extraConfig != "" {
|
||||
if err := cfg.Append([]byte(extraConfig)); err != nil {
|
||||
if opts.ExtraConfig != "" {
|
||||
if err := cfg.Append([]byte(opts.ExtraConfig)); err != nil {
|
||||
return nil, fmt.Errorf("unable to append more config: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
cfg.NameMapper = ini.SnackCase
|
||||
return &iniFileConfigProvider{
|
||||
File: cfg,
|
||||
filepath: customConf,
|
||||
newFile: newFile,
|
||||
allowEmpty: allowEmpty,
|
||||
opts: opts,
|
||||
File: cfg,
|
||||
newFile: newFile,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -123,8 +128,8 @@ func (p *iniFileConfigProvider) DeleteSection(name string) error {
|
|||
|
||||
// Save save the content into file
|
||||
func (p *iniFileConfigProvider) Save() error {
|
||||
if p.filepath == "" {
|
||||
if !p.allowEmpty {
|
||||
if p.opts.CustomConf == "" {
|
||||
if !p.opts.AllowEmpty {
|
||||
return fmt.Errorf("custom config path must not be empty")
|
||||
}
|
||||
return nil
|
||||
|
@ -135,8 +140,8 @@ func (p *iniFileConfigProvider) Save() error {
|
|||
return fmt.Errorf("failed to create '%s': %v", CustomConf, err)
|
||||
}
|
||||
}
|
||||
if err := p.SaveTo(p.filepath); err != nil {
|
||||
return fmt.Errorf("failed to save '%s': %v", p.filepath, err)
|
||||
if err := p.SaveTo(p.opts.CustomConf); err != nil {
|
||||
return fmt.Errorf("failed to save '%s': %v", p.opts.CustomConf, err)
|
||||
}
|
||||
|
||||
// Change permissions to be more restrictive
|
||||
|
|
|
@ -15,7 +15,6 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"code.gitea.io/gitea/modules/auth/password/hash"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/user"
|
||||
)
|
||||
|
@ -203,46 +202,20 @@ func PrepareAppDataPath() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// InitProviderFromExistingFile initializes config provider from an existing config file (app.ini)
|
||||
func InitProviderFromExistingFile() {
|
||||
func Init(opts *Options) {
|
||||
if opts.CustomConf == "" {
|
||||
opts.CustomConf = CustomConf
|
||||
}
|
||||
var err error
|
||||
CfgProvider, err = newConfigProviderFromFile(CustomConf, false, "")
|
||||
CfgProvider, err = newConfigProviderFromFile(opts)
|
||||
if err != nil {
|
||||
log.Fatal("InitProviderFromExistingFile: %v", err)
|
||||
log.Fatal("Init[%v]: %v", opts, err)
|
||||
}
|
||||
}
|
||||
|
||||
// InitProviderAllowEmpty initializes config provider from file, it's also fine that if the config file (app.ini) doesn't exist
|
||||
func InitProviderAllowEmpty() {
|
||||
var err error
|
||||
CfgProvider, err = newConfigProviderFromFile(CustomConf, true, "")
|
||||
if err != nil {
|
||||
log.Fatal("InitProviderAllowEmpty: %v", err)
|
||||
if !opts.DisableLoadCommonSettings {
|
||||
loadCommonSettingsFrom(CfgProvider)
|
||||
}
|
||||
}
|
||||
|
||||
// InitProviderAndLoadCommonSettingsForTest initializes config provider and load common setttings for tests
|
||||
func InitProviderAndLoadCommonSettingsForTest(extraConfigs ...string) {
|
||||
var err error
|
||||
CfgProvider, err = newConfigProviderFromFile(CustomConf, true, strings.Join(extraConfigs, "\n"))
|
||||
if err != nil {
|
||||
log.Fatal("InitProviderAndLoadCommonSettingsForTest: %v", err)
|
||||
}
|
||||
loadCommonSettingsFrom(CfgProvider)
|
||||
if err := PrepareAppDataPath(); err != nil {
|
||||
log.Fatal("Can not prepare APP_DATA_PATH: %v", err)
|
||||
}
|
||||
// register the dummy hash algorithm function used in the test fixtures
|
||||
_ = hash.Register("dummy", hash.NewDummyHasher)
|
||||
|
||||
PasswordHashAlgo, _ = hash.SetDefaultPasswordHashAlgorithm("dummy")
|
||||
}
|
||||
|
||||
// LoadCommonSettings loads common configurations from a configuration provider.
|
||||
func LoadCommonSettings() {
|
||||
loadCommonSettingsFrom(CfgProvider)
|
||||
}
|
||||
|
||||
// loadCommonSettingsFrom loads common configurations from a configuration provider.
|
||||
func loadCommonSettingsFrom(cfg ConfigProvider) {
|
||||
// WARNNING: don't change the sequence except you know what you are doing.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue