diff options
| author | tjp <tjp@ctrl-c.club> | 2024-01-17 08:55:42 -0700 |
|---|---|---|
| committer | tjp <tjp@ctrl-c.club> | 2024-01-17 08:55:42 -0700 |
| commit | dd2a06c1e1391fe6242015330b7c61fa37fd67cc (patch) | |
| tree | 8b07e964f40f70de898046e5435c8932768f2b21 /main.go | |
| parent | dfebc9013b5414e9a3c5f940704e831c31ce35d2 (diff) | |
start of a bubbletea TUI
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 108 |
1 files changed, 66 insertions, 42 deletions
@@ -11,39 +11,17 @@ import ( "github.com/chzyer/readline" ) -var cmdMode = flag.String("c", "", "") -var helpMode = flag.Bool("h", false, "") -var quietMode = flag.Bool("q", false, "") +var ( + cmdMode = flag.String("c", "", "") + helpMode = flag.Bool("h", false, "") + quietMode = flag.Bool("q", false, "") +) func main() { - conf, err := getConfig() - if err != nil { - log.Fatal(err) - } - - if err := getTofuStore(); err != nil { - log.Fatal(err) - } - - state := NewBrowserState(conf) - - marks, err := getMarks() + state, err := buildInitialState() if err != nil { log.Fatal(err) } - state.Marks = marks - - tours, err := getTours() - if err != nil { - log.Fatal(err) - } - state.NamedTours = tours - - idents, err := getIdentities() - if err != nil { - log.Fatal(err) - } - state.Identities = idents flag.Parse() @@ -55,9 +33,8 @@ func main() { } if *cmdMode != "" { - conf.Quiet = true state.Quiet = true - if err := handleCmdLine(state, conf, *cmdMode); err != nil { + if err := handleCmdLine(state, *cmdMode); err != nil { writeError(err.Error()) } return @@ -67,25 +44,72 @@ func main() { state.Quiet = true } - rl, err := readline.New(Prompt) + if urls := flag.Args(); len(urls) > 0 { + if err := Go(state, urls[0]); err != nil { + writeError(err.Error()) + } + } + + // runInteractivePrompt(state) + runTUI(state) +} + +func buildReadline(prompt string, conf *Config) (*readline.Instance, error) { + rl, err := readline.New(prompt) if err != nil { - log.Fatal(err) + return nil, err } if conf.VimKeys { rl.SetVimMode(true) } - state.Readline = rl - if urls := flag.Args(); len(urls) > 0 { - if err := Go(state, urls[0], conf); err != nil { - writeError(err.Error()) - } + return rl, nil +} + +func buildInitialState() (*BrowserState, error) { + conf, err := getConfig() + if err != nil { + return nil, err + } + + if err := getTofuStore(); err != nil { + return nil, err + } + + state := NewBrowserState(conf) + + marks, err := getMarks() + if err != nil { + return nil, err + } + state.Marks = marks + + tours, err := getTours() + if err != nil { + return nil, err + } + state.NamedTours = tours + + idents, err := getIdentities() + if err != nil { + return nil, err } + state.Identities = idents + + rl, err := buildReadline(Prompt, conf) + if err != nil { + log.Fatal(err) + } + state.Readline = rl + + return state, nil +} +func runInteractivePrompt(state *BrowserState) { for { - rl.SetPrompt(Prompt) - line, err := rl.Readline() + state.Readline.SetPrompt(Prompt) + line, err := state.Readline.Readline() if err == io.EOF { break } @@ -93,17 +117,17 @@ func main() { log.Fatal(err) } - if err := handleCmdLine(state, conf, line); err != nil { + if err := handleCmdLine(state, line); err != nil { writeError(err.Error()) } } } -func handleCmdLine(state *BrowserState, conf *Config, line string) error { +func handleCmdLine(state *BrowserState, line string) error { for _, cmd := range strings.Split(line, ";") { if c, err := ParseCommand(strings.TrimSpace(cmd)); err != nil { return err - } else if err := RunCommand(conf, c, state); err != nil { + } else if err := RunCommand(c, state); err != nil { return err } } |
