package packagemanager import ( "codeberg.org/Pata1704/system_setup_tool/internal/shell" "fmt" "log" "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 := shell.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") { log.Printf("Package %s not available\n", pkg) return nil } return fmt.Errorf("failed to install %s: %v\n%s", pkg, err, string(output)) } return nil }