541e994f89ca7cdd83d0daf55c1320e145cab53f

Author
Toby Padilla <toby@charm.sh>
Committer
Toby Padilla <toby@charm.sh>
Date

Message

Pass ProgramOptions to Bubble Tea middleware

Diff

 1diff --git a/main.go b/main.go
 2index 143b8c85058209c2d8379a67a2ddbb67668a7bff..867391175c769a1797b8e36993cb855d52a92412 100644
 3--- a/main.go
 4+++ b/main.go
 5@@ -3,6 +3,7 @@ package main
 6 import (
 7 	"smoothie/tui"
 8 
 9+	tea "github.com/charmbracelet/bubbletea"
10 	"github.com/meowgorithm/babyenv"
11 )
12 
13@@ -17,7 +18,8 @@ func main() {
14 	if err != nil {
15 		panic(err)
16 	}
17-	s, err := NewServer(cfg.Port, cfg.KeyPath, LoggingMiddleware(), BubbleTeaMiddleware(tui.SessionHandler))
18+	btm := BubbleTeaMiddleware(tui.SessionHandler, tea.WithAltScreen())
19+	s, err := NewServer(cfg.Port, cfg.KeyPath, LoggingMiddleware(), btm)
20 	if err != nil {
21 		panic(err)
22 	}
23diff --git a/server.go b/server.go
24index ea735c41c1304a1eeb46ae294fb6dbba8f263403..2f53283c5334176fde1bcd90d798c05a86598782 100644
25--- a/server.go
26+++ b/server.go
27@@ -25,12 +25,13 @@ func LoggingMiddleware() Middleware {
28 	}
29 }
30 
31-func BubbleTeaMiddleware(bth func(ssh.Session) tea.Model) Middleware {
32+func BubbleTeaMiddleware(bth func(ssh.Session) tea.Model, opts ...tea.ProgramOption) Middleware {
33 	return func(sh ssh.Handler) ssh.Handler {
34 		return func(s ssh.Session) {
35 			m := bth(s)
36 			if m != nil {
37-				p := tea.NewProgram(m, tea.WithAltScreen(), tea.WithInput(s), tea.WithOutput(s))
38+				opts = append(opts, tea.WithInput(s), tea.WithOutput(s))
39+				p := tea.NewProgram(m, opts...)
40 				err := p.Start()
41 				if err != nil {
42 					log.Printf("%s error %v: %s\n", s.RemoteAddr().String(), s.Command(), err)