@ -51,10 +51,10 @@ func decodeEnvSectionKey(encoded string) (ok bool, section, key string) {
for _ , unescapeIdx := range escapeStringIndices {
for _ , unescapeIdx := range escapeStringIndices {
preceding := encoded [ last : unescapeIdx [ 0 ] ]
preceding := encoded [ last : unescapeIdx [ 0 ] ]
if ! inKey {
if ! inKey {
if splitter := strings . Index ( preceding , "__" ) ; splitter > - 1 {
if before, after , cutOk := strings . Cut ( preceding , "__" ) ; cutOk {
section += preceding[ : splitter ]
section += before
inKey = true
inKey = true
key += preceding[ splitter + 2 : ]
key += after
} else {
} else {
section += preceding
section += preceding
}
}
@ -77,9 +77,9 @@ func decodeEnvSectionKey(encoded string) (ok bool, section, key string) {
}
}
remaining := encoded [ last : ]
remaining := encoded [ last : ]
if ! inKey {
if ! inKey {
if splitter := strings . Index ( remaining , "__" ) ; splitter > - 1 {
if before, after , cutOk := strings . Cut ( remaining , "__" ) ; cutOk {
section += remaining[ : splitter ]
section += before
key += remaining[ splitter + 2 : ]
key += after
} else {
} else {
section += remaining
section += remaining
}
}
@ -111,21 +111,21 @@ func decodeEnvironmentKey(prefixGitea, suffixFile, envKey string) (ok bool, sect
func EnvironmentToConfig ( cfg ConfigProvider , envs [ ] string ) ( changed bool ) {
func EnvironmentToConfig ( cfg ConfigProvider , envs [ ] string ) ( changed bool ) {
for _ , kv := range envs {
for _ , kv := range envs {
idx := strings . IndexByte ( kv , '=' )
before, after , ok := strings . Cut ( kv , "=" )
if idx < 0 {
if ! ok {
continue
continue
}
}
// parse the environment variable to config section name and key name
// parse the environment variable to config section name and key name
envKey := kv[ : idx ]
envKey := before
envValue := kv[ idx + 1 : ]
envValue := after
ok , sectionName , keyName , useFileValue := decodeEnvironmentKey ( EnvConfigKeyPrefixGitea , EnvConfigKeySuffixFile , envKey )
ok , sectionName , keyName , useFileValue := decodeEnvironmentKey ( EnvConfigKeyPrefixGitea , EnvConfigKeySuffixFile , envKey )
if ! ok {
if ! ok {
continue
continue
}
}
// use environment value as config value, or read the file content as value if the key indicates a file
// use environment value as config value, or read the file content as value if the key indicates a file
keyValue := envValue
keyValue := envValue //nolint:staticcheck // false positive
if useFileValue {
if useFileValue {
fileContent , err := os . ReadFile ( envValue )
fileContent , err := os . ReadFile ( envValue )
if err != nil {
if err != nil {