1
0
Fork 0
forked from forgejo/forgejo

[BRANDING] parse FORGEJO__* in the container environment

(cherry picked from commit b075991747)
(cherry picked from commit da3f76228e)
(cherry picked from commit 20d196e74f)
(cherry picked from commit 0bf8b1824e)
(cherry picked from commit 655bb770a7)
(cherry picked from commit d69d5c2c46)
(cherry picked from commit 00b55e5a53)
(cherry picked from commit 456121fd8a)
(cherry picked from commit 9716a158e4)
(cherry picked from commit 7d60a6f511)
(cherry picked from commit d32a6d9437)
(cherry picked from commit ee1de38527)
(cherry picked from commit 54e7799d13)
(cherry picked from commit 4f04da7ab7)
(cherry picked from commit 3e001364eb)
(cherry picked from commit d2d5193b38)
(cherry picked from commit eb1f015c42)
(cherry picked from commit c4587aa893)
(cherry picked from commit 6e340be917)

Conflicts:
	contrib/environment-to-ini/environment-to-ini.go
	https://codeberg.org/forgejo/forgejo/pulls/1773
This commit is contained in:
Earl Warren 2023-07-10 23:17:39 +02:00
parent e35b0a2130
commit 24fed529fc
No known key found for this signature in database
GPG key ID: 0579CB2928A78A00
3 changed files with 23 additions and 14 deletions

View file

@ -14,7 +14,7 @@ import (
)
const (
EnvConfigKeyPrefixGitea = "GITEA__"
EnvConfigKeyPrefixGitea = "^(FORGEJO|GITEA)__"
EnvConfigKeySuffixFile = "__FILE"
)
@ -97,19 +97,21 @@ func decodeEnvSectionKey(encoded string) (ok bool, section, key string) {
// decodeEnvironmentKey decode the environment key to section and key
// The environment key is in the form of GITEA__SECTION__KEY or GITEA__SECTION__KEY__FILE
func decodeEnvironmentKey(prefixGitea, suffixFile, envKey string) (ok bool, section, key string, useFileValue bool) {
if !strings.HasPrefix(envKey, prefixGitea) {
return false, "", "", false
}
func decodeEnvironmentKey(prefixRegexp *regexp.Regexp, suffixFile, envKey string) (ok bool, section, key string, useFileValue bool) {
if strings.HasSuffix(envKey, suffixFile) {
useFileValue = true
envKey = envKey[:len(envKey)-len(suffixFile)]
}
ok, section, key = decodeEnvSectionKey(envKey[len(prefixGitea):])
loc := prefixRegexp.FindStringIndex(envKey)
if loc == nil {
return false, "", "", false
}
ok, section, key = decodeEnvSectionKey(envKey[loc[1]:])
return ok, section, key, useFileValue
}
func EnvironmentToConfig(cfg ConfigProvider, envs []string) (changed bool) {
prefixRegexp := regexp.MustCompile(EnvConfigKeyPrefixGitea)
for _, kv := range envs {
idx := strings.IndexByte(kv, '=')
if idx < 0 {
@ -119,7 +121,7 @@ func EnvironmentToConfig(cfg ConfigProvider, envs []string) (changed bool) {
// parse the environment variable to config section name and key name
envKey := kv[:idx]
envValue := kv[idx+1:]
ok, sectionName, keyName, useFileValue := decodeEnvironmentKey(EnvConfigKeyPrefixGitea, EnvConfigKeySuffixFile, envKey)
ok, sectionName, keyName, useFileValue := decodeEnvironmentKey(prefixRegexp, EnvConfigKeySuffixFile, envKey)
if !ok {
continue
}