refactor: seperate functionality into files
This commit is contained in:
parent
715e086fcd
commit
3081e34e2b
11 changed files with 871 additions and 792 deletions
73
flatpak.go
Normal file
73
flatpak.go
Normal 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
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue