mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
Move command line flags into it's own module
This commit is contained in:
parent
889aed11a5
commit
e92289ebae
@ -1,6 +1,6 @@
|
|||||||
wtf:
|
wtf:
|
||||||
colors:
|
colors:
|
||||||
background: gray
|
#background: gray
|
||||||
border:
|
border:
|
||||||
focusable: darkslateblue
|
focusable: darkslateblue
|
||||||
focused: orange
|
focused: orange
|
||||||
|
54
flags/flags.go
Normal file
54
flags/flags.go
Normal file
@ -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)
|
||||||
|
}
|
||||||
|
}
|
13
wtf.go
13
wtf.go
@ -19,6 +19,7 @@ import (
|
|||||||
"github.com/senorprogrammer/wtf/cryptoexchanges/bittrex"
|
"github.com/senorprogrammer/wtf/cryptoexchanges/bittrex"
|
||||||
"github.com/senorprogrammer/wtf/cryptoexchanges/blockfolio"
|
"github.com/senorprogrammer/wtf/cryptoexchanges/blockfolio"
|
||||||
"github.com/senorprogrammer/wtf/cryptoexchanges/cryptolive"
|
"github.com/senorprogrammer/wtf/cryptoexchanges/cryptolive"
|
||||||
|
"github.com/senorprogrammer/wtf/flags"
|
||||||
"github.com/senorprogrammer/wtf/gcal"
|
"github.com/senorprogrammer/wtf/gcal"
|
||||||
"github.com/senorprogrammer/wtf/git"
|
"github.com/senorprogrammer/wtf/git"
|
||||||
"github.com/senorprogrammer/wtf/github"
|
"github.com/senorprogrammer/wtf/github"
|
||||||
@ -260,17 +261,17 @@ func makeWidgets(app *tview.Application, pages *tview.Pages) {
|
|||||||
func main() {
|
func main() {
|
||||||
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
||||||
|
|
||||||
cmdFlags := wtf.NewCommandFlags()
|
flags := flags.NewFlags()
|
||||||
cmdFlags.Parse(version)
|
flags.Parse(version)
|
||||||
|
|
||||||
if cmdFlags.HasModule() {
|
if flags.HasModule() {
|
||||||
help.Display(cmdFlags.Module)
|
help.Display(flags.Module)
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg.CreateConfigDir()
|
cfg.CreateConfigDir()
|
||||||
cfg.WriteConfigFile()
|
cfg.WriteConfigFile()
|
||||||
|
|
||||||
loadConfig(cmdFlags.Config)
|
loadConfig(flags.Config)
|
||||||
setTerm()
|
setTerm()
|
||||||
|
|
||||||
app := tview.NewApplication()
|
app := tview.NewApplication()
|
||||||
@ -285,7 +286,7 @@ func main() {
|
|||||||
|
|
||||||
// Loop in a routine to redraw the screen
|
// Loop in a routine to redraw the screen
|
||||||
go redrawApp(app)
|
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 {
|
if err := app.SetRoot(pages, true).Run(); err != nil {
|
||||||
fmt.Printf("An error occurred: %v\n", err)
|
fmt.Printf("An error occurred: %v\n", err)
|
||||||
|
@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user