Skip to content

Commit

Permalink
some clean ups
Browse files Browse the repository at this point in the history
  • Loading branch information
dropwhile committed Jan 21, 2025
1 parent 06f7c4e commit 8a5a786
Show file tree
Hide file tree
Showing 12 changed files with 197 additions and 25 deletions.
13 changes: 13 additions & 0 deletions .errcheck-excludes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
fmt.Fprint
fmt.Fprintf
(*os.File).Close
(*bufio.Writer).Flush
(*sliceBuffer).WriteByte
(github.com/cactus/mlog.byteSliceWriter).Write
(github.com/cactus/mlog.byteSliceWriter).WriteByte
(github.com/cactus/mlog.byteSliceWriter).WriteString
(*github.com/cactus/mlog.sliceBuffer).Write
(*github.com/cactus/mlog.sliceBuffer).WriteByte
(*github.com/cactus/mlog.sliceBuffer).WriteString
(*github.com/cactus/mlog.sliceBuffer).WriteTo
(*github.com/cactus/mlog.discardSliceWriter).WriteByte
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/bin
/pkg
/vendor/src
/.tools
*.py[co]
148 changes: 148 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
# environment
BUILDDIR := ${CURDIR}/build
ARCH := $(shell go env GOHOSTARCH)
OS := $(shell go env GOHOSTOS)
GOVER := $(shell go version | awk '{print $$3}' | tr -d '.')

# app specific info
APP_VER := v$(shell git describe --always --tags|sed 's/^v//')
GITHASH := $(shell git rev-parse --short HEAD)
GOPATH := $(shell go env GOPATH)
GOBIN := ${CURDIR}/.tools
VERSION_VAR := main.Version

# flags and build configuration
GOBUILD_OPTIONS := -trimpath
GOTEST_FLAGS :=
GOTEST_BENCHFLAGS :=
GOBUILD_DEPFLAGS := -tags netgo,production
GOBUILD_LDFLAGS ?= -s -w
GOBUILD_FLAGS := ${GOBUILD_DEPFLAGS} ${GOBUILD_OPTIONS} -ldflags "${GOBUILD_LDFLAGS} -X ${VERSION_VAR}=${APP_VER}"

# cross compile defs
CC_BUILD_TARGETS =
CC_BUILD_ARCHES = darwin/amd64 darwin/arm64 freebsd/amd64 linux/amd64 linux/arm64 windows/amd64
CC_OUTPUT_TPL := ${BUILDDIR}/bin/{{.Dir}}.{{.OS}}-{{.Arch}}

# misc
DOCKER_PREBUILD ?=

# some exported vars (pre-configure go build behavior)
export GO111MODULE=on
#export CGO_ENABLED=0
## enable go 1.21 loopvar "experiment"
export GOEXPERIMENT=loopvar
export GOBIN
export PATH := ${GOBIN}:${PATH}

define HELP_OUTPUT
Available targets:
help this help
clean clean up
all build binaries and man pages
check run checks and validators
test run tests
cover run tests with cover output
bench run benchmarks
generate run go:generate
build build all binaries
update-go-deps updates go.mod and go.sum files
endef
export HELP_OUTPUT


.PHONY: help
help:
@echo "$$HELP_OUTPUT"

.PHONY: clean
clean:
@rm -rf "${BUILDDIR}"

${GOBIN}/stringer:
go install golang.org/x/tools/cmd/stringer@latest

${GOBIN}/staticcheck:
go install honnef.co/go/tools/cmd/staticcheck@latest

${GOBIN}/gosec:
go install github.com/securego/gosec/v2/cmd/gosec@latest

${GOBIN}/govulncheck:
go install golang.org/x/vuln/cmd/govulncheck@latest

${GOBIN}/errcheck:
go install github.com/kisielk/errcheck@latest

${GOBIN}/ineffassign:
go install github.com/gordonklaus/ineffassign@latest

${GOBIN}/nilaway:
go install go.uber.org/nilaway/cmd/nilaway@latest

BUILD_TOOLS := ${GOBIN}/stringer
CHECK_TOOLS := ${GOBIN}/staticcheck ${GOBIN}/gosec ${GOBIN}/govulncheck
CHECK_TOOLS += ${GOBIN}/errcheck ${GOBIN}/ineffassign ${GOBIN}/nilaway

.PHONY: setup
setup:

.PHONY: setup-build
setup-build: setup ${BUILD_TOOLS}

.PHONY: setup-check
setup-check: setup ${CHECK_TOOLS}

