mirror of
https://github.com/charmbracelet/gum
synced 2024-05-17 21:56:42 +02:00
43 lines
878 B
Go
43 lines
878 B
Go
package pager
|
|
|
|
import (
|
|
"github.com/charmbracelet/bubbles/viewport"
|
|
tea "github.com/charmbracelet/bubbletea"
|
|
"github.com/charmbracelet/glamour"
|
|
"github.com/charmbracelet/gum/internal/stdin"
|
|
)
|
|
|
|
// Run provides a shell script interface for the viewport bubble.
|
|
// https://github.com/charmbracelet/bubbles/viewport
|
|
func (o Options) Run() error {
|
|
vp := viewport.New(o.Style.Width, o.Style.Height)
|
|
vp.Style = o.Style.ToLipgloss()
|
|
var err error
|
|
|
|
if o.Content == "" {
|
|
o.Content, err = stdin.Read()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
renderer, err := glamour.NewTermRenderer(
|
|
glamour.WithWordWrap(80),
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
md, err := renderer.Render(o.Content)
|
|
vp.SetContent(md)
|
|
|
|
model := model{
|
|
viewport: vp,
|
|
helpStyle: o.HelpStyle.ToLipgloss(),
|
|
}
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return tea.NewProgram(model, tea.WithAltScreen()).Start()
|
|
}
|