heetch / heetch/confita

Weird behavior when mixing backends

Open
#77 4 comments 1 reaction 0 assignees View on GitHub
bug
Dominant language
Go
Stars
507
Forks
49
PR merge metrics
No merged PRs in 30d

Description

Some examples of the weird behavior when mixing flag and envvar:

❌ bar default overwrite bar value from envvar
```
$ BAR=bar-envvar ./test-confita -foo=foo-flag
2019/09/29 10:24:37 cfg.Foo: 'foo-flag'
2019/09/29 10:24:37 cfg.Bar: 'bar-default'
```

✅ foo value from envvar it's overwritten by flag as expected
```
$ FOO=foo-envvar ./test-confita -foo=foo-flag
2019/09/29 10:29:22 cfg.Foo: 'foo-flag'
2019/09/29 10:29:22 cfg.Bar: 'bar-default'
```

❌ foo keeps the value from envvar ignoring the flag
```
$ BAR=bar-envvar FOO=foo-envvar ./test-confita -foo=foo-flag
2019/09/29 10:25:33 cfg.Foo: 'foo-envvar'
2019/09/29 10:25:33 cfg.Bar: 'bar-envvar'
```

go code:

```go
package main

import (
"context"
"log"

"github.com/heetch/confita"
"github.com/heetch/confita/backend/env"
"github.com/heetch/confita/backend/flags"
)

type Config struct {
Bar string `config:"bar"`
Foo string `config:"foo"`
}

func main() {
cfg := Config{
Bar: "bar-default",
}

loader := confita.NewLoader(
env.NewBackend(),
flags.NewBackend(),
)

err := loader.Load(context.Background(), &cfg)
if err != nil {
panic(err)
}

log.Printf("cfg.Foo: '%s'\n", cfg.Foo)
log.Printf("cfg.Bar: '%s'\n", cfg.Bar)
}
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by running the provided Go reproduction and trace confita.NewLoader with env.NewBackend and flags.NewBackend to determine backend precedence. Done means the mixed BAR/FOO cases produce consistent precedence without regressions; the payload names no repository files or tests, so locate those before editing.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.