mtfosbot/main.go
2018-10-02 00:11:32 +08:00

100 lines
2.1 KiB
Go

package main
import (
"encoding/gob"
"errors"
"flag"
"log"
"os"
"path"
"strconv"
"strings"
"git.trj.tw/golang/mtfosbot/module/apis/twitch"
"git.trj.tw/golang/mtfosbot/module/cmd"
"git.trj.tw/golang/mtfosbot/module/options"
"git.trj.tw/golang/mtfosbot/module/utils"
"git.trj.tw/golang/mtfosbot/model"
"git.trj.tw/golang/mtfosbot/module/background"
"git.trj.tw/golang/mtfosbot/module/config"
twitchirc "git.trj.tw/golang/mtfosbot/module/twitch-irc"
"git.trj.tw/golang/mtfosbot/router/routes"
"github.com/gin-gonic/gin"
)
var server *gin.Engine
func init() {
options.RegFlag()
flag.Parse()
}
func main() {
runOptions := options.GetFlag()
if runOptions.Help {
flag.Usage()
return
}
err := config.LoadConfig(runOptions.Config)
if err != nil {
log.Fatal(err)
}
// connect to database
db, err := model.NewDB()
if err != nil {
log.Fatal(err)
}
defer db.Close()
if runOptions.DBTool {
cmd.DBTool()
}
registerTypes()
background.SetBackground()
// create http server
server = routes.NewServ()
routes.SetRoutes(server)
go twitchirc.InitIRC()
// create thumbnail directory
conf := config.GetConf()
if !utils.CheckExists(conf.ImageRoot, true) {
log.Fatal(errors.New("image root not exists"))
}
if !utils.CheckExists(path.Join(conf.ImageRoot, "thumbnail"), true) {
err = os.MkdirAll(path.Join(conf.ImageRoot, "thumbnail"), 0775)
if err != nil {
log.Fatal(err)
}
}
if !utils.CheckExists(conf.LogImageRoot, true) {
log.Fatal(errors.New("log image root not exists"))
}
server.Run(strings.Join([]string{":", strconv.Itoa(config.GetConf().Port)}, ""))
}
func registerTypes() {
gob.Register(model.Account{})
gob.Register(model.Commands{})
gob.Register(model.DonateSetting{})
gob.Register(model.FacebookPage{})
gob.Register(model.KeyCommands{})
gob.Register(model.LineGroup{})
gob.Register(model.LineMessageLog{})
gob.Register(model.LineUser{})
gob.Register(model.OpayDonateList{})
gob.Register(model.TwitchChannel{})
gob.Register(model.YoutubeChannel{})
gob.Register(twitch.TwitchTokenData{})
gob.Register(twitch.UserInfo{})
gob.Register(map[string]interface{}{})
}