summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authortjp <tjp@ctrl-c.club>2024-01-17 08:55:42 -0700
committertjp <tjp@ctrl-c.club>2024-01-17 08:55:42 -0700
commitdd2a06c1e1391fe6242015330b7c61fa37fd67cc (patch)
tree8b07e964f40f70de898046e5435c8932768f2b21 /main.go
parentdfebc9013b5414e9a3c5f940704e831c31ce35d2 (diff)
start of a bubbletea TUI
Diffstat (limited to 'main.go')
-rw-r--r--main.go108
1 files changed, 66 insertions, 42 deletions
diff --git a/main.go b/main.go
index eb85922..b2f5d98 100644
--- a/main.go
+++ b/main.go
@@ -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
}
}