Diff
1diff --git a/cmd/soft/root.go b/cmd/soft/root.go
2index e8317dd88eeede4ff6e156c731a7f562e2b08cc3..1f4cbeacdff6e3eb2c343f4048b79f1358eb8983 100644
3--- a/cmd/soft/root.go
4+++ b/cmd/soft/root.go
5@@ -4,6 +4,7 @@ import (
6 "runtime/debug"
7
8 "github.com/charmbracelet/log"
9+ _ "github.com/charmbracelet/soft-serve/log"
10 "github.com/spf13/cobra"
11 )
12
13diff --git a/cmd/soft/serve.go b/cmd/soft/serve.go
14index 469ba8546db82fdff95896d7a7c36e593c1b7ead..332796394866e8b1fe6275985ccf771a589aa467 100644
15--- a/cmd/soft/serve.go
16+++ b/cmd/soft/serve.go
17@@ -7,7 +7,6 @@ import (
18 "syscall"
19 "time"
20
21- "github.com/charmbracelet/log"
22 "github.com/charmbracelet/soft-serve/server"
23 "github.com/charmbracelet/soft-serve/server/config"
24 "github.com/spf13/cobra"
25@@ -26,10 +25,6 @@ var (
26 return err
27 }
28
29- if cfg.Debug {
30- log.SetLevel(log.DebugLevel)
31- }
32-
33 done := make(chan os.Signal, 1)
34 lch := make(chan error, 1)
35 go func() {
36diff --git a/server/config/config.go b/server/config/config.go
37index 14dcff657128d87749f1ea4d3df56049eeb6525b..a7bc67f9c1aee4d7047ba77c707885878dafac9c 100644
38--- a/server/config/config.go
39+++ b/server/config/config.go
40@@ -51,9 +51,6 @@ type Config struct {
41 // DataPath is the path to the directory where Soft Serve will store its data.
42 DataPath string `env:"DATA_PATH" envDefault:"data"`
43
44- // Debug enables debug logging.
45- Debug bool `env:"DEBUG" envDefault:"false"`
46-
47 // Backend is the Git backend to use.
48 Backend backend.Backend
49
50@@ -70,9 +67,6 @@ func DefaultConfig() *Config {
51 }); err != nil {
52 log.Fatal(err)
53 }
54- if cfg.Debug {
55- log.SetLevel(log.DebugLevel)
56- }
57 fb, err := file.NewFileBackend(cfg.DataPath)
58 if err != nil {
59 log.Fatal(err)
60diff --git a/server/ssh.go b/server/ssh.go
61index 1c73928255e1ef19c9f9b70b87438669d5ef4a20..5a1752a4fbe92747787e224666070da295ed9df7 100644
62--- a/server/ssh.go
63+++ b/server/ssh.go
64@@ -40,6 +40,7 @@ func NewSSHServer(cfg *config.Config) (*SSHServer, error) {
65 cm.Middleware(cfg),
66 // Git middleware.
67 s.Middleware(cfg),
68+ // Logging middleware.
69 lm.MiddlewareWithLogger(logger),
70 ),
71 }
72@@ -66,9 +67,7 @@ func NewSSHServer(cfg *config.Config) (*SSHServer, error) {
73
74 // PublicKeyAuthHandler handles public key authentication.
75 func (s *SSHServer) PublicKeyHandler(ctx ssh.Context, pk ssh.PublicKey) bool {
76- al := s.cfg.Access.AccessLevel("", pk)
77- logger.Debug("publickey handler", "level", al)
78- return al > backend.NoAccess
79+ return s.cfg.Access.AccessLevel("", pk) > backend.NoAccess
80 }
81
82 // KeyboardInteractiveHandler handles keyboard interactive authentication.
83diff --git a/ui/pages/repo/log.go b/ui/pages/repo/log.go
84index 23bc2388060ccc66752d155773415ff0a8a4e3ff..6b5546590a516899ddd6d8f0753940b1b63edb24 100644
85--- a/ui/pages/repo/log.go
86+++ b/ui/pages/repo/log.go
87@@ -2,7 +2,6 @@ package repo
88
89 import (
90 "fmt"
91- "log"
92 "strings"
93 "time"
94
95@@ -386,7 +385,7 @@ func (l *Log) StatusBarInfo() string {
96
97 func (l *Log) countCommitsCmd() tea.Msg {
98 if l.ref == nil {
99- log.Printf("ui: log: ref is nil")
100+ logger.Debugf("ui: log: ref is nil")
101 return common.ErrorMsg(errNoRef)
102 }
103 r, err := l.repo.Repository()
104@@ -395,7 +394,7 @@ func (l *Log) countCommitsCmd() tea.Msg {
105 }
106 count, err := r.CountCommits(l.ref)
107 if err != nil {
108- log.Printf("ui: error counting commits: %v", err)
109+ logger.Debugf("ui: error counting commits: %v", err)
110 return common.ErrorMsg(err)
111 }
112 return LogCountMsg(count)
113@@ -412,7 +411,7 @@ func (l *Log) updateCommitsCmd() tea.Msg {
114 }
115 }
116 if l.ref == nil {
117- log.Printf("ui: log: ref is nil")
118+ logger.Debugf("ui: log: ref is nil")
119 return common.ErrorMsg(errNoRef)
120 }
121 items := make([]selector.IdentifiableItem, count)
122@@ -426,7 +425,7 @@ func (l *Log) updateCommitsCmd() tea.Msg {
123 // CommitsByPage pages start at 1
124 cc, err := r.CommitsByPage(l.ref, page+1, limit)
125 if err != nil {
126- log.Printf("ui: error loading commits: %v", err)
127+ logger.Debugf("ui: error loading commits: %v", err)
128 return common.ErrorMsg(err)
129 }
130 for i, c := range cc {
131@@ -448,12 +447,12 @@ func (l *Log) selectCommitCmd(commit *git.Commit) tea.Cmd {
132 func (l *Log) loadDiffCmd() tea.Msg {
133 r, err := l.repo.Repository()
134 if err != nil {
135- log.Printf("ui: error loading diff repository: %v", err)
136+ logger.Debugf("ui: error loading diff repository: %v", err)
137 return common.ErrorMsg(err)
138 }
139 diff, err := r.Diff(l.selectedCommit)
140 if err != nil {
141- log.Printf("ui: error loading diff: %v", err)
142+ logger.Debugf("ui: error loading diff: %v", err)
143 return common.ErrorMsg(err)
144 }
145 return LogDiffMsg(diff)
146diff --git a/ui/pages/repo/refs.go b/ui/pages/repo/refs.go
147index b0af0defeb94355d3f9314fb65cc4fba2e53c9a6..aa4e81f943f0b156bee372f000147e7bc811491f 100644
148--- a/ui/pages/repo/refs.go
149+++ b/ui/pages/repo/refs.go
150@@ -3,7 +3,6 @@ package repo
151 import (
152 "errors"
153 "fmt"
154- "log"
155 "sort"
156 "strings"
157
158@@ -182,7 +181,7 @@ func (r *Refs) updateItemsCmd() tea.Msg {
159 }
160 refs, err := rr.References()
161 if err != nil {
162- log.Printf("ui: error getting references: %v", err)
163+ logger.Debugf("ui: error getting references: %v", err)
164 return common.ErrorMsg(err)
165 }
166 for _, ref := range refs {
167@@ -228,10 +227,10 @@ func UpdateRefCmd(repo backend.Repository) tea.Cmd {
168 if bs, err := r.Branches(); err != nil && len(bs) == 0 {
169 return EmptyRepoMsg{}
170 }
171- log.Printf("ui: error getting HEAD reference: %v", err)
172+ logger.Debugf("ui: error getting HEAD reference: %v", err)
173 return common.ErrorMsg(err)
174 }
175- log.Printf("HEAD: %s", ref.Name())
176+ logger.Debugf("HEAD: %s", ref.Name())
177 return RefMsg(ref)
178 }
179 }
180diff --git a/ui/pages/repo/repo.go b/ui/pages/repo/repo.go
181index 5d498b15403bd395c306d80f924f478cd2714117..16c2af44fb00434276618356071e7cf24c04a500 100644
182--- a/ui/pages/repo/repo.go
183+++ b/ui/pages/repo/repo.go
184@@ -9,6 +9,7 @@ import (
185 "github.com/charmbracelet/bubbles/spinner"
186 tea "github.com/charmbracelet/bubbletea"
187 "github.com/charmbracelet/lipgloss"
188+ "github.com/charmbracelet/log"
189 "github.com/charmbracelet/soft-serve/git"
190 "github.com/charmbracelet/soft-serve/server/backend"
191 "github.com/charmbracelet/soft-serve/ui/common"
192@@ -17,6 +18,10 @@ import (
193 "github.com/charmbracelet/soft-serve/ui/components/tabs"
194 )
195
196+var (
197+ logger = log.WithPrefix("ui.repo")
198+)
199+
200 type state int
201
202 const (
203diff --git a/ui/pages/selection/selection.go b/ui/pages/selection/selection.go
204index 5638a743e1860d175e1687c73ae64d7c288598fa..bfd1f31f656118150815302dad0686096048a80b 100644
205--- a/ui/pages/selection/selection.go
206+++ b/ui/pages/selection/selection.go
207@@ -2,19 +2,23 @@ package selection
208
209 import (
210 "fmt"
211- "log"
212 "sort"
213
214 "github.com/charmbracelet/bubbles/key"
215 "github.com/charmbracelet/bubbles/list"
216 tea "github.com/charmbracelet/bubbletea"
217 "github.com/charmbracelet/lipgloss"
218+ "github.com/charmbracelet/log"
219 "github.com/charmbracelet/soft-serve/ui/common"
220 "github.com/charmbracelet/soft-serve/ui/components/code"
221 "github.com/charmbracelet/soft-serve/ui/components/selector"
222 "github.com/charmbracelet/soft-serve/ui/components/tabs"
223 )
224
225+var (
226+ logger = log.WithPrefix("ui.selection")
227+)
228+
229 type pane int
230
231 const (
232@@ -191,7 +195,7 @@ func (s *Selection) Init() tea.Cmd {
233 for _, r := range repos {
234 item, err := NewItem(r, cfg)
235 if err != nil {
236- log.Printf("ui: failed to create item for %s: %v", r.Name(), err)
237+ logger.Debugf("ui: failed to create item for %s: %v", r.Name(), err)
238 continue
239 }
240 sortedItems = append(sortedItems, item)
241diff --git a/ui/ui.go b/ui/ui.go
242index e81de69c330ec6317eb1020b4803b90920116c36..29f4cde45d7097ecf56f1beb826bb2f9fb9b9189 100644
243--- a/ui/ui.go
244+++ b/ui/ui.go
245@@ -2,12 +2,12 @@ package ui
246
247 import (
248 "errors"
249- "log"
250
251 "github.com/charmbracelet/bubbles/key"
252 "github.com/charmbracelet/bubbles/list"
253 tea "github.com/charmbracelet/bubbletea"
254 "github.com/charmbracelet/lipgloss"
255+ "github.com/charmbracelet/log"
256 "github.com/charmbracelet/soft-serve/server/backend"
257 "github.com/charmbracelet/soft-serve/ui/common"
258 "github.com/charmbracelet/soft-serve/ui/components/footer"
259@@ -17,6 +17,10 @@ import (
260 "github.com/charmbracelet/soft-serve/ui/pages/selection"
261 )
262
263+var (
264+ logger = log.WithPrefix("ui")
265+)
266+
267 type page int
268
269 const (
270@@ -164,7 +168,7 @@ func (ui *UI) IsFiltering() bool {
271
272 // Update implements tea.Model.
273 func (ui *UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
274- log.Printf("msg received: %T", msg)
275+ logger.Debugf("msg received: %T", msg)
276 cmds := make([]tea.Cmd, 0)
277 switch msg := msg.(type) {
278 case tea.WindowSizeMsg:
279@@ -294,7 +298,7 @@ func (ui *UI) openRepo(rn string) (backend.Repository, error) {
280 }
281 repos, err := cfg.Backend.Repositories()
282 if err != nil {
283- log.Printf("ui: failed to list repos: %v", err)
284+ logger.Debugf("ui: failed to list repos: %v", err)
285 return nil, err
286 }
287 for _, r := range repos {