AllPac/pkg/packagemanager/aur.go

47 lines
1.5 KiB
Go
Raw Normal View History

package packagemanager
import (
"fmt"
"os/exec"
)
// AURPackageInfo represents the package information from the AUR
type AURPackageInfo struct {
Version string `json:"Version"`
// Add other relevant fields
}
// UpdateAURPackages updates specified AUR packages or all if no specific package is provided
func UpdateAURPackages(packageNames ...string) error {
pkgList, err := ReadPackageList()
if err != nil {
return fmt.Errorf("error reading package list: %v", err)
}
for _, packageName := range packageNames {
aurInfo, err := fetchAURPackageInfo(packageName)
if err != nil {
return fmt.Errorf("error fetching AUR package info for %s: %v", packageName, err)
}
installedInfo, ok := pkgList[packageName]
if !ok || installedInfo.Version != aurInfo.Version {
_, err := CloneAndInstallFromAUR("https://aur.archlinux.org/" + packageName + ".git", true)
if err != nil {
return fmt.Errorf("error updating AUR package %s: %v", packageName, err)
}
}
}
return nil
}
// UninstallAURPackage uninstalls a specified AUR package
func UninstallAURPackage(packageName string) error {
// Uninstalling an AUR package is typically done with pacman
cmd := exec.Command("sudo", "pacman", "-Rns", "--noconfirm", packageName)
if output, err := cmd.CombinedOutput(); err != nil {
return fmt.Errorf("error uninstalling AUR package: %s, %v", output, err)
}
return nil
}