Add AGENTS.md, simplify code, 2 fixes in log package, 3 bugs fixed.

- Add AGENTS.md for vibecoding ai data.
- Remove github.com/pkg/errors dependency
- writeWithContext — remove goroutine overhead, just check context before fn
- copyWithContext — remove unnecessary panic recovery
- Remove panic recovery tests (TestWriteWithContextPanic, TestCopyWithContextPanic, panicReader)
- Error, Warn, Info, Debug, Fatal — accept ...any instead of string (enables log.Error(err))
- Close — don't panic if Log is nil, don't close stderr
- Add unit tests (internal/log/main_test.go)
- getClientIP — trim spaces from X-Forwarded-For, use net.SplitHostPort for IPv6
- isExcluded — normalize paths to forward slashes for cross-platform regex matching
- writeWithContext godoc — fix stale comment about panic recovery
- internal/log/main_test.go — log package tests (19 tests)
This commit is contained in:
eleksir
2026-03-27 01:24:32 +03:00
parent 0bea45b770
commit 16ae887196
11 changed files with 681 additions and 98 deletions

View File

@@ -10,8 +10,6 @@ import (
"backer/internal/backer"
"backer/internal/log"
"github.com/pkg/errors"
)
var (
@@ -39,14 +37,14 @@ func main() {
server, err := backer.NewServer(cfgPath)
if err != nil {
log.Fatalf("Failed to create server: %v", errors.WithStack(err))
log.Fatalf("Failed to create server: %v", err)
}
log.Infof("Starting server at %s", server.Addr)
if backer.C.NoHTTPS {
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("Failed to start server: %v", errors.WithStack(err))
log.Fatalf("Failed to start server: %v", err)
}
} else {
if _, err := os.Stat(backer.C.Cert); err != nil {
@@ -58,7 +56,7 @@ func main() {
}
if err := server.ListenAndServeTLS(backer.C.Cert, backer.C.Key); err != nil && err != http.ErrServerClosed {
log.Fatalf("Failed to start server: %v", errors.WithStack(err))
log.Fatalf("Failed to start server: %v", err)
}
}
}