.PHONY: generate
generate: setup-build
@echo ">> Generating..."
@PATH="${PATH}" go generate ./...

.PHONY: build
build: setup-build
@echo ">> Building..."
@[ -d "${BUILDDIR}/bin" ] || mkdir -p "${BUILDDIR}/bin"
@(for x in ${CC_BUILD_TARGETS}; do \
echo "...$${x}..."; \
go build ${GOBUILD_FLAGS} -o "${BUILDDIR}/bin/$${x}" ./cmd/$${x}; \
done)
@echo "done!"

.PHONY: test
test: setup
@echo ">> Running tests..."
@go test -count=1 -vet=off ${GOTEST_FLAGS} ./...

.PHONY: bench
bench: setup
@echo ">> Running benchmarks..."
@go test -bench="." -run="^$$" -test.benchmem=true ${GOTEST_BENCHFLAGS} ./...

.PHONY: cover
cover: setup
@echo ">> Running tests with coverage..."
@go test -vet=off -cover ${GOTEST_FLAGS} ./...

.PHONY: check
check: setup-check
@echo ">> Running checks and validators..."
@echo "... staticcheck ..."
@${GOBIN}/staticcheck ./...
@echo "... errcheck ..."
@${GOBIN}/errcheck -ignoretests -exclude .errcheck-excludes.txt ./...
@echo "... go-vet ..."
@go vet ./...
@echo "... gosec ..."
@${GOBIN}/gosec -quiet -exclude-dir=tool -exclude G104 ./...
@echo "... ineffassign ..."
@${GOBIN}/ineffassign ./...
@echo "... govulncheck ..."

.PHONY: update-go-deps
update-go-deps: setup
@echo ">> updating Go dependencies..."
@go get -u all
@go mod tidy

