grim/wasdead

Overhaul the entire database layer force it to only use bitcask for the time being
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time"
log "github.com/sirupsen/logrus"
"gopkg.in/alecthomas/kingpin.v3-unstable"
"bitbucket.org/TheToyz/nowdead/database"
"bitbucket.org/TheToyz/nowdead/discord"
"bitbucket.org/TheToyz/nowdead/presence"
"bitbucket.org/TheToyz/nowdead/twitch"
)
const (
version = "0.1.0"
)
var (
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()
startTime time.Time
)
func init() {
log.SetOutput(os.Stdout)
log.SetLevel(log.DebugLevel)
}
func main() {
_, err := app.Parse(os.Args[1:])
if err != nil {
fmt.Printf("error: %v\n", err)
return
}
if err := database.Open("db"); err != nil {
log.Errorf("failed to open database: %v", err)
return
}
defer database.Close()
if len(*twitchClientID) > 0 {
provider, err := twitch.New(*twitchClientID)
if err != nil {
log.Panic(err)
}
presence.AddProvider("twitch.tv", provider)
log.Info("Added twitch provider")
}
// create our error channel that's used by the various clients
errChan := make(chan error, 1)
// create the discord client
dc, err := discord.New(*discordToken)
if err != nil {
fmt.Println("error creating Discord session,", err)
return
}
dc.Start(errChan)
defer dc.Shutdown()
log.Info("Connected to discord")
// create a channel for handling unix signals
signalChan := make(chan os.Signal, 1)
signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill)
// start the main loop
log.Info("Bot is now running. Press CTRL-C to exit.")
for {
select {
case err := <-errChan:
if err != nil {
log.Error(err)
return
}
case s := <-signalChan:
log.Infof("caught %s Exiting...", s)
return
}
}
}