multiple content per fetcher

This commit is contained in:
2026-01-20 18:10:26 +01:00
parent 4f168197b8
commit 76933a04d8
7 changed files with 129 additions and 99 deletions

View File

@@ -4,30 +4,25 @@ import (
"fmt"
"log"
"os"
"strconv"
"strings"
"time"
"github.com/joho/godotenv"
)
func getConfig() Config {
intervalMinutes, err := strconv.Atoi(os.Getenv("INTERVAL_MINUTES"))
if err != nil {
intervalMinutes = 5
}
return 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"), ","),
DiscordWebhook: os.Getenv("DISCORD_WEBHOOK"),
DiscordFake: os.Getenv("DISCORD_FAKE") == "true",
Interval: time.Duration(intervalMinutes) * time.Minute,
WikiBaseURL: os.Getenv("WIKI_BASE_URL"),
WikiToken: os.Getenv("WIKI_TOKEN"),
WikiContentLimit: envToInteger("WIKI_CONTENT_LIMIT", 10),
RedmineBaseURL: os.Getenv("REDMINE_BASE_URL"),
RedmineKey: os.Getenv("REDMINE_KEY"),
RedmineContentLimit: envToInteger("REDMINE_CONTENT_LIMIT", 10),
GiteaToken: os.Getenv("GITEA_TOKEN"),
GiteaBaseURL: os.Getenv("GITEA_BASE_URL"),
GiteaRepos: strings.Split(os.Getenv("GITEA_REPOS"), ","),
GiteaContentLimit: envToInteger("GITEA_CONTENT_LIMIT", 10),
DiscordWebhook: os.Getenv("DISCORD_WEBHOOK"),
DiscordFake: os.Getenv("DISCORD_FAKE") == "true",
Interval: time.Duration(envToInteger("INTERVAL_MINUTES", 5)) * time.Minute,
}
}
@@ -35,24 +30,27 @@ func getFetchers(config *Config, cache *Cache) []Fetcher {
return []Fetcher{
&GiteaFetcher{
BaseFetcher: BaseFetcher{
BaseURL: config.GiteaBaseURL,
Token: config.GiteaToken,
Cache: cache,
BaseURL: config.GiteaBaseURL,
Token: config.GiteaToken,
Cache: cache,
ContentLimit: config.GiteaContentLimit,
},
Repos: config.GiteaRepos,
},
&WikiFetcher{
BaseFetcher: BaseFetcher{
BaseURL: config.WikiBaseURL,
Token: config.WikiToken,
Cache: cache,
BaseURL: config.WikiBaseURL,
Token: config.WikiToken,
Cache: cache,
ContentLimit: config.WikiContentLimit,
},
},
&RedmineFetcher{
BaseFetcher: BaseFetcher{
BaseURL: config.RedmineBaseURL,
Token: config.RedmineKey,
Cache: cache,
BaseURL: config.RedmineBaseURL,
Token: config.RedmineKey,
Cache: cache,
ContentLimit: config.RedmineContentLimit,
},
},
}
@@ -82,12 +80,6 @@ func getMessages(fetchers []Fetcher) []string {
return messages
}
func loadEnv() {
if err := godotenv.Load(); err != nil {
log.Println("Warning: .env file not found, using environment variables")
}
}
func Runner() {
loadEnv()
config := getConfig()