Skip to content

Commit 4fd1ccf

Browse files
Seba/fix goreleaser3 (#31)
* feat: replace log with charmbracelet/log and refactor config loading Switch to charmbracelet/log for better observability and structured logging. Consolidate configuration loading into a single LoadConfig function that returns errors instead of calling log.Fatalf, improving testability. * fix(release): modernize goreleaser config to v2 and add docker links Upgrade GoReleaser configuration to version 2 syntax and migrate to dockers_v2 for multi-arch builds. This commit also adds a footer to the GitHub Release description with instructions on how to pull the generated Docker images from Docker Hub and GHCR. Signed-off-by: Sebastian Webber <sebastian@swebber.me>
1 parent fbf8e8e commit 4fd1ccf

File tree

9 files changed

+129
-63
lines changed

9 files changed

+129
-63
lines changed

.goreleaser.yml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,16 @@ archives:
9696

9797
checksum:
9898
name_template: "checksums.txt"
99+
100+
release:
101+
footer: >-
102+
## Docker Images
103+
104+
- `docker pull docker.io/pgconfig/api:{{ .Version }}`
105+
- `docker pull ghcr.io/pgconfig/api:{{ .Version }}`
106+
- `docker pull docker.io/pgconfig/pgconfigctl:{{ .Version }}`
107+
- `docker pull ghcr.io/pgconfig/pgconfigctl:{{ .Version }}`
108+
99109
snapshot:
100110
version_template: "{{ .Tag }}-next"
101111

@@ -117,9 +127,6 @@ dockers_v2:
117127
ids:
118128
- pgconfigctl
119129
dockerfile: cmd/pgconfigctl/Dockerfile
120-
use: buildx
121-
build_flag_templates:
122-
- "--platform=linux/amd64,linux/arm64"
123130
images:
124131
- "docker.io/pgconfig/pgconfigctl"
125132
- "ghcr.io/pgconfig/pgconfigctl"
@@ -134,14 +141,14 @@ dockers_v2:
134141
"org.opencontainers.image.website": "pgconfig.org"
135142
"org.opencontainers.image.revision": "{{.FullCommit}}"
136143
"org.opencontainers.image.version": "{{.Version}}"
144+
platforms:
145+
- linux/amd64
146+
- linux/arm64
137147

138148
- id: api
139149
ids:
140150
- api
141151
dockerfile: cmd/api/Dockerfile
142-
use: buildx
143-
build_flag_templates:
144-
- "--platform=linux/amd64,linux/arm64"
145152
extra_files:
146153
- rules.yml
147154
- pg-docs.yml
@@ -160,3 +167,7 @@ dockers_v2:
160167
"org.opencontainers.image.website": "pgconfig.org"
161168
"org.opencontainers.image.revision": "{{.FullCommit}}"
162169
"org.opencontainers.image.version": "{{.Version}}"
170+
platforms:
171+
- linux/amd64
172+
- linux/arm64
173+

cmd/api/handlers/v1/config.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package v1
22

33
import (
44
"fmt"
5+
"os"
56
"strconv"
67

78
"github.com/gofiber/fiber/v2"
@@ -14,8 +15,48 @@ import (
1415
"github.com/pgconfig/api/pkg/input/bytes"
1516
"github.com/pgconfig/api/pkg/input/profile"
1617
"github.com/pgconfig/api/pkg/rules"
18+
"gopkg.in/yaml.v2"
1719
)
1820

21+
type rulesFileContent struct {
22+
Categories map[string]map[string]parameter `json:"categories"`
23+
}
24+
25+
type parameter struct {
26+
Abstract string `json:"abstract"`
27+
Recomendations map[string]string `json:"recomendations,omitempty"`
28+
Formula string `json:"formula,omitempty"`
29+
}
30+
31+
var (
32+
allRules rulesFileContent
33+
pgDocs docs.DocFile
34+
)
35+
36+
// LoadConfig loads the necessary files to the api server
37+
func LoadConfig(rulesFile, docsFile string) error {
38+
fileData, err := os.ReadFile(rulesFile)
39+
if err != nil {
40+
return err
41+
}
42+
43+
err = yaml.Unmarshal(fileData, &allRules)
44+
if err != nil {
45+
return err
46+
}
47+
docFile, err := os.ReadFile(docsFile)
48+
if err != nil {
49+
return err
50+
}
51+
52+
err = yaml.Unmarshal(docFile, &pgDocs)
53+
if err != nil {
54+
return err
55+
}
56+
57+
return nil
58+
}
59+
1960
// GetConfig is a function to that computes the input and suggests a tuning configuration
2061
// @Summary Get Configuration
2162
// @Description computes the input and suggests a tuning configuration

cmd/api/handlers/v1/prepare.go

Lines changed: 0 additions & 46 deletions
This file was deleted.

cmd/api/main.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ package main
33
import (
44
"flag"
55
"fmt"
6-
"log"
76
"os"
87
"strconv"
98

9+
"github.com/charmbracelet/log"
10+
1011
_ "github.com/pgconfig/api/cmd/api/docs" // docs is generated by Swag CLI, you have to import it.
1112
v1 "github.com/pgconfig/api/cmd/api/handlers/v1"
12-
1313
"github.com/pgconfig/api/cmd/api/routes"
1414
"github.com/pgconfig/api/pkg/version"
1515
)
@@ -32,22 +32,24 @@ func getDefaultPort(envName string) int {
3232
return out
3333
}
3434

35-
func initAPI() {
35+
func setupArgs() {
3636
flag.IntVar(&port, "port", getDefaultPort("PORT"), "Listen port")
3737
flag.StringVar(&rulesFile, "rules-file", "./rules.yml", "Rules file")
3838
flag.StringVar(&docsFile, "docs-file", "./pg-docs.yml", "Rules file")
3939
flag.Parse()
40-
41-
v1.Prepare(rulesFile, docsFile)
4240
}
4341

4442
func main() {
45-
initAPI()
43+
setupArgs()
44+
45+
if err := v1.LoadConfig(rulesFile, docsFile); err != nil {
46+
log.Fatal("could not load configuration", "err", err)
47+
}
4648

47-
log.Printf("PGConfig API - %s\n", version.Pretty())
49+
log.Info("PGConfig API", "ver", version.Pretty())
4850

4951
app := routes.New()
5052
if err := app.Listen(fmt.Sprintf(":%d", port)); err != nil {
51-
log.Println("[ERR] not running API: ", err)
53+
log.Errorf("not running API: %v", err)
5254
}
5355
}

cmd/api/main_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package main
2+
3+
import (
4+
"testing"
5+
6+
v1 "github.com/pgconfig/api/cmd/api/handlers/v1"
7+
)
8+
9+
func TestLoadConfiguration(t *testing.T) {
10+
// Paths relative to cmd/api
11+
rulesPath := "../../rules.yml"
12+
docsPath := "../../pg-docs.yml"
13+
14+
// We still need to call LoadConfig because the API handlers depend on
15+
// allRules and pgDocs global variables being initialized.
16+
if err := v1.LoadConfig(rulesPath, docsPath); err != nil {
17+
t.Fatalf("Failed to load configuration: %v", err)
18+
}
19+
}

generators/pg-docs/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package main
33
import (
44
"flag"
55
"fmt"
6-
"log"
6+
"github.com/charmbracelet/log"
77
"os"
88
"sync"
99

@@ -105,7 +105,7 @@ func main() {
105105
err := saveFile(file)
106106

107107
if err != nil {
108-
log.Printf("Could not save file: %v", err)
108+
log.Errorf("Could not save file: %v", err)
109109
}
110110

111111
}

go.mod

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ go 1.25.1
55
require (
66
github.com/PuerkitoBio/goquery v1.11.0
77
github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883
8+
github.com/charmbracelet/log v0.4.2
89
github.com/gofiber/fiber/v2 v2.52.10
910
github.com/gofiber/swagger v1.1.1
1011
github.com/mackerelio/go-osstat v0.2.6
@@ -21,10 +22,17 @@ require (
2122
github.com/KyleBanks/depth v1.2.1 // indirect
2223
github.com/andybalholm/brotli v1.2.0 // indirect
2324
github.com/andybalholm/cascadia v1.3.3 // indirect
25+
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
26+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
27+
github.com/charmbracelet/lipgloss v1.1.0 // indirect
28+
github.com/charmbracelet/x/ansi v0.8.0 // indirect
29+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd // indirect
30+
github.com/charmbracelet/x/term v0.2.1 // indirect
2431
github.com/clipperhouse/stringish v0.1.1 // indirect
2532
github.com/clipperhouse/uax29/v2 v2.3.0 // indirect
2633
github.com/davecgh/go-spew v1.1.1 // indirect
2734
github.com/fsnotify/fsnotify v1.9.0 // indirect
35+
github.com/go-logfmt/logfmt v0.6.0 // indirect
2836
github.com/go-openapi/jsonpointer v0.22.4 // indirect
2937
github.com/go-openapi/jsonreference v0.21.4 // indirect
3038
github.com/go-openapi/spec v0.22.2 // indirect
@@ -41,11 +49,14 @@ require (
4149
github.com/inconshreveable/mousetrap v1.1.0 // indirect
4250
github.com/jtolds/gls v4.20.0+incompatible // indirect
4351
github.com/klauspost/compress v1.18.2 // indirect
52+
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
4453
github.com/mattn/go-colorable v0.1.14 // indirect
4554
github.com/mattn/go-isatty v0.0.20 // indirect
4655
github.com/mattn/go-runewidth v0.0.19 // indirect
56+
github.com/muesli/termenv v0.16.0 // indirect
4757
github.com/pelletier/go-toml/v2 v2.2.4 // indirect
4858
github.com/pmezard/go-difflib v1.0.0 // indirect
59+
github.com/rivo/uniseg v0.4.7 // indirect
4960
github.com/sagikazarmark/locafero v0.12.0 // indirect
5061
github.com/sergi/go-diff v1.3.1 // indirect
5162
github.com/smarty/assertions v1.15.0 // indirect
@@ -56,7 +67,9 @@ require (
5667
github.com/swaggo/files/v2 v2.0.2 // indirect
5768
github.com/valyala/bytebufferpool v1.0.0 // indirect
5869
github.com/valyala/fasthttp v1.68.0 // indirect
70+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
5971
go.yaml.in/yaml/v3 v3.0.4 // indirect
72+
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
6073
golang.org/x/mod v0.31.0 // indirect
6174
golang.org/x/net v0.48.0 // indirect
6275
golang.org/x/sync v0.19.0 // indirect

go.sum

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,20 @@ github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwTo
88
github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
99
github.com/andybalholm/cascadia v1.3.3 h1:AG2YHrzJIm4BZ19iwJ/DAua6Btl3IwJX+VI4kktS1LM=
1010
github.com/andybalholm/cascadia v1.3.3/go.mod h1:xNd9bqTn98Ln4DwST8/nG+H0yuB8Hmgu1YHNnWw0GeA=
11+
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
12+
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
13+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
14+
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
15+
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
16+
github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30=
17+
github.com/charmbracelet/log v0.4.2 h1:hYt8Qj6a8yLnvR+h7MwsJv/XvmBJXiueUcI3cIxsyig=
18+
github.com/charmbracelet/log v0.4.2/go.mod h1:qifHGX/tc7eluv2R6pWIpyHDDrrb/AG71Pf2ysQu5nw=
19+
github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE=
20+
github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q=
21+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd h1:vy0GVL4jeHEwG5YOXDmi86oYw2yuYUGqz6a8sLwg0X8=
22+
github.com/charmbracelet/x/cellbuf v0.0.13-0.20250311204145-2c3ea96c31dd/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
23+
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
24+
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
1125
github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs=
1226
github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA=
1327
github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4=
@@ -20,6 +34,8 @@ github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHk
2034
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
2135
github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
2236
github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
37+
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
38+
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
2339
github.com/go-openapi/jsonpointer v0.22.4 h1:dZtK82WlNpVLDW2jlA1YCiVJFVqkED1MegOUy9kR5T4=
2440
github.com/go-openapi/jsonpointer v0.22.4/go.mod h1:elX9+UgznpFhgBuaMQ7iu4lvvX1nvNsesQ3oxmYTw80=
2541
github.com/go-openapi/jsonreference v0.21.4 h1:24qaE2y9bx/q3uRK/qN+TDwbok1NhbSmGjjySRCHtC8=
@@ -72,6 +88,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
7288
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
7389
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
7490
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
91+
github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
92+
github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
7593
github.com/mackerelio/go-osstat v0.2.6 h1:gs4U8BZeS1tjrL08tt5VUliVvSWP26Ai2Ob8Lr7f2i0=
7694
github.com/mackerelio/go-osstat v0.2.6/go.mod h1:lRy8V9ZuHpuRVZh+vyTkODeDPl3/d5MgXHtLSaqG8bA=
7795
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
@@ -82,10 +100,14 @@ github.com/mattn/go-runewidth v0.0.19 h1:v++JhqYnZuu5jSKrk9RbgF5v4CGUjqRfBm05byF
82100
github.com/mattn/go-runewidth v0.0.19/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
83101
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
84102
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
103+
github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc=
104+
github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk=
85105
github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
86106
github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
87107
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
88108
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
109+
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
110+
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
89111
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
90112
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
91113
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
@@ -122,6 +144,8 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw
122144
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
123145
github.com/valyala/fasthttp v1.68.0 h1:v12Nx16iepr8r9ySOwqI+5RBJ/DqTxhOy1HrHoDFnok=
124146
github.com/valyala/fasthttp v1.68.0/go.mod h1:5EXiRfYQAoiO/khu4oU9VISC/eVY6JqmSpPJoHCKsz4=
147+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no=
148+
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
125149
github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
126150
github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
127151
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
@@ -133,6 +157,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY
133157
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
134158
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
135159
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
160+
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
161+
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
136162
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
137163
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
138164
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=

pkg/docs/doc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package docs
22

33
import (
44
"fmt"
5-
"log"
5+
"github.com/charmbracelet/log"
66
"net/http"
77
"strings"
88

0 commit comments

Comments
 (0)