Files
mindforge/mindforge.cronjob/cmd/mindforge.cronjob/main.go
Jose Henrique afff091457
All checks were successful
Mindforge Cronjob Build and Deploy / Build Mindforge Cronjob Image (push) Successful in 1m19s
Mindforge Cronjob Build and Deploy / Deploy Mindforge Cronjob (internal) (push) Successful in 43s
adding top_n_files
2026-03-20 21:25:19 -03:00

84 lines
2.0 KiB
Go

package main
import (
"fmt"
"log"
"os"
"strconv"
"github.com/joho/godotenv"
"mindforge.cronjob/internal/agent"
"mindforge.cronjob/internal/git"
"mindforge.cronjob/internal/message"
)
func main() {
// Read "GIT_REPOSITORY" environment variable
if err := godotenv.Load(); err != nil {
log.Println("WARNING: No .env file found or error loading it")
}
gitRepo := os.Getenv("GIT_REPOSITORY")
if gitRepo == "" {
log.Println("WARNING: GIT_REPOSITORY environment variable is not set")
} else {
fmt.Printf("Starting Mindforge.Cronjob for repo: %s\n", gitRepo)
}
// Initialize services
gitService := git.NewGitService()
// Resolve how many top files to return (TOP_N_FILES env var, default 10)
topN := 10
if v := os.Getenv("TOP_N_FILES"); v != "" {
if n, err := strconv.Atoi(v); err == nil && n > 0 {
topN = n
}
}
// Get modifications
var modifications map[string]string
error := gitService.FetchContents(gitRepo)
if error != nil {
log.Println("ERROR: Failed to fetch contents:", error)
}
// Resolve how many days to look back (LAST_N_DAYS env var, default 7)
days := 7
if v := os.Getenv("LAST_N_DAYS"); v != "" {
if n, err := strconv.Atoi(v); err == nil && n > 0 {
days = n
}
}
modifications, error = gitService.GetModifications(days, topN)
if error != nil {
log.Println("ERROR: Failed to get modifications:", error)
}
fmt.Printf("Found %d modifications\n", len(modifications))
for file, content := range modifications {
fmt.Printf("Processing file: %s\n", file)
raw_summary, err := agent.SummaryCreatorAgent(file, content)
if err != nil {
log.Println("ERROR: Failed to create summary:", err)
continue
}
md_summary, err := agent.SummaryFormatterAgent(raw_summary)
if err != nil {
log.Println("ERROR: Failed to create markdown summary:", err)
continue
}
fmt.Printf("Summary: %s\n", md_summary)
err = message.SendDiscordNotification(file, md_summary)
if err != nil {
log.Println("ERROR: Failed to send Discord notification:", err)
}
}
}