Weird behavior when mixing backends
- 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