68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package lib
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/joho/godotenv"
|
|
)
|
|
|
|
func Runner() {
|
|
if err := godotenv.Load(); err != nil {
|
|
log.Println("Warning: .env file not found, using environment variables")
|
|
}
|
|
|
|
intervalMinutes, err := strconv.Atoi(os.Getenv("INTERVAL_MINUTES"))
|
|
if err != nil {
|
|
intervalMinutes = 5
|
|
}
|
|
|
|
config := Config{
|
|
WikiBaseURL: os.Getenv("WIKI_BASE_URL"),
|
|
WikiToken: os.Getenv("WIKI_TOKEN"),
|
|
RedmineBaseURL: os.Getenv("REDMINE_BASE_URL"),
|
|
RedmineKey: os.Getenv("REDMINE_KEY"),
|
|
GiteaToken: os.Getenv("GITEA_TOKEN"),
|
|
GiteaBaseURL: os.Getenv("GITEA_BASE_URL"),
|
|
GiteaRepos: strings.Split(os.Getenv("GITEA_REPOS"), ","),
|
|
Webhook: os.Getenv("DISCORD_WEBHOOK"),
|
|
Interval: time.Duration(intervalMinutes) * time.Minute,
|
|
}
|
|
|
|
cache := Cache{}
|
|
cache.Load()
|
|
discord := DiscordSender{Config: config}
|
|
|
|
var fetchers []Fetcher
|
|
fetchers = append(fetchers, &GiteaFetcher{
|
|
BaseURL: config.GiteaBaseURL,
|
|
Token: config.GiteaToken,
|
|
Repos: config.GiteaRepos,
|
|
Cache: &cache,
|
|
})
|
|
|
|
fetchers = append(fetchers, &WikiFetcher{Config: config, Cache: &cache})
|
|
fetchers = append(fetchers, &RedmineFetcher{Config: config, Cache: &cache})
|
|
|
|
for {
|
|
fmt.Println("Update")
|
|
|
|
for _, f := range fetchers {
|
|
if msg := f.Fetch(); len(msg) > 0 {
|
|
for _, m := range msg {
|
|
fmt.Println("Sending:", m)
|
|
discord.Send(m)
|
|
}
|
|
}
|
|
}
|
|
|
|
cache.Save()
|
|
|
|
time.Sleep(config.Interval)
|
|
}
|
|
}
|