Skip to content

Commit

Permalink
Fix env for new override logic
Browse files Browse the repository at this point in the history
  • Loading branch information
brumhard committed Mar 13, 2021
1 parent 6b846bb commit 0c90c41
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 48 deletions.
25 changes: 7 additions & 18 deletions env.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,32 +64,21 @@ func (s *EnvSource) Read(field *Field) (interface{}, error) {
}

func readEnv(f *Field, prefix string, envMap map[string]string, separator string) []byte {
if f.Configs[envKey] != "" {
f.Name = f.Configs[envKey]
}

distinctEnvName := f.FullName(separator)
if prefix != "" {
distinctEnvName = prefix + separator + distinctEnvName
}

envNames := []string{
f.Configs[envKey],
distinctEnvName,
}

var finalVal []byte

for _, envName := range envNames {
envVal, ok := envMap[strings.ToUpper(envName)]
if !ok {
continue
}

finalVal = []byte(envVal)
}

if finalVal == nil {
envVal, ok := envMap[strings.ToUpper(distinctEnvName)]
if !ok {
return nil
}

return finalVal
return []byte(envVal)
}

func getEnvAsMap() map[string]string {
Expand Down
57 changes: 30 additions & 27 deletions env_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,46 +54,49 @@ var _ = Describe("env", func() {
val := readEnv(field, "", map[string]string{"OVERWRITE": "3000"}, separator)
Expect(val).To(Equal([]byte("3000")))
})
It("uses prefix", func() {
val := readEnv(field, "prefix", map[string]string{"PREFIX" + separator + strings.ToUpper(name): "3000"}, separator)
Expect(val).To(Equal([]byte("3000")))
})
It("doesn't use prefix if name is configured", func() {
field.Configs = map[string]string{envKey: "overwrite"}
val := readEnv(field, "prefix", map[string]string{"OVERWRITE": "3000"}, separator)
Expect(val).To(Equal([]byte("3000")))
})
It("uses disting name over long name", func() {
field.Configs = map[string]string{envKey: "overwrite"}
val := readEnv(
field, "prefix",
map[string]string{
"PREFIX" + separator + strings.ToUpper(name): "2000",
"OVERWRITE": "3000"},
separator,
)
Expect(val).To(Equal([]byte("2000")))
Context("prefix", func() {
It("uses prefix", func() {
val := readEnv(field, "prefix", map[string]string{"PREFIX" + separator + strings.ToUpper(name): "3000"}, separator)
Expect(val).To(Equal([]byte("3000")))
})
It("allows overwriting names", func() {
field.Configs = map[string]string{envKey: "overwrite"}
val := readEnv(field, "prefix", map[string]string{"PREFIX" + separator + "OVERWRITE": "3000"}, separator)
Expect(val).To(Equal([]byte("3000")))
})
It("uses overridden name even if normal one is set", func() {
field.Configs = map[string]string{envKey: "overwrite"}
val := readEnv(
field, "prefix",
map[string]string{
"PREFIX" + separator + strings.ToUpper(name): "2000",
"PREFIX" + separator + "OVERWRITE": "3000"},
separator,
)
Expect(val).To(Equal([]byte("3000")))
})
})
Context("nested", func() {
var (
base = "base"
envName = strings.ToUpper(base + separator + name)
)
var base = "base"

BeforeEach(func() {
field.Base = []string{base}
})
It("uses separator", func() {
val := readEnv(field, "", map[string]string{envName: "1234"}, separator)
val := readEnv(field, "", map[string]string{strings.ToUpper(base + separator + name): "1234"}, separator)
Expect(val).To(Equal([]byte("1234")))
})
It("can be overridden", func() {
field.Configs = map[string]string{envKey: "overwrite"}
val := readEnv(field, "", map[string]string{"OVERWRITE": "1234"}, separator)
val := readEnv(field, "", map[string]string{strings.ToUpper(base + separator + "overwrite"): "1234"}, separator)
Expect(val).To(Equal([]byte("1234")))
})
It("uses distinct name instead of overridden/default if both are set", func() {
It("uses overridden name even if normal one is set", func() {
field.Configs = map[string]string{envKey: "overwrite"}
val := readEnv(field, "", map[string]string{"OVERWRITE": "1234", envName: "1235"}, separator)
val := readEnv(field, "", map[string]string{
strings.ToUpper(base + separator + name): "1234",
strings.ToUpper(base + separator + "overwrite"): "1235",
}, separator)
Expect(val).To(Equal([]byte("1235")))
})
})
Expand Down
5 changes: 2 additions & 3 deletions files.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,12 +116,11 @@ func unmarshal(bytes []byte) (*ciMap, error) {
}

func readFileMap(f *Field, m *ciMap) (interface{}, error) {
fieldName := f.Name
if f.Configs[fileKey] != "" {
fieldName = f.Configs[fileKey]
f.Name = f.Configs[fileKey]
}

valueForField, ok := m.Get(f.Base, fieldName)
valueForField, ok := m.Get(f.Base, f.Name)
if !ok {
return nil, nil
}
Expand Down

0 comments on commit 0c90c41

Please sign in to comment.