Möglichkeit zum Updaten aller Packages gleichzeitig eingeführt.

This commit is contained in:
2025-11-18 21:34:00 +01:00
parent 1e0c2e15f0
commit 9d84e5c1a1
2 changed files with 42 additions and 1 deletions

View File

@@ -95,11 +95,20 @@ func main() {
case "update": case "update":
if len(os.Args) < 3 { if len(os.Args) < 3 {
fmt.Println("Usage: ginie update <name>") fmt.Println("Usage: ginie update <name|--all>")
return return
} }
target := os.Args[2] target := os.Args[2]
if target == "--all" {
err := install.UpdateAll()
if err != nil {
fmt.Println("Fehler:", err)
return
}
return
}
err := install.Update(target) err := install.Update(target)
if err != nil { if err != nil {
fmt.Println("Fehler:", err) fmt.Println("Fehler:", err)

View File

@@ -267,3 +267,35 @@ func Update(pkg string) error {
return Install(fmt.Sprintf("%s:%s", repo.Name, release.TagName)) return Install(fmt.Sprintf("%s:%s", repo.Name, release.TagName))
} }
func UpdateAll() error {
reposList, err := repos.LoadRepos()
if err != nil {
return err
}
var installed []repos.Repo
for _, r := range reposList {
if r.InstalledVersion != "" {
installed = append(installed, r)
}
}
if len(installed) == 0 {
return errors.New("Keine installierten Pakete gefunden. Nutze: ginie install <name>")
}
var failed []string
for _, r := range installed {
fmt.Printf("Prüfe Updates für %s...\n", r.Name)
if err := Update(r.Name); err != nil {
failed = append(failed, fmt.Sprintf("%s: %v", r.Name, err))
}
}
if len(failed) > 0 {
return fmt.Errorf("Einige Updates fehlgeschlagen:\n%s", strings.Join(failed, "\n"))
}
return nil
}