77 lines
1.9 KiB
Go
77 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/dixonwille/wmenu"
|
|
)
|
|
|
|
type stringSlice []string
|
|
|
|
type flags struct {
|
|
redisAddr string
|
|
redisPwd string
|
|
redisDB int
|
|
tokens stringSlice
|
|
}
|
|
|
|
var (
|
|
//ErrStdRead it thrown when it's not possible to read from the standard input
|
|
ErrStdRead = errors.New("couldn't read string from stdin")
|
|
)
|
|
|
|
func (i *stringSlice) Set(value string) error {
|
|
|
|
*i = append(*i, value)
|
|
return nil
|
|
}
|
|
|
|
func getFlags() (flags, error) {
|
|
|
|
var cmdFlags flags
|
|
|
|
const (
|
|
defaultAddr = "127.0.0.1:6379"
|
|
addrUsage = "The address of the redis instance"
|
|
defaultPwd = ""
|
|
pwdUsage = "The password of the redis instance"
|
|
defaultDB = 0
|
|
dbUsage = "The database to be selected after connecting to redis instance"
|
|
tokenUsage = "A bot token to be added to the set of tokens"
|
|
)
|
|
|
|
flag.StringVar(&(cmdFlags.redisAddr), "redisAddr", defaultAddr, addrUsage)
|
|
flag.StringVar(&(cmdFlags.redisAddr), "a", defaultAddr, addrUsage+"(shorthand)")
|
|
flag.StringVar(&(cmdFlags.redisPwd), "redisPwd", defaultPwd, pwdUsage)
|
|
flag.StringVar(&(cmdFlags.redisPwd), "p", defaultPwd, pwdUsage+"(shorthand)")
|
|
flag.IntVar(&(cmdFlags.redisDB), "redisDB", defaultDB, dbUsage)
|
|
flag.IntVar(&(cmdFlags.redisDB), "d", defaultDB, dbUsage+"(shorthand)")
|
|
flag.Var(&(cmdFlags.tokens), "token", tokenUsage)
|
|
flag.Var(&(cmdFlags.tokens), "t", tokenUsage+"(shorthand")
|
|
|
|
flag.Parse()
|
|
|
|
return cmdFlags, nil
|
|
}
|
|
|
|
func mainMenu() {
|
|
fmt.Println("Welcome in barandaBot! Here you can control the bot(s) options and configurations.")
|
|
menu := wmenu.NewMenu("What do you want to do?")
|
|
menu.LoopOnInvalid()
|
|
menu.Option("Start Bot(s)", nil, true, nil)
|
|
menu.Option("Add bot token(s)", nil, false, func(opt wmenu.Opt) error {
|
|
return addBotTokens(redisClient, nil)
|
|
})
|
|
menu.Option("Remove bot token(s)", nil, false, func(opt wmenu.Opt) error {
|
|
return removeBotTokens(redisClient)
|
|
})
|
|
|
|
err := menu.Run()
|
|
if err != nil {
|
|
log.Printf("Error in main menu: %v", err)
|
|
}
|
|
}
|