2023-05-24 19:23:52 +02:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
2023-05-25 14:47:24 +02:00
|
|
|
"os/signal"
|
2023-05-25 16:01:31 +02:00
|
|
|
"time"
|
2023-05-24 19:23:52 +02:00
|
|
|
|
|
|
|
"ewintr.nl/matrix-feedreader/bot"
|
|
|
|
"golang.org/x/exp/slog"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
2023-05-25 12:21:28 +02:00
|
|
|
|
2023-05-24 19:23:52 +02:00
|
|
|
logger := slog.New(slog.NewTextHandler(os.Stderr, nil))
|
|
|
|
|
2023-05-25 16:01:31 +02:00
|
|
|
interval, err := time.ParseDuration(getParam("MINIFLUX_INTERVAL", "10m"))
|
|
|
|
if err != nil {
|
|
|
|
logger.Error("error parsing interval: %v", slog.String("error", err.Error()))
|
|
|
|
os.Exit(1)
|
|
|
|
}
|
2023-05-25 14:47:24 +02:00
|
|
|
mflxConfig := bot.MinifluxInfo{
|
|
|
|
Endpoint: getParam("MINIFLUX_ENDPOINT", "http://localhost:8080"),
|
|
|
|
ApiKey: getParam("MINIFLUX_API_KEY", "secret"),
|
2023-05-25 16:01:31 +02:00
|
|
|
Interval: interval,
|
2023-05-24 19:23:52 +02:00
|
|
|
}
|
2023-05-25 14:47:24 +02:00
|
|
|
mflx := bot.NewMiniflux(mflxConfig, logger)
|
2023-05-24 19:23:52 +02:00
|
|
|
|
2023-05-25 14:47:24 +02:00
|
|
|
mtrxConf := bot.MatrixConfig{
|
|
|
|
Homeserver: getParam("MATRIX_HOMESERVER", "http://localhost/"),
|
|
|
|
UserID: getParam("MATRIX_USER_ID", "@user:localhost"),
|
|
|
|
UserAccessKey: getParam("MATRIX_USER_ACCESS_KEY", "secret"),
|
|
|
|
UserPassword: getParam("MATRIX_USER_PASSWORD", "secret"),
|
|
|
|
RoomID: getParam("MATRIX_ROOM_ID", "!room:localhost"),
|
|
|
|
DBPath: getParam("MATRIX_DB_PATH", "matrix.db"),
|
|
|
|
Pickle: getParam("MATRIX_PICKLE", "matrix.pickle"),
|
2023-06-18 09:26:41 +02:00
|
|
|
AcceptInvites: getParam("MATRIX_ACCEPT_INVITES", "false") == "true",
|
2023-05-25 14:47:24 +02:00
|
|
|
}
|
|
|
|
mtrx := bot.NewMatrix(mtrxConf, mflx, logger)
|
|
|
|
if err := mtrx.Init(); err != nil {
|
|
|
|
logger.Error("error running matrix bot: %v", slog.String("error", err.Error()))
|
|
|
|
os.Exit(1)
|
2023-05-24 19:23:52 +02:00
|
|
|
}
|
2023-05-25 14:47:24 +02:00
|
|
|
|
|
|
|
go mtrx.Run()
|
|
|
|
logger.Info("matrix bot started")
|
|
|
|
|
|
|
|
done := make(chan os.Signal)
|
|
|
|
signal.Notify(done, os.Interrupt)
|
|
|
|
<-done
|
|
|
|
|
|
|
|
logger.Info("matrix bot stopped")
|
2023-05-24 19:23:52 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
func getParam(param, def string) string {
|
|
|
|
if val, ok := os.LookupEnv(param); ok {
|
|
|
|
return val
|
|
|
|
}
|
|
|
|
return def
|
|
|
|
}
|