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) } }