mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 15:04:00 +01:00 
			
		
		
		
	Install now submits the proper database name and is properly set using the config.Value class. This extends the getter functionality so now config.Value can be used to both get and set values.
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2023 The Gitea Authors. All rights reserved.
 | 
						|
// SPDX-License-Identifier: MIT
 | 
						|
 | 
						|
package setting
 | 
						|
 | 
						|
import (
 | 
						|
	"sync"
 | 
						|
 | 
						|
	"code.gitea.io/gitea/modules/log"
 | 
						|
	"code.gitea.io/gitea/modules/setting/config"
 | 
						|
)
 | 
						|
 | 
						|
type PictureStruct struct {
 | 
						|
	EnableGravatar        *config.Value[bool]
 | 
						|
	EnableFederatedAvatar *config.Value[bool]
 | 
						|
}
 | 
						|
 | 
						|
type OpenWithEditorApp struct {
 | 
						|
	DisplayName string
 | 
						|
	OpenURL     string
 | 
						|
}
 | 
						|
 | 
						|
type OpenWithEditorAppsType []OpenWithEditorApp
 | 
						|
 | 
						|
func (t OpenWithEditorAppsType) ToTextareaString() string {
 | 
						|
	ret := ""
 | 
						|
	for _, app := range t {
 | 
						|
		ret += app.DisplayName + " = " + app.OpenURL + "\n"
 | 
						|
	}
 | 
						|
	return ret
 | 
						|
}
 | 
						|
 | 
						|
func DefaultOpenWithEditorApps() OpenWithEditorAppsType {
 | 
						|
	return OpenWithEditorAppsType{
 | 
						|
		{
 | 
						|
			DisplayName: "VS Code",
 | 
						|
			OpenURL:     "vscode://vscode.git/clone?url={url}",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			DisplayName: "VSCodium",
 | 
						|
			OpenURL:     "vscodium://vscode.git/clone?url={url}",
 | 
						|
		},
 | 
						|
		{
 | 
						|
			DisplayName: "Intellij IDEA",
 | 
						|
			OpenURL:     "jetbrains://idea/checkout/git?idea.required.plugins.id=Git4Idea&checkout.repo={url}",
 | 
						|
		},
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
type RepositoryStruct struct {
 | 
						|
	OpenWithEditorApps *config.Value[OpenWithEditorAppsType]
 | 
						|
	GitGuideRemoteName *config.Value[string]
 | 
						|
}
 | 
						|
 | 
						|
type ConfigStruct struct {
 | 
						|
	Picture    *PictureStruct
 | 
						|
	Repository *RepositoryStruct
 | 
						|
}
 | 
						|
 | 
						|
var (
 | 
						|
	defaultConfig *ConfigStruct
 | 
						|
	ConfigOnce    sync.Once
 | 
						|
)
 | 
						|
 | 
						|
func initDefaultConfig() {
 | 
						|
	config.SetCfgSecKeyGetter(&cfgSecKeyGetter{})
 | 
						|
	defaultConfig = &ConfigStruct{
 | 
						|
		Picture: &PictureStruct{
 | 
						|
			EnableGravatar:        config.ValueJSON[bool]("picture.enable_gravatar").SelectFrom("picture.disable_gravatar").WithFileConfig(config.CfgSecKey{Sec: "picture", Key: "DISABLE_GRAVATAR"}).Invert(),
 | 
						|
			EnableFederatedAvatar: config.ValueJSON[bool]("picture.enable_federated_avatar").WithFileConfig(config.CfgSecKey{Sec: "picture", Key: "ENABLE_FEDERATED_AVATAR"}),
 | 
						|
		},
 | 
						|
		Repository: &RepositoryStruct{
 | 
						|
			OpenWithEditorApps: config.ValueJSON[OpenWithEditorAppsType]("repository.open-with.editor-apps"),
 | 
						|
			GitGuideRemoteName: config.ValueJSON[string]("repository.git-guide-remote-name").WithDefault("origin"),
 | 
						|
		},
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func Config() *ConfigStruct {
 | 
						|
	ConfigOnce.Do(initDefaultConfig)
 | 
						|
	return defaultConfig
 | 
						|
}
 | 
						|
 | 
						|
type cfgSecKeyGetter struct{}
 | 
						|
 | 
						|
func (c cfgSecKeyGetter) GetValue(sec, key string) (v string, has bool) {
 | 
						|
	if key == "" {
 | 
						|
		return "", false
 | 
						|
	}
 | 
						|
	cfgSec, err := CfgProvider.GetSection(sec)
 | 
						|
	if err != nil {
 | 
						|
		log.Error("Unable to get config section: %q", sec)
 | 
						|
		return "", false
 | 
						|
	}
 | 
						|
	cfgKey := ConfigSectionKey(cfgSec, key)
 | 
						|
	if cfgKey == nil {
 | 
						|
		return "", false
 | 
						|
	}
 | 
						|
	return cfgKey.Value(), true
 | 
						|
}
 |