diff --git a/.gitignore b/.gitignore index 5a806ae..3a550dc 100644 --- a/.gitignore +++ b/.gitignore @@ -122,6 +122,6 @@ Temporary Items *.icloud # End of https://www.toptal.com/developers/gitignore/api/go,linux,emacs,macos -/my-log +my-log cover.html cmd/test.go diff --git a/AGENTS.md b/AGENTS.md deleted file mode 100644 index e2e6343..0000000 --- a/AGENTS.md +++ /dev/null @@ -1,46 +0,0 @@ -# Agent Guidelines for my-log - -## Build/Test/Lint Commands -- Build: `make build` or `go 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 fmt` or `go 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., `fp` for `path/filepath`, `mapst` for `mitchellh/mapstructure`) -- **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 -- **Error handling**: Return wrapped errors with context. Define custom errors in models/errors.go. Use `ErrorIs` for 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` - -## Git Flow Workflow -- **Main branches**: `stable` (production-ready), `develop` (integration branch) -- **Development**: Always commit new features/fixes to `develop` branch or appropriate feature branches -- **Branch prefixes**: - - `feat/feature-name` - New features, merge to `develop` when complete - - `bug/bug-name` - Bug fixes (non-urgent), merge to `develop` when complete - - `hot/version` - Hotfixes for production issues, merge to **both** `stable` and `develop` - - `rel/version` - Release preparation branches -- **Version tags**: Prefix all version tags with `v` (e.g., `v1.0.2`, `v0.0.6`) -- **Never commit directly to**: `stable` branch (only merge from `rel/` or `hot/` branches) -- **Before starting work**: Ensure you're on `develop` branch or create an appropriate feature branch from it - -## Project Structure -- `cmd/my-log/`: Main application entrypoint -- `internal/cmd/`: 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) -- `files/`: File operations (append) -- `tools/`: Utilities (date parsing, string parsing, write buffers) diff --git a/Makefile b/Makefile index aaf684f..a3d8581 100644 --- a/Makefile +++ b/Makefile @@ -47,4 +47,4 @@ open-report: $(COVERHTML) ## Open the coverage report in the default browser build: $(OUT) ## Builds the application $(OUT): $(SOURCES) fmt - go build -o $@ ./cmd/my-log + go build -o $@ diff --git a/internal/cmd/config.go b/cmd/config.go similarity index 100% rename from internal/cmd/config.go rename to cmd/config.go diff --git a/internal/cmd/drop.go b/cmd/drop.go similarity index 100% rename from internal/cmd/drop.go rename to cmd/drop.go diff --git a/internal/cmd/root.go b/cmd/root.go similarity index 100% rename from internal/cmd/root.go rename to cmd/root.go diff --git a/cmd/my-log/main.go b/main.go similarity index 93% rename from cmd/my-log/main.go rename to main.go index c7f2435..a23ee3c 100644 --- a/cmd/my-log/main.go +++ b/main.go @@ -16,7 +16,7 @@ along with this program. If not, see . */ package main -import "codeberg.org/danjones000/my-log/internal/cmd" +import "codeberg.org/danjones000/my-log/cmd" func main() { cmd.Execute()