summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-04 11:41:35 +0200
committerPaul Buetow <paul@buetow.org>2026-03-04 11:41:35 +0200
commitfcac74b4b06ac679e02e7976b79dcdad1e593810 (patch)
tree25079fe3c9d910c2ea273d5dd277a3816b99d75b
parent97aa8a6f666f5f40859c8a9aa4948bde435cf18f (diff)
chore: fix code-quality and 100-go-mistakes findings
Addresses Taskwarrior findings for golangci-lint v2 config, deprecated APIs, unchecked test errors, dead code, and staticcheck cleanups. Task UUIDs: 461c529c-5de3-4ceb-a761-5534f9f4342e, 8696d39e-d911-4ffe-8708-af1652a084b7, 0f63064b-be12-4fd6-a412-2904f94eb3dd, c051e84f-0e7b-48bc-8f16-e65133636ceb, 076cf172-e5fb-4f55-a1d6-1bce71e2f131, 1ed5b895-da61-4114-8321-cb129b24d6e1, 659311db-10af-4ec5-a08a-92240fa23489
-rw-r--r--.golangci.yml6
-rw-r--r--internal/cli/timer.go3
-rw-r--r--internal/cli/tui.go3
-rw-r--r--internal/timer/operations_test.go30
-rw-r--r--internal/tui/entries.go2
-rw-r--r--internal/tui/tui_test.go3
-rw-r--r--internal/worktime/report.go15
7 files changed, 32 insertions, 30 deletions
diff --git a/.golangci.yml b/.golangci.yml
index 9aa3b5c..6359905 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -1,14 +1,12 @@
-run:
- timeout: 5m
-
+version: "2"
linters:
+ default: none
enable:
- errcheck
- govet
- ineffassign
- staticcheck
- unused
-
issues:
max-issues-per-linter: 0
max-same-issues: 0
diff --git a/internal/cli/timer.go b/internal/cli/timer.go
index e9889c4..222b7df 100644
--- a/internal/cli/timer.go
+++ b/internal/cli/timer.go
@@ -195,7 +195,8 @@ func newTimerLiveCmd() *cobra.Command {
return err
}
program := tea.NewProgram(model)
- return program.Start()
+ _, err = program.Run()
+ return err
},
}
diff --git a/internal/cli/tui.go b/internal/cli/tui.go
index 474ffc2..e3b6426 100644
--- a/internal/cli/tui.go
+++ b/internal/cli/tui.go
@@ -18,7 +18,8 @@ func newTUICmd() *cobra.Command {
return err
}
program := tea.NewProgram(model)
- return program.Start()
+ _, err = program.Run()
+ return err
},
}
diff --git a/internal/timer/operations_test.go b/internal/timer/operations_test.go
index c0480d7..68764c4 100644
--- a/internal/timer/operations_test.go
+++ b/internal/timer/operations_test.go
@@ -241,11 +241,16 @@ func TestTrackTime(t *testing.T) {
tracker := &mockTracker{}
// Start timer and let it run for a bit
- state, _ := LoadState()
+ state, err := LoadState()
+ if err != nil {
+ t.Fatalf("LoadState() error = %v", err)
+ }
state.Running = true
state.StartTime = time.Now().Add(-5 * time.Minute)
state.ElapsedTime = 0
- state.Save()
+ if err := state.Save(); err != nil {
+ t.Fatalf("state.Save() error = %v", err)
+ }
msg, err := TrackTimeWithTracker("test description", tracker)
if err != nil {
@@ -261,7 +266,10 @@ func TestTrackTime(t *testing.T) {
t.Fatalf("tracker minutes = %d, want around 5", tracker.minutes)
}
- state, _ = LoadState()
+ state, err = LoadState()
+ if err != nil {
+ t.Fatalf("LoadState() error = %v", err)
+ }
if state.Running || state.ElapsedTime != 0 {
t.Fatalf("state after tracking = %+v, want reset stopped state", state)
}
@@ -272,17 +280,25 @@ func TestTrackTime(t *testing.T) {
tracker := &mockTracker{err: errTestTracker}
// Set up a stopped timer with some elapsed time
- state, _ := LoadState()
+ state, err := LoadState()
+ if err != nil {
+ t.Fatalf("LoadState() error = %v", err)
+ }
state.Running = false
state.ElapsedTime = 10 * time.Minute
- state.Save()
+ if err := state.Save(); err != nil {
+ t.Fatalf("state.Save() error = %v", err)
+ }
- _, err := TrackTimeWithTracker("another test", tracker)
+ _, err = TrackTimeWithTracker("another test", tracker)
if err == nil {
t.Fatal("TrackTimeWithTracker() error = nil, want tracker error")
}
- state, _ = LoadState()
+ state, err = LoadState()
+ if err != nil {
+ t.Fatalf("LoadState() error = %v", err)
+ }
if state.Running {
t.Fatal("state.Running = true, want false after failed tracking")
}
diff --git a/internal/tui/entries.go b/internal/tui/entries.go
index 2d35708..e0e76bf 100644
--- a/internal/tui/entries.go
+++ b/internal/tui/entries.go
@@ -1064,7 +1064,7 @@ func (m *EntriesModel) renderTimelineTable(styles Styles) string {
for colIdx := range row {
cellStyles[colIdx] = styles.TableCell
if idx == m.cursor {
- cellStyles[colIdx] = styles.TableCell.Copy().Bold(true)
+ cellStyles[colIdx] = styles.TableCell.Bold(true)
if entriesColumn(colIdx) == m.selectedColumn {
cellStyles[colIdx] = styles.TableSelected
}
diff --git a/internal/tui/tui_test.go b/internal/tui/tui_test.go
index eb64f14..e41317d 100644
--- a/internal/tui/tui_test.go
+++ b/internal/tui/tui_test.go
@@ -76,8 +76,7 @@ func TestQuitKeys(t *testing.T) {
modelAny, _ = model.Update(tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'Z'}})
model = modelAny.(*Model)
- modelAny, cmd = model.Update(tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'Q'}})
- model = modelAny.(*Model)
+ _, cmd = model.Update(tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'Q'}})
if cmd == nil {
t.Fatal("quit cmd is nil for ZQ")
}
diff --git a/internal/worktime/report.go b/internal/worktime/report.go
index 11890a9..c289b55 100644
--- a/internal/worktime/report.go
+++ b/internal/worktime/report.go
@@ -3,7 +3,6 @@ package worktime
import (
"fmt"
"math"
- "sort"
"strings"
"time"
@@ -289,7 +288,7 @@ func formatData(values map[string]int64, bufferSeconds int64, epoch int64, verbo
}
if verbose && epoch > 0 {
- out.WriteString(fmt.Sprintf(" epoch:%d(%s)", epoch, time.Unix(epoch, 0)))
+ _, _ = fmt.Fprintf(&out, " epoch:%d(%s)", epoch, time.Unix(epoch, 0))
}
return out.String()
@@ -411,15 +410,3 @@ func newWeekAccumulator() weekAccumulator {
values: map[string]int64{},
}
}
-
-func sortedWeekReports(reports []WeekReport) {
- sort.SliceStable(reports, func(i, j int) bool {
- if reports[i].WeekLabel != reports[j].WeekLabel {
- return reports[i].WeekLabel < reports[j].WeekLabel
- }
- if len(reports[i].Days) == 0 || len(reports[j].Days) == 0 {
- return len(reports[i].Days) < len(reports[j].Days)
- }
- return reports[i].Days[0].Epoch < reports[j].Days[0].Epoch
- })
-}