Skip to content

Commit

Permalink
feat: upgrade lumber to v3
Browse files Browse the repository at this point in the history
Signed-off-by: Matt Gleich <git@mattglei.ch>
  • Loading branch information
gleich committed Aug 21, 2024
1 parent 4a76860 commit 24f5dd5
Show file tree
Hide file tree
Showing 16 changed files with 54 additions and 28 deletions.
6 changes: 2 additions & 4 deletions cmd/lcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"github.com/gleich/lcp-v2/internal/apis/steam"
"github.com/gleich/lcp-v2/internal/apis/strava"
"github.com/gleich/lcp-v2/internal/secrets"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
"github.com/prometheus/client_golang/prometheus/promhttp"
Expand Down Expand Up @@ -38,13 +38,11 @@ func main() {
}

func setupLogger() {
logger := lumber.NewCustomLogger()
nytime, err := time.LoadLocation("America/New_York")
if err != nil {
lumber.Fatal(err, "failed to load new york timezone")
}
logger.Timezone = nytime
lumber.SetLogger(logger)
lumber.SetTimezone(nytime)
}

func rootRedirect(w http.ResponseWriter, r *http.Request) {
Expand Down
13 changes: 10 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,40 @@ go 1.23
require (
github.com/buckket/go-blurhash v1.1.0
github.com/caarlos0/env/v11 v11.2.2
github.com/gleich/lumber/v2 v2.3.0
github.com/gleich/lumber/v3 v3.0.0
github.com/go-chi/chi/v5 v5.1.0
github.com/joho/godotenv v1.5.1
github.com/minio/minio-go/v7 v7.0.74
github.com/prometheus/client_golang v1.19.1
github.com/minio/minio-go/v7 v7.0.75
github.com/prometheus/client_golang v1.20.1
github.com/shurcooL/githubv4 v0.0.0-20240727222349-48295856cce7
golang.org/x/oauth2 v0.22.0
)

require (
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/charmbracelet/lipgloss v0.13.0 // indirect
github.com/charmbracelet/x/ansi v0.2.2 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/fatih/color v1.17.0 // indirect
github.com/go-ini/ini v1.67.0 // indirect
github.com/goccy/go-json v0.10.3 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/klauspost/compress v1.17.9 // indirect
github.com/klauspost/cpuid/v2 v2.2.8 // indirect
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/minio/md5-simd v1.1.2 // indirect
github.com/muesli/termenv v0.15.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.55.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/rivo/uniseg v0.4.7 // indirect
github.com/rs/xid v1.5.0 // indirect
github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466 // indirect
github.com/wayneashleyberry/truecolor v1.0.1 // indirect
Expand Down
25 changes: 23 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/buckket/go-blurhash v1.1.0 h1:X5M6r0LIvwdvKiUtiNcRL2YlmOfMzYobI3VCKCZc9Do=
Expand All @@ -6,14 +8,20 @@ github.com/caarlos0/env/v11 v11.2.2 h1:95fApNrUyueipoZN/EhA8mMxiNxrBwDa+oAZrMWl3
github.com/caarlos0/env/v11 v11.2.2/go.mod h1:JBfcdeQiBoI3Zh1QRAWfe+tpiNTmDtcCj/hHHHMx0vc=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/charmbracelet/lipgloss v0.13.0 h1:4X3PPeoWEDCMvzDvGmTajSyYPcZM4+y8sCA/SsA3cjw=
github.com/charmbracelet/lipgloss v0.13.0/go.mod h1:nw4zy0SBX/F/eAO1cWdcvy6qnkDUxr8Lw7dvFrAIbbY=
github.com/charmbracelet/x/ansi v0.2.2 h1:BC7xzaVpfWIYZRNE8NhO9zo8KA4eGUL6L/JWXDh3GF0=
github.com/charmbracelet/x/ansi v0.2.2/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
github.com/gleich/lumber/v2 v2.3.0 h1:w6+Qc5eBKrrWwFyx/4+LdzS6No1iNohre1JFVP3MKtU=
github.com/gleich/lumber/v2 v2.3.0/go.mod h1:tdpnXzm31uGLr7OawvgMfMXp3U/MQQo44WiJBJqTy2E=
github.com/gleich/lumber/v3 v2.3.0 h1:w6+Qc5eBKrrWwFyx/4+LdzS6No1iNohre1JFVP3MKtU=
github.com/gleich/lumber/v3 v2.3.0/go.mod h1:tdpnXzm31uGLr7OawvgMfMXp3U/MQQo44WiJBJqTy2E=
github.com/gleich/lumber/v3 v3.0.0 h1:88ZT+/cYRK61FQuyWQg0Z8g8+jhvwfyfvqsjwLPS/Bs=
github.com/gleich/lumber/v3 v3.0.0/go.mod h1:VWZc7cGxgHGdEDh9tyGusYexsl88DunuBlG2WvWVW+0=
github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
github.com/go-ini/ini v1.67.0 h1:z6ZrTEZqSWOTyH2FlglNbNgARyHG8oLW9gMELqKr06A=
Expand All @@ -31,15 +39,23 @@ github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ib
github.com/klauspost/cpuid/v2 v2.0.1/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/minio/md5-simd v1.1.2 h1:Gdi1DZK69+ZVMoNHRXJyNcxrMA4dSxoYHZSQbirFg34=
github.com/minio/md5-simd v1.1.2/go.mod h1:MzdKDxYpY2BT9XQFocsiZf/NKVtR7nkE4RoEpN+20RM=
github.com/minio/minio-go/v7 v7.0.74 h1:fTo/XlPBTSpo3BAMshlwKL5RspXRv9us5UeHEGYCFe0=
github.com/minio/minio-go/v7 v7.0.74/go.mod h1:qydcVzV8Hqtj1VtEocfxbmVFa2siu6HGa+LDEPogjD8=
github.com/minio/minio-go/v7 v7.0.75 h1:0uLrB6u6teY2Jt+cJUVi9cTvDRuBKWSRzSAcznRkwlE=
github.com/minio/minio-go/v7 v7.0.75/go.mod h1:qydcVzV8Hqtj1VtEocfxbmVFa2siu6HGa+LDEPogjD8=
github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
Expand All @@ -48,12 +64,17 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE=
github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho=
github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8=
github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/shurcooL/githubv4 v0.0.0-20240727222349-48295856cce7 h1:cYCy18SHPKRkvclm+pWm1Lk4YrREb4IOIb/YdFO0p2M=
Expand Down
4 changes: 2 additions & 2 deletions internal/apis/github/github.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (

"github.com/gleich/lcp-v2/internal/cache"
"github.com/gleich/lcp-v2/internal/secrets"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
"github.com/go-chi/chi/v5"
"github.com/shurcooL/githubv4"
"golang.org/x/oauth2"
Expand All @@ -30,5 +30,5 @@ func Setup(router *chi.Mux) {
func() ([]repository, error) { return fetchPinnedRepos(githubClient) },
2*time.Minute,
)
lumber.Success("setup github cache")
lumber.Done("setup github cache")
}
2 changes: 1 addition & 1 deletion internal/apis/github/repos.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"fmt"
"time"

"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
"github.com/shurcooL/githubv4"
)

Expand Down
2 changes: 1 addition & 1 deletion internal/apis/steam/achievements.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"time"

"github.com/gleich/lcp-v2/internal/secrets"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
)

