package main import ( "fmt" "strings" ) type Packages struct { Headless []string `mapstructure:"headless"` NonHeadless []string `mapstructure:"non_headless"` } func installPackage(cmd, pkg, sudoPassword string) error { fullCmd := fmt.Sprintf("%s %s", cmd, pkg) command := execCommand("sudo", "-S", "sh", "-c", fullCmd) command.Stdin = strings.NewReader(sudoPassword + "\n") output, err := command.CombinedOutput() if err != nil { if strings.Contains(string(output), "not found") || strings.Contains(string(output), "no matching package") || strings.Contains(string(output), "Keine Übereinstimmung") || strings.Contains(string(output), "Ziel nicht gefunden") { unavailablePackages = append(unavailablePackages, pkg) return nil } return fmt.Errorf("failed to install %s: %v\n%s", pkg, err, string(output)) } return nil } func printUnavailablePackages() { if len(unavailablePackages) > 0 { fmt.Println("\nFolgende Pakete waren nicht verfügbar:") for _, pkg := range unavailablePackages { fmt.Printf("- %s\n", pkg) } } }