.PHONY: all
all: build
8 changes: 4 additions & 4 deletions formatwriter_json.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ func (j *FormatWriterJSON) EmitAttrs(logger *Logger, level int, message string,
t := time.Now()
sb.WriteString(`"time": "`)
if flags&Ltai64n != 0 {
writeTimeTAI64N(sb, &t, flags)
writeTimeTAI64N(sb, &t)
} else {
writeTime(sb, &t, flags)
writeTime(sb, &t)
}
sb.WriteString(`", `)
}
Expand Down Expand Up @@ -103,9 +103,9 @@ func (j *FormatWriterJSON) Emit(logger *Logger, level int, message string, extra
t := time.Now()
sb.WriteString(`"time": "`)
if flags&Ltai64n != 0 {
writeTimeTAI64N(sb, &t, flags)
writeTimeTAI64N(sb, &t)
} else {
writeTime(sb, &t, flags)
writeTime(sb, &t)
}
sb.WriteString(`", `)
}
Expand Down
8 changes: 4 additions & 4 deletions formatwriter_plain.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ func (l *FormatWriterPlain) EmitAttrs(logger *Logger, level int, message string,
if flags&(Ltimestamp|Ltai64n) != 0 {
t := time.Now()
if flags&Ltai64n != 0 {
writeTimeTAI64N(sb, &t, flags)
writeTimeTAI64N(sb, &t)
} else {
writeTime(sb, &t, flags)
writeTime(sb, &t)
}
sb.WriteByte(' ')
}
Expand Down Expand Up @@ -87,9 +87,9 @@ func (l *FormatWriterPlain) Emit(logger *Logger, level int, message string, extr
if flags&(Ltimestamp|Ltai64n) != 0 {
t := time.Now()
if flags&Ltai64n != 0 {
writeTimeTAI64N(sb, &t, flags)
writeTimeTAI64N(sb, &t)
} else {
writeTime(sb, &t, flags)
writeTime(sb, &t)
}
sb.WriteByte(' ')
}
Expand Down
8 changes: 4 additions & 4 deletions formatwriter_structured.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ func (l *FormatWriterStructured) EmitAttrs(logger *Logger, level int, message st
t := time.Now()
sb.WriteString(`time="`)
if flags&Ltai64n != 0 {
writeTimeTAI64N(sb, &t, flags)
writeTimeTAI64N(sb, &t)
} else {
writeTime(sb, &t, flags)
writeTime(sb, &t)
}
sb.WriteString(`" `)
}
Expand Down Expand Up @@ -94,9 +94,9 @@ func (l *FormatWriterStructured) Emit(logger *Logger, level int, message string,
t := time.Now()
sb.WriteString(`time="`)
if flags&Ltai64n != 0 {
writeTimeTAI64N(sb, &t, flags)
writeTimeTAI64N(sb, &t)
} else {
writeTime(sb, &t, flags)
writeTime(sb, &t)
}
sb.WriteString(`" `)
}
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/cactus/mlog
go 1.16

require (
github.com/cactus/tai64 v1.0.2
github.com/cactus/tai64 v1.0.3
github.com/google/go-cmp v0.6.0 // indirect
gotest.tools/v3 v3.5.1
)
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
github.com/cactus/tai64 v1.0.2 h1:c5rm3aQ9z3b6Vva2LXRSICx/Rpu9rj4MHEzRG1g7dK0=
github.com/cactus/tai64 v1.0.2/go.mod h1:gu5LAXd6eWwrRD/HPw+aTrJF5WkieYswRVLSNslKGg4=
github.com/cactus/tai64 v1.0.3 h1:GKdl8U1VprATgD16ob7Vjn7k+0G+rodh9roOcobjb3I=
github.com/cactus/tai64 v1.0.3/go.mod h1:Ciis5iTJ0/vRkbGsPqBvWTOtXbJdYobxVG/C4tSP9BY=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
Expand Down
13 changes: 11 additions & 2 deletions slicebuffer.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,11 @@ type sliceBuffer struct {
}

func (sb *sliceBuffer) AppendIntWidth(i int, wid int) {
digits := 0
// write digits backwards (easier/faster)
if i < 0 {
sb.data = append(sb.data, '-')
}
digits := 0
for i >= 10 {
q := i / 10
sb.data = append(sb.data, byte('0'+i-q*10))
Expand All @@ -72,7 +75,13 @@ func (sb *sliceBuffer) AppendIntWidth(i int, wid int) {
const hexdigits = "0123456789abcdefghijklmnopqrstuvwxyz"

func (sb *sliceBuffer) AppendIntWidthHex(i int64, wid int) {
u := uint64(i)
var u uint64
if i < 0 {
sb.data = append(sb.data, '-')
u = uint64(-i)
} else {
u = uint64(i)
}

digits := 0
b := uint64(16)
Expand Down
9 changes: 5 additions & 4 deletions time.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"github.com/cactus/tai64"
)

func writeTime(sb intSliceWriter, t *time.Time, flags FlagSet) {
func writeTime(sb intSliceWriter, t *time.Time) {
year, month, day := t.Date()
sb.AppendIntWidth(year, 4)
sb.WriteByte('-')
Expand Down Expand Up @@ -36,13 +36,14 @@ func writeTime(sb intSliceWriter, t *time.Time, flags FlagSet) {
} else {
sb.WriteByte('+')
}
sb.AppendIntWidth(offset/3600, 2)
offset := offset / 60
sb.AppendIntWidth(offset/60, 2)
sb.WriteByte(':')
sb.AppendIntWidth(offset%3600, 2)
sb.AppendIntWidth(offset%60, 2)
}
}

func writeTimeTAI64N(sb intSliceWriter, t *time.Time, flags FlagSet) {
func writeTimeTAI64N(sb intSliceWriter, t *time.Time) {
tu := t.UTC()
tux := tu.Unix()
offset := tai64.GetOffsetUnix(tux)
Expand Down
6 changes: 3 additions & 3 deletions time_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ func TestTime(t *testing.T) {
b := &sliceBuffer{make([]byte, 0, 1024)}
for _, tc := range cases {
b.Truncate(0)
writeTime(b, &(tc.T), tc.F)
assert.Check(t, is.Equal(tc.R, b.String()), "time written incorrectly")
writeTime(b, &tc.T)
assert.Check(t, is.Equal(b.String(), tc.R), "time written incorrectly")
}
}

Expand Down Expand Up @@ -77,7 +77,7 @@ func TestTimeTAI64N(t *testing.T) {
b := &sliceBuffer{make([]byte, 0, 1024)}
for _, tc := range cases {
b.Truncate(0)
writeTimeTAI64N(b, &(tc.T), tc.F)
writeTimeTAI64N(b, &(tc.T))
assert.Check(t, is.Equal(tc.R, b.String()), "time written incorrectly")
}
}
2 changes: 1 addition & 1 deletion tlogger.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,6 @@ func (lw *TestingLogWriter) Write(p []byte) (n int, err error) {
return 0, fmt.Errorf("got a nil testing.TBf")
}
lw.tb.Helper()
lw.tb.Logf(string(p))
lw.tb.Log(string(p))
return len(p), nil
}

0 comments on commit 8a5a786

Please sign in to comment.