grim/wasdead

7c9ce8b3fc17
Parents 6de6cf04e7a6
Children de3d9d1a3960
Replaced flag with kingpin, added envvar support as well
  • +11 -0
    database/database.go
  • +3 -0
    go.mod
  • +6 -0
    go.sum
  • +21 -18
    main.go
  • --- a/database/database.go Sun Apr 07 00:37:54 2019 -0500
    +++ b/database/database.go Sun Apr 07 01:26:12 2019 -0500
    @@ -19,3 +19,14 @@
    func Get(name string) Database {
    return supported[name]
    }
    +
    +func Supported() []string {
    + ret := make([]string, len(supported))
    + i := 0
    + for n, _ := range supported {
    + ret[i] = n
    + i++
    + }
    +
    + return ret
    +}
    --- a/go.mod Sun Apr 07 00:37:54 2019 -0500
    +++ b/go.mod Sun Apr 07 01:26:12 2019 -0500
    @@ -3,6 +3,9 @@
    go 1.12
    require (
    + github.com/alecthomas/kingpin v2.2.6+incompatible
    + github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc // indirect
    + github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf // indirect
    github.com/bwmarrin/discordgo v0.19.0
    github.com/dustin/go-humanize v1.0.0
    github.com/go-redis/redis v6.15.2+incompatible
    --- a/go.sum Sun Apr 07 00:37:54 2019 -0500
    +++ b/go.sum Sun Apr 07 01:26:12 2019 -0500
    @@ -1,5 +1,11 @@
    github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
    github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
    +github.com/alecthomas/kingpin v2.2.6+incompatible h1:5svnBTFgJjZvGKyYBtMB0+m5wvrbUHiqye8wRJMlnYI=
    +github.com/alecthomas/kingpin v2.2.6+incompatible/go.mod h1:59OFYbFVLKQKq+mqrL6Rw5bR0c3ACQaawgXx0QYndlE=
    +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU=
    +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
    +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY=
    +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
    github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
    github.com/bwmarrin/discordgo v0.19.0 h1:kMED/DB0NR1QhRcalb85w0Cu3Ep2OrGAqZH1R5awQiY=
    github.com/bwmarrin/discordgo v0.19.0/go.mod h1:O9S4p+ofTFwB02em7jkpkV8M3R0/PUVOwN61zSZ0r4Q=
    --- a/main.go Sun Apr 07 00:37:54 2019 -0500
    +++ b/main.go Sun Apr 07 01:26:12 2019 -0500
    @@ -1,13 +1,13 @@
    package main
    import (
    - "flag"
    "fmt"
    "os"
    "os/signal"
    "syscall"
    "time"
    + "github.com/alecthomas/kingpin"
    log "github.com/sirupsen/logrus"
    "bitbucket.org/TheToyz/nowdead/database"
    @@ -16,11 +16,18 @@
    "bitbucket.org/TheToyz/nowdead/twitch"
    )
    +const (
    + version = "0.1.0"
    +)
    +
    var (
    - DiscordToken string
    - TwitchToken string
    - DatabaseType string
    - startTime time.Time
    + app = kingpin.New("nowdead", "discord auto announce streaming bot").Version(version)
    + discordToken = app.Flag("discord-token", "The bot token for discord").Short('d').Envar("NOWDEAD_DISCORD_TOKEN").Required().String()
    + twitchClientID = app.Flag("twitch-client-id", "The client id").Short('t').Envar("NOWDEAD_TWITCH_CLIENT_ID").Required().String()
    +
    + databaseType = app.Flag("database", "The database engine to use").Default("bitcask").Enum(database.Supported()...)
    +
    + startTime time.Time
    db database.Database
    )
    @@ -28,23 +35,19 @@
    func init() {
    log.SetOutput(os.Stdout)
    log.SetLevel(log.DebugLevel)
    -
    - flag.StringVar(&DiscordToken, "t", "", "Discord Bot Token")
    - flag.StringVar(&TwitchToken, "tcid", "", "Twitch Client ID")
    - flag.StringVar(&DatabaseType, "db_type", "bitcask", "Database type to use (default: bitcask)")
    -
    - flag.Parse()
    }
    func main() {
    - db = database.Get(DatabaseType)
    -
    - if len(DiscordToken) <= 0 || len(TwitchToken) <= 0 {
    - log.Panic("Discord Token and Twitch Client ID must be set")
    + _, err := app.Parse(os.Args[1:])
    + if err != nil {
    + fmt.Printf("error: %v\n", err)
    + return
    }
    - if len(TwitchToken) > 0 {
    - provider, err := twitch.New(TwitchToken)
    + db = database.Get(*databaseType)
    +
    + if len(*twitchClientID) > 0 {
    + provider, err := twitch.New(*twitchClientID)
    if err != nil {
    log.Panic(err)
    }
    @@ -57,7 +60,7 @@
    errChan := make(chan error, 1)
    // create the discord client
    - dc, err := discord.New(DiscordToken, db)
    + dc, err := discord.New(*discordToken, db)
    if err != nil {
    fmt.Println("error creating Discord session,", err)
    return