2.1 KiB
2.1 KiB
Agent Guidelines for my-log
Build/Test/Lint Commands
- Build:
make buildorgo build -o my-log - Test all:
make test(runs fmt + test with race + coverage) - Test single:
go test ./path/to/package -run TestName - Format:
make fmtorgo fmt ./... - Coverage report:
make report(generates cover.html)
Code Style
- Module:
codeberg.org/danjones000/my-log - Go version: 1.21.5
- Imports: Standard library first, then external packages, then local packages. Use short aliases for common imports (e.g.,
fpforpath/filepath,mapstformitchellh/mapstructure) - Formatting: Always run
go fmtbefore 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
- Error handling: Return wrapped errors with context. Define custom errors in models/errors.go. Use
ErrorIsfor error checking - Testing: Use testify/assert. Table-driven tests with helper functions. Test both marshal/unmarshal for encoding types
- 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
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
- Examples:
✨ Add JSON export functionality for log entries,🐛 Fix date parsing for RFC3339 timestamps,📝 Update README with configuration examples
Project Structure
cmd/my-log/: Main application entrypointinternal/cmd/: Cobra commands (root, drop, config)models/: Core types (Entry, Log, Meta) with marshal/unmarshal implementationsconfig/: TOML-based configuration with env overridesformatters/: Output formatters (plain, json, null)files/: File operations (append)tools/: Utilities (date parsing, string parsing, write buffers)