refactor: seperate functionality into files

This commit is contained in:
Patryk Hegenberg 2024-12-27 13:13:32 +01:00
parent 715e086fcd
commit 3081e34e2b
11 changed files with 871 additions and 792 deletions

73
flatpak.go Normal file
View file

@ -0,0 +1,73 @@
package main
import (
"fmt"
"log"
"os/exec"
"github.com/charmbracelet/bubbles/progress"
)
type FlatpakConfig struct {
Enable bool `mapstructure:"enable"`
Remotes []Remote `mapstructure:"remotes"`
Packages []string `mapstructure:"packages"`
}
type Remote struct {
Name string `mapstructure:"name"`
URL string `mapstructure:"url"`
}
func installFlatpak(os *OS, sudoPassword string) error {
var command string
switch os.PackageManager {
case "pacman":
command = "pacman -S --noconfirm --needed flatpak"
case "apt":
command = "apt install -y flatpak"
case "dnf":
command = "dnf install -y flatpak"
default:
return fmt.Errorf("keine Flatpak-Installation für OS %s definiert", os.ID)
}
if err := installPackage(command, "", sudoPassword); err != nil {
return fmt.Errorf("Fehler bei der Flatpak-Installation: %v", err)
}
return nil
}
func addFlatpakRemotes(remotes []Remote) error {
for _, remote := range remotes {
cmd := exec.Command("flatpak", "remote-add", "--if-not-exists", remote.Name, remote.URL)
if err := cmd.Run(); err != nil {
return fmt.Errorf("Fehler beim Hinzufügen des Remotes %s: %v", remote.Name, err)
}
}
return nil
}
func installFlatpakPackages(packages []string) error {
if len(packages) == 0 {
return nil
}
fmt.Println("\nInstalliere Flatpak-Pakete...")
p := progress.New(
progress.WithDefaultGradient(),
progress.WithWidth(40),
)
for i, pkg := range packages {
p.SetPercent(float64(i) / float64(len(packages)))
fmt.Printf("Installiere Flatpak: %s\n", pkg)
cmd := exec.Command("flatpak", "install", "-y", pkg)
if err := cmd.Run(); err != nil {
log.Printf("Fehler bei der Installation von %s: %v", pkg, err)
continue
}
}
return nil
}