Skip to content

Commit

Permalink
docs: fix example (#268)
Browse files Browse the repository at this point in the history
closes #251

Signed-off-by: Carlos Alexandro Becker <[email protected]>
  • Loading branch information
caarlos0 authored Feb 2, 2024
1 parent aa6373b commit ded3e14
Showing 1 changed file with 27 additions and 15 deletions.
42 changes: 27 additions & 15 deletions _example/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@ package main
import (
"fmt"
"path/filepath"
"time"

"github.com/charmbracelet/bubbles/spinner"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/keygen"
"github.com/charmbracelet/lipgloss"
"github.com/charmbracelet/log"
"github.com/charmbracelet/ssh"
"github.com/charmbracelet/wish"
Expand All @@ -17,22 +19,26 @@ import (
)

func main() {
k, err := keygen.New(filepath.Join(".wishlist", "server"), nil, keygen.Ed25519)
k, err := keygen.New(
filepath.Join(".wishlist", "server"),
keygen.WithKeyType(keygen.Ed25519),
)
if err != nil {
log.Fatalln(err)
log.Fatal("Server keypair", "err", err)
}
if !k.KeyPairExists() {
if err := k.WriteKeys(); err != nil {
log.Fatalln(err)
log.Fatal("Server keypair", "err", err)
}
}

// wishlist config
cfg := &wishlist.Config{
Port: 2233,
Factory: func(e wishlist.Endpoint) (*ssh.Server, error) {
return wish.NewServer(
wish.WithAddress(e.Address),
wish.WithHostKeyPEM(k.PrivateKeyPEM()),
wish.WithHostKeyPEM(k.RawPrivateKey()),
wish.WithPublicKeyAuth(func(ctx ssh.Context, key ssh.PublicKey) bool {
return true
}),
Expand All @@ -49,8 +55,9 @@ func main() {
{
Name: "bubbletea",
Middlewares: []wish.Middleware{
bm.Middleware(func(ssh.Session) (tea.Model, []tea.ProgramOption) {
return initialModel(), nil
bm.Middleware(func(s ssh.Session) (tea.Model, []tea.ProgramOption) {
r := bm.MakeRenderer(s)
return initialModel(r), nil
}),
},
},
Expand All @@ -60,6 +67,7 @@ func main() {
func(h ssh.Handler) ssh.Handler {
return func(s ssh.Session) {
_, _ = s.Write([]byte("hello, world\n\r"))
time.Sleep(time.Second * 5)
h(s)
}
},
Expand Down Expand Up @@ -89,41 +97,45 @@ func main() {

// start all the servers
if err := wishlist.Serve(cfg); err != nil {
log.Fatalln(err)
log.Fatal("Serve", "err", err)
}
}

type model struct {
spinner spinner.Model
spinner spinner.Model
renderer *lipgloss.Renderer
}

func initialModel() model {
s := spinner.NewModel()
func initialModel(r *lipgloss.Renderer) model {
s := spinner.New()
s.Spinner = spinner.Dot
return model{spinner: s}
return model{spinner: s, renderer: r}
}

func (m model) Init() tea.Cmd {
return spinner.Tick
return m.spinner.Tick
}

func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch msg := msg.(type) {
case tea.KeyMsg:
log.Println("keypress:", msg)
log.Info("keypress", "msg", msg)
switch msg.String() {
case "q", "esc", "ctrl+c":
return m, tea.Quit
}
case tea.WindowSizeMsg:
log.Println("window size:", msg)
log.Info("window size", "msg", msg)
}
var cmd tea.Cmd
m.spinner, cmd = m.spinner.Update(msg)
return m, cmd
}

func (m model) View() string {
str := fmt.Sprintf("\n\n %s Loading forever...press q to quit\n\n", m.spinner.View())
str := fmt.Sprintf(
"\n\n %s Loading forever... press q to quit\n\n",
m.renderer.NewStyle().Foreground(lipgloss.Color("5")).Render(m.spinner.View()),
)
return str
}

0 comments on commit ded3e14

Please sign in to comment.