2023-10-05 04:08:19 +03:00
// 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 {
DisableGravatar * config . Value [ bool ]
EnableFederatedAvatar * config . Value [ bool ]
}
2024-02-24 16:12:17 +03:00
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 ]
}
2023-10-05 04:08:19 +03:00
type ConfigStruct struct {
2024-02-24 16:12:17 +03:00
Picture * PictureStruct
Repository * RepositoryStruct
2023-10-05 04:08:19 +03:00
}
var (
defaultConfig * ConfigStruct
defaultConfigOnce sync . Once
)
func initDefaultConfig ( ) {
config . SetCfgSecKeyGetter ( & cfgSecKeyGetter { } )
defaultConfig = & ConfigStruct {
Picture : & PictureStruct {
2024-02-24 16:12:17 +03:00
DisableGravatar : config . ValueJSON [ bool ] ( "picture.disable_gravatar" ) . WithFileConfig ( config . CfgSecKey { Sec : "picture" , Key : "DISABLE_GRAVATAR" } ) ,
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" ) ,
2023-10-05 04:08:19 +03:00
} ,
}
}
func Config ( ) * ConfigStruct {
defaultConfigOnce . Do ( initDefaultConfig )
return defaultConfig
}
type cfgSecKeyGetter struct { }
func ( c cfgSecKeyGetter ) GetValue ( sec , key string ) ( v string , has bool ) {
2024-02-24 16:12:17 +03:00
if key == "" {
return "" , false
}
2023-10-05 04:08:19 +03:00
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
}