77 lines
1.4 KiB
Go
77 lines
1.4 KiB
Go
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)
|
|
}
|
|
}
|