diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 56 |
1 files changed, 45 insertions, 11 deletions
@@ -1,6 +1,7 @@ package main import ( + "flag" "fmt" "io" "log" @@ -10,6 +11,9 @@ import ( "github.com/chzyer/readline" ) +var cmdMode = flag.String("c", "", "") +var helpMode = flag.Bool("h", false, "") + func main() { conf, err := getConfig() if err != nil { @@ -22,11 +26,6 @@ func main() { state := NewBrowserState(conf) - rl, err := readline.New(Prompt) - if err != nil { - log.Fatal(err) - } - marks, err := getMarks() if err != nil { log.Fatal(err) @@ -45,11 +44,40 @@ func main() { } state.Identities = idents + flag.Parse() + + if *helpMode { + if err := Help(state, "cli"); err != nil { + writeError(err.Error()) + } + return + } + + if *cmdMode != "" { + conf.Quiet = true + state.Quiet = true + if err := handleCmdLine(state, conf, *cmdMode); err != nil { + writeError(err.Error()) + } + return + } + + rl, err := readline.New(Prompt) + if err != nil { + log.Fatal(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()) + } + } + for { rl.SetPrompt(Prompt) line, err := rl.Readline() @@ -60,15 +88,21 @@ func main() { log.Fatal(err) } - for _, cmd := range strings.Split(line, ";") { - if c, err := ParseCommand(strings.TrimSpace(cmd)); err != nil { - writeError(err.Error()) - } else if err := RunCommand(conf, c, state); err != nil { - writeError(err.Error()) - } + if err := handleCmdLine(state, conf, line); err != nil { + writeError(err.Error()) } + } +} +func handleCmdLine(state *BrowserState, conf *Config, 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 { + return err + } } + return nil } const Prompt = promptStyle + "X-1" + ansiClear + "> " |
