diff --git a/ui/pager.go b/ui/pager.go index 4aa518e..df86a2e 100644 --- a/ui/pager.go +++ b/ui/pager.go @@ -3,6 +3,7 @@ package ui import ( "errors" "fmt" + "log" "math" "strings" @@ -347,6 +348,9 @@ func renderWithGlamour(m pagerModel, md string) tea.Cmd { return func() tea.Msg { s, err := glamourRender(m, md) if err != nil { + if debug { + log.Println("error rendering with Glamour:", err) + } return errMsg(err) } return contentRenderedMsg(s) @@ -361,6 +365,9 @@ func saveDocumentNote(cc *charm.Client, id int, note string) tea.Cmd { } return func() tea.Msg { if err := cc.SetMarkdownNote(id, note); err != nil { + if debug { + log.Println("error saving note:", err) + } return errMsg(err) } return noteSavedMsg(&charm.Markdown{ID: id, Note: note}) diff --git a/ui/stash.go b/ui/stash.go index f27b571..11f06a6 100644 --- a/ui/stash.go +++ b/ui/stash.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "io/ioutil" + "log" "math" "sort" "strings" @@ -696,6 +697,9 @@ func loadRemoteMarkdown(cc *charm.Client, id int, t markdownType) tea.Cmd { } if err != nil { + if debug { + log.Println("error loading remote markdown:", err) + } return errMsg(err) } @@ -717,6 +721,9 @@ func loadLocalMarkdown(md *markdown) tea.Cmd { data, err := ioutil.ReadFile(md.localPath) if err != nil { + if debug { + log.Println("error reading local markdown:", err) + } return errMsg(err) } md.Body = string(data) diff --git a/ui/ui.go b/ui/ui.go index 582785e..9e52a19 100644 --- a/ui/ui.go +++ b/ui/ui.go @@ -21,6 +21,7 @@ const noteCharacterLimit = 256 // should match server var ( config Config glowLogoTextColor = common.Color("#ECFD65") + debug = false // true if we're logging to a file, in which case we'll log more stuff ) // Config contains configuration specified to the TUI. @@ -40,6 +41,7 @@ func NewProgram(style string, cfg Config) *tea.Program { log.Printf("High performance pager: %v", cfg.HighPerformancePager) log.Printf("Glamour rendering: %v", cfg.GlamourEnabled) log.Println("Bubble Tea now initializing...") + debug = true } config = cfg return tea.NewProgram(initialize(cfg, style), update, view) @@ -50,7 +52,14 @@ func NewProgram(style string, cfg Config) *tea.Program { type errMsg error type newCharmClientMsg *charm.Client type sshAuthErrMsg struct{} -type keygenFailedMsg struct{} +type keygenFailedMsg struct { + err error +} + +func (k keygenFailedMsg) Error() string { + return k.err.Error() +} + type keygenSuccessMsg struct{} type initLocalFileSearchMsg struct { cwd string @@ -60,9 +69,18 @@ type foundLocalFileMsg gitcha.SearchResult type localFileSearchFinished struct{} type gotStashMsg []*charm.Markdown type stashLoadErrMsg struct{ err error } + +func (s stashLoadErrMsg) Error() string { + return s.err.Error() +} + type gotNewsMsg []*charm.Markdown type newsLoadErrMsg struct{ err error } +func (s newsLoadErrMsg) Error() string { + return s.err.Error() +} + // MODEL type state int @@ -376,6 +394,9 @@ func errorView(err error, fatal bool) string { func findLocalFiles() tea.Msg { cwd, err := os.Getwd() if err != nil { + if debug { + log.Println("error finding local files:", err) + } return errMsg(err) } @@ -408,8 +429,14 @@ func newCharmClient(identityFile *string) tea.Cmd { cc, err := charm.NewClient(cfg) if err == charm.ErrMissingSSHAuth { + if debug { + log.Println("missing SSH auth:", err) + } return sshAuthErrMsg{} } else if err != nil { + if debug { + log.Println("error creating new charm client:", err) + } return errMsg(err) } @@ -421,6 +448,9 @@ func loadStash(m stashModel) tea.Cmd { return func() tea.Msg { stash, err := m.cc.GetStash(m.page) if err != nil { + if debug { + log.Println("error loading stash:", err) + } return stashLoadErrMsg{err} } return gotStashMsg(stash) @@ -431,6 +461,9 @@ func loadNews(m stashModel) tea.Cmd { return func() tea.Msg { news, err := m.cc.GetNews(1) // just fetch the first page if err != nil { + if debug { + log.Println("error loading news:", err) + } return newsLoadErrMsg{err} } return gotNewsMsg(news) @@ -440,7 +473,10 @@ func loadNews(m stashModel) tea.Cmd { func generateSSHKeys() tea.Msg { _, err := keygen.NewSSHKeyPair(nil) if err != nil { - return keygenFailedMsg{} + if debug { + log.Println("keygen failed:", err) + } + return keygenFailedMsg{err} } return keygenSuccessMsg{} }