| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // 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]
- }
-
- 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
- defaultConfigOnce sync.Once
- )
-
- func initDefaultConfig() {
- config.SetCfgSecKeyGetter(&cfgSecKeyGetter{})
- defaultConfig = &ConfigStruct{
- Picture: &PictureStruct{
- 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"),
- GitGuideRemoteName: config.ValueJSON[string]("repository.git-guide-remote-name").WithDefault("origin"),
- },
- }
- }
-
- func Config() *ConfigStruct {
- defaultConfigOnce.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
- }
|