From e92289ebae4f0996094f786d2189969c1c04c777 Mon Sep 17 00:00:00 2001 From: Chris Cummer Date: Sat, 16 Jun 2018 08:31:11 -0700 Subject: [PATCH] Move command line flags into it's own module --- _sample_configs/simple_config.yml | 2 +- flags/flags.go | 54 +++++++++++++++++++++++++++++++ wtf.go | 13 ++++---- wtf/command_flags.go | 53 ------------------------------ 4 files changed, 62 insertions(+), 60 deletions(-) create mode 100644 flags/flags.go delete mode 100644 wtf/command_flags.go diff --git a/_sample_configs/simple_config.yml b/_sample_configs/simple_config.yml index 3d08666d5..efa5d2bf4 100644 --- a/_sample_configs/simple_config.yml +++ b/_sample_configs/simple_config.yml @@ -1,6 +1,6 @@ wtf: colors: - background: gray + #background: gray border: focusable: darkslateblue focused: orange diff --git a/flags/flags.go b/flags/flags.go new file mode 100644 index 000000000..52cb3636c --- /dev/null +++ b/flags/flags.go @@ -0,0 +1,54 @@ +package flags + +import ( + "fmt" + "os" + "path/filepath" + + goFlags "github.com/jessevdk/go-flags" + "github.com/senorprogrammer/wtf/wtf" +) + +type Flags struct { + Config string `short:"c" long:"config" optional:"yes" description:"Path to config file"` + Module string `short:"m" long:"module" optional:"yes" description:"Display info about a specific module, i.e.: 'wtf -m=todo'"` + Version bool `short:"v" long:"version" description:"Show Version Info"` +} + +func NewFlags() *Flags { + flags := Flags{} + return &flags +} + +/* -------------------- Exported Functions -------------------- */ + +func (flags *Flags) HasConfig() bool { + return len(flags.Config) > 0 +} + +func (flags *Flags) HasModule() bool { + return len(flags.Module) > 0 +} + +func (flags *Flags) Parse(version string) { + parser := goFlags.NewParser(flags, goFlags.Default) + if _, err := parser.Parse(); err != nil { + if flagsErr, ok := err.(*goFlags.Error); ok && flagsErr.Type == goFlags.ErrHelp { + os.Exit(0) + } + } + + if !flags.HasConfig() { + homeDir, err := wtf.Home() + if err != nil { + os.Exit(1) + } + + flags.Config = filepath.Join(homeDir, ".wtf", "config.yml") + } + + if flags.Version { + fmt.Printf("Version: %s\n", version) + os.Exit(0) + } +} diff --git a/wtf.go b/wtf.go index 1e6aee8fc..deb722929 100644 --- a/wtf.go +++ b/wtf.go @@ -19,6 +19,7 @@ import ( "github.com/senorprogrammer/wtf/cryptoexchanges/bittrex" "github.com/senorprogrammer/wtf/cryptoexchanges/blockfolio" "github.com/senorprogrammer/wtf/cryptoexchanges/cryptolive" + "github.com/senorprogrammer/wtf/flags" "github.com/senorprogrammer/wtf/gcal" "github.com/senorprogrammer/wtf/git" "github.com/senorprogrammer/wtf/github" @@ -260,17 +261,17 @@ func makeWidgets(app *tview.Application, pages *tview.Pages) { func main() { log.SetFlags(log.LstdFlags | log.Lshortfile) - cmdFlags := wtf.NewCommandFlags() - cmdFlags.Parse(version) + flags := flags.NewFlags() + flags.Parse(version) - if cmdFlags.HasModule() { - help.Display(cmdFlags.Module) + if flags.HasModule() { + help.Display(flags.Module) } cfg.CreateConfigDir() cfg.WriteConfigFile() - loadConfig(cmdFlags.Config) + loadConfig(flags.Config) setTerm() app := tview.NewApplication() @@ -285,7 +286,7 @@ func main() { // Loop in a routine to redraw the screen go redrawApp(app) - go watchForConfigChanges(app, cmdFlags.Config, display.Grid, pages) + go watchForConfigChanges(app, flags.Config, display.Grid, pages) if err := app.SetRoot(pages, true).Run(); err != nil { fmt.Printf("An error occurred: %v\n", err) diff --git a/wtf/command_flags.go b/wtf/command_flags.go deleted file mode 100644 index 9b9980bb2..000000000 --- a/wtf/command_flags.go +++ /dev/null @@ -1,53 +0,0 @@ -package wtf - -import ( - "fmt" - "os" - "path/filepath" - - flags "github.com/jessevdk/go-flags" -) - -type CommandFlags struct { - Config string `short:"c" long:"config" optional:"yes" description:"Path to config file"` - Module string `short:"m" long:"module" optional:"yes" description:"Display info about a specific module, i.e.: 'wtf -m=todo'"` - Version bool `short:"v" long:"version" description:"Show Version Info"` -} - -func NewCommandFlags() *CommandFlags { - cmdFlags := CommandFlags{} - return &cmdFlags -} - -/* -------------------- Exported Functions -------------------- */ - -func (cmdFlags *CommandFlags) HasConfig() bool { - return len(cmdFlags.Config) > 0 -} - -func (cmdFlags *CommandFlags) HasModule() bool { - return len(cmdFlags.Module) > 0 -} - -func (cmdFlags *CommandFlags) Parse(version string) { - parser := flags.NewParser(cmdFlags, flags.Default) - if _, err := parser.Parse(); err != nil { - if flagsErr, ok := err.(*flags.Error); ok && flagsErr.Type == flags.ErrHelp { - os.Exit(0) - } - } - - if !cmdFlags.HasConfig() { - homeDir, err := Home() - if err != nil { - os.Exit(1) - } - - cmdFlags.Config = filepath.Join(homeDir, ".wtf", "config.yml") - } - - if cmdFlags.Version { - fmt.Printf("Version: %s\n", version) - os.Exit(0) - } -}