35 lines
1 KiB
Go
35 lines
1 KiB
Go
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)
|
|
}
|
|
}
|
|
}
|