-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
87 lines (74 loc) · 1.84 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package main
import (
"database/sql"
"os"
"github.com/godwhoa/oodle/bot"
"github.com/godwhoa/oodle/irc"
"github.com/godwhoa/oodle/oodle"
"github.com/godwhoa/oodle/plugins/core"
"github.com/godwhoa/oodle/plugins/hackterm"
"github.com/godwhoa/oodle/plugins/lazy"
"github.com/godwhoa/oodle/plugins/oodnet"
"github.com/godwhoa/oodle/plugins/sed"
"github.com/godwhoa/oodle/plugins/urban"
"github.com/godwhoa/oodle/plugins/webhook"
"github.com/godwhoa/oodle/plugins/wiki"
_ "github.com/mattn/go-sqlite3"
flag "github.com/ogier/pflag"
"github.com/sirupsen/logrus"
"github.com/spf13/viper"
)
func must(errors ...error) error {
for _, err := range errors {
if err != nil {
return err
}
}
return nil
}
func main() {
confpath := flag.StringP("config", "c", "config.toml", "Specifies which configfile to use")
doUpgrade := flag.BoolP("upgrade", "u", false, "Upgrades oodle")
flag.Parse()
logger := logrus.New()
logger.Formatter = &logrus.TextFormatter{DisableColors: true}
logger.SetLevel(logrus.DebugLevel)
if *doUpgrade {
if err := upgrade(); err != nil {
logger.Fatal(err)
}
os.Exit(0)
}
viper.SetConfigFile(*confpath)
if err := viper.ReadInConfig(); err != nil {
logger.Fatal(err)
}
oodle.SetDefaults()
db, err := sql.Open("sqlite3", viper.GetString("dbpath"))
if err != nil {
logger.Fatal(err)
}
ircClient := irc.NewIRCClient(logger)
go ircClient.MiniClient()
oodleBot := bot.NewBot(logger, ircClient)
deps := &oodle.Deps{
IRC: ircClient,
Bot: oodleBot,
Logger: logger,
DB: db,
}
// register plugins and log failure
if err := must(
core.Register(deps),
hackterm.Register(deps),
urban.Register(deps),
wiki.Register(deps),
sed.Register(deps),
webhook.Register(deps),
oodnet.Register(deps),
lazy.Register(deps),
); err != nil {
logger.Fatal(err)
}
logger.Fatal(oodleBot.Start())
}