package main import ( "fmt" "log" "os" "os/exec" "github.com/charmbracelet/huh" "github.com/schollz/progressbar/v3" ) var ( execCommand = exec.Command execLookPath = exec.LookPath ) func getSudoPassword() (string, error) { var password string form := huh.NewForm( huh.NewGroup( huh.NewInput(). Title("Bitte geben Sie Ihr sudo-Passwort ein"). EchoMode(huh.EchoModePassword). Value(&password), ), ).WithTheme(huh.ThemeCatppuccin()) err := form.Run() if err != nil { return "", fmt.Errorf("fehler bei der Passwortabfrage: %v", err) } return password, nil } func max(a, b int) int { if a > b { return a } return b } func executeShellCommand(command string, env string) error { cmd := execCommand("bash", "-c", command) cmd.Env = os.Environ() cmd.Env = append(cmd.Env, env) output, err := cmd.CombinedOutput() if err != nil { return fmt.Errorf("befehl fehlgeschlagen: %v\nAusgabe: %s", err, output) } return nil } func installWithProgress(manager PackageManager, packages []string) error { bar := progressbar.Default(int64(len(packages)), "Installiere "+manager.Name()+"-Pakete...") for _, pkg := range packages { err := manager.InstallPackage(pkg) if err != nil { log.Printf("\nError installing %s: %v\n", pkg, err) } bar.Add(1) } return nil }