type playerAchievementsResponse struct {
Expand Down
2 changes: 1 addition & 1 deletion internal/apis/steam/games.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"time"

"github.com/gleich/lcp-v2/internal/secrets"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
)

type ownedGamesResponse struct {
Expand Down
4 changes: 2 additions & 2 deletions internal/apis/steam/steam.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"time"

"github.com/gleich/lcp-v2/internal/cache"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
"github.com/go-chi/chi/v5"
)

Expand All @@ -17,5 +17,5 @@ func Setup(router *chi.Mux) {
steamCache := cache.NewCache("steam", games)
router.Get("/steam/cache", steamCache.ServeHTTP())
go steamCache.StartPeriodicUpdate(fetchRecentlyPlayedGames, 5*time.Minute)
lumber.Success("setup steam cache")
lumber.Done("setup steam cache")
}
2 changes: 1 addition & 1 deletion internal/apis/strava/activities.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"net/url"
"time"

"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
"github.com/minio/minio-go/v7"
)

Expand Down
2 changes: 1 addition & 1 deletion internal/apis/strava/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (

"github.com/gleich/lcp-v2/internal/cache"
"github.com/gleich/lcp-v2/internal/secrets"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
"github.com/minio/minio-go/v7"
)

Expand Down
2 changes: 1 addition & 1 deletion internal/apis/strava/map.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (

"github.com/buckket/go-blurhash"
"github.com/gleich/lcp-v2/internal/secrets"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
"github.com/minio/minio-go/v7"
)

Expand Down
4 changes: 2 additions & 2 deletions internal/apis/strava/strava.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package strava
import (
"github.com/gleich/lcp-v2/internal/cache"
"github.com/gleich/lcp-v2/internal/secrets"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
"github.com/go-chi/chi/v5"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
Expand Down Expand Up @@ -32,5 +32,5 @@ func Setup(router *chi.Mux) {
router.Post("/strava/event", eventRoute(stravaCache, *minioClient, stravaTokens))
router.Get("/strava/event", challengeRoute)

lumber.Success("setup strava cache")
lumber.Done("setup strava cache")
}
4 changes: 2 additions & 2 deletions internal/apis/strava/tokens.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"time"

"github.com/gleich/lcp-v2/internal/secrets"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
)

type tokens struct {
Expand Down Expand Up @@ -74,7 +74,7 @@ func (t *tokens) refreshIfNeeded() {
os.Setenv("STRAVA_REFRESH_TOKEN_EXPIRATION", strconv.FormatInt(tokens.ExpiresAt, 10))
*t = tokens

lumber.Success("loaded new strava token data")
lumber.Done("loaded new strava token data")
lumber.Info("strava access token:", t.Access)
lumber.Info("strava refresh token:", t.Refresh)
}
4 changes: 2 additions & 2 deletions internal/cache/cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import (

"github.com/gleich/lcp-v2/internal/metrics"
"github.com/gleich/lcp-v2/internal/secrets"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promauto"
)
Expand Down Expand Up @@ -91,7 +91,7 @@ func (c *Cache[T]) Update(data T) {
c.updateCounter.Inc()
metrics.CacheUpdates.Inc()
c.persistToFile()
lumber.Success(strings.ToUpper(c.Name), "cache updated")
lumber.Done(strings.ToUpper(c.Name), "cache updated")
}
}

Expand Down
2 changes: 1 addition & 1 deletion internal/cache/storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
"os"
"path/filepath"

"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
)

func (c *Cache[T]) persistToFile() {
Expand Down
4 changes: 2 additions & 2 deletions internal/secrets/secrets.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package secrets

import (
"github.com/caarlos0/env/v11"
"github.com/gleich/lumber/v2"
"github.com/gleich/lumber/v3"
"github.com/joho/godotenv"
)

Expand Down Expand Up @@ -41,5 +41,5 @@ func Load() {
lumber.Fatal(err, "parsing required env vars failed")
}
SECRETS = loadedSecrets
lumber.Success("loaded secrets")
lumber.Done("loaded secrets")
}

0 comments on commit 24f5dd5

Please sign in to comment.