package main import ( "fmt" "log" "os" "os/exec" "path/filepath" ) func cloneRepository(repo Repository, workDir string) error { cmd := exec.Command("git", "clone", repo.CloneURL, filepath.Join(workDir, repo.Name)) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr err := cmd.Run() if err != nil { return fmt.Errorf("failed to clone %s: %w", repo.Name, err) } return nil } func main() { token := os.Getenv("TOKEN") if token == "" { log.Fatalf("TOKEN environment variable not set") } client := GiteaClient{ BaseURL: "https://gitea.seeseepuff.be", Token: token, } org := "archlinux" workDir := "./work/" err := os.RemoveAll(workDir) if err != nil { log.Fatalf("failed to remove %s: %v", workDir, err) } err = os.MkdirAll(workDir, os.ModePerm) if err != nil { log.Fatalf("failed to create %s: %v", workDir, err) } repos, err := client.getRepositories(org) if err != nil { log.Fatalf("Failed to get repositories: %v", err) } success := true for _, repo := range repos { log.Printf("Checking %s", repo.FullName) hasFile, err := client.hasPKGBUILD(repo) if err != nil { log.Printf("Error checking for PKGBUILD: %v", err) success = false continue } if !hasFile { log.Println("PKGBUILD not found, skipping") continue } if err := cloneRepository(repo, workDir); err != nil { success = false log.Printf("Error cloning repository: %v", err) } } if !success { os.Exit(1) } }