📝 Update AGENTS.md with config system changes and testing guidelines
This commit is contained in:
parent
6c6a959af4
commit
ce83cf1cc2
1 changed files with 13 additions and 4 deletions
17
AGENTS.md
17
AGENTS.md
|
|
@ -14,11 +14,19 @@
|
|||
- **Formatting**: Always run `go fmt` before commits (included in test target)
|
||||
- **Types**: Use explicit types (e.g., `int64`, `float64`). Convert numbers appropriately when unmarshaling JSON
|
||||
- **Naming**: PascalCase for exported, camelCase for unexported. Use descriptive names
|
||||
- **Don't reinvent the wheel**: Use standard library functions (e.g., `slices.Contains` instead of custom contains functions)
|
||||
- **Error handling**: Return wrapped errors with context. Define custom errors in models/errors.go. Use `ErrorIs` for error checking
|
||||
- **Testing**: Use github.com/nalgeon/be. Table-driven tests with helper functions. Test both marshal/unmarshal for encoding types
|
||||
- **Testing**: Use github.com/nalgeon/be. Table-driven tests with helper functions. Test both marshal/unmarshal for encoding types. Use `t.ArtifactDir()` instead of `t.TempDir()` and `t.Context()` instead of `context.Background()`
|
||||
- **Concurrency**: Use channels and goroutines with WaitGroups for parallel processing (see entry.go patterns)
|
||||
- **Comments**: Include license header on cmd files. Document exported functions and types
|
||||
|
||||
## Config System
|
||||
- Viper instance is stored in context using a custom key type (`confKeyType`)
|
||||
- Use `config.New(path, overrides)` to create a new viper instance
|
||||
- Use `config.RetrieveFromContext(ctx)` to get both viper and the unmarshaled Config struct
|
||||
- Formatters can use `v.Sub("formatters." + kind)` to get their own sub-config and unmarshal into their specific config struct
|
||||
- Test files must create viper instances and add them to context using `config.AddToContext`
|
||||
|
||||
## Git Commit Guidelines
|
||||
- **Format**: Prepend commit messages with a gitmoji emoji (see https://gitmoji.dev)
|
||||
- **Style**: Write detailed commit messages that explain what changed and why
|
||||
|
|
@ -39,9 +47,10 @@
|
|||
|
||||
## Project Structure
|
||||
- `cmd/my-log/`: Main application entrypoint
|
||||
- `internal/cmd/`: Cobra commands (root, drop, config)
|
||||
- `internal/testutil/bep`: Reusable test assertions to complement those used by github.com/nalgeon/be
|
||||
- `cli/`: Cobra commands (root, drop, config)
|
||||
- `models/`: Core types (Entry, Log, Meta) with marshal/unmarshal implementations
|
||||
- `config/`: TOML-based configuration with env overrides
|
||||
- `formatters/`: Output formatters (plain, json, null)
|
||||
- `config/`: TOML-based configuration with viper, env overrides, and context propagation
|
||||
- `formatters/`: Output formatters (plain, json, null) with their own sub-configs
|
||||
- `files/`: File operations (append)
|
||||
- `tools/`: Utilities (date parsing, string parsing, write buffers)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue