feat(go-config): multi-format codecs, envc CLI, fixtures, ASRs
- Module github.com/eslider/go-config with env/yaml/json/ini packages - internal: source, keymap, merge, structconv, bytesutil - cmd/envc: convert, get, merge - docs/asr ASR-0001..0008, README/CHANGELOG/AGENTS refresh - golangci-lint v2 config; tests + fixtures Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
# ASR-0006: Third-party library choices
|
||||
|
||||
## Context
|
||||
|
||||
We need battle-tested parsers and struct bridging without maintaining our own grammars.
|
||||
|
||||
## Decision
|
||||
|
||||
1. **Struct / map bridging:** `github.com/go-viper/mapstructure/v2` (maintained fork of `mitchellh/mapstructure`).
|
||||
2. **YAML:** `gopkg.in/yaml.v3`.
|
||||
3. **JSON:** `encoding/json` (stdlib).
|
||||
4. **INI:** `gopkg.in/ini.v1` with `Loose` parsing for tolerant files.
|
||||
5. **`.env` files:** `github.com/joho/godotenv` (`UnmarshalBytes`).
|
||||
6. **CLI:** stdlib `flag` only (no Cobra).
|
||||
|
||||
## Consequences
|
||||
|
||||
- `go.mod` carries the above direct dependencies (plus transitive modules as resolved by MVS).
|
||||
|
||||
## Status
|
||||
|
||||
Accepted — 2026-05-02.
|
||||
|
||||
## References
|
||||
|
||||
- [go-viper/mapstructure](https://github.com/go-viper/mapstructure)
|
||||
Reference in New Issue
Block a user