grim/wasdead
Clone
Summary
Browse
Changes
Graph
use shlex.Split instead of our crappy regex split
draft
2019-05-11, Gary Kramlich
e42b44a80cf1
use shlex.Split instead of our crappy regex split
package
run
import
(
"os"
"os/signal"
"syscall"
"time"
log
"github.com/sirupsen/logrus"
"bitbucket.org/TheToyz/nowdead/database"
"bitbucket.org/TheToyz/nowdead/discord"
"bitbucket.org/TheToyz/nowdead/globals"
"bitbucket.org/TheToyz/nowdead/presence"
"bitbucket.org/TheToyz/nowdead/twitch"
)
type
RunCmd
struct
{
DiscordToken
string
`kong:"flag,name='discord-token',env='DISCORD_TOKEN',help='The bot token for discord',required"`
TwitchClientID
string
`kong:"flag,name='twitch-client-id',env='TWITCH_CLIENT_ID',help='The Twitch client ID',required"`
}
var
(
startTime
time
.
Time
)
func
init
()
{
log
.
SetOutput
(
os
.
Stdout
)
log
.
SetLevel
(
log
.
DebugLevel
)
}
func
(
r
*
RunCmd
)
Run
(
g
*
globals
.
Globals
)
error
{
if
err
:=
database
.
Open
(
g
.
DatabasePath
);
err
!=
nil
{
return
err
}
defer
database
.
Close
()
if
len
(
r
.
TwitchClientID
)
>
0
{
provider
,
err
:=
twitch
.
New
(
r
.
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
(
r
.
DiscordToken
)
if
err
!=
nil
{
return
err
}
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
{
return
err
}
case
s
:=
<-
signalChan
:
log
.
Infof
(
"caught %s Exiting..."
,
s
)
return
nil
}
}
return
nil
}