autobuilder/autobuilder.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)
}
}