refactor(packagemanager,cli,tui): move packages in specific subfolders
This commit is contained in:
parent
11b8541630
commit
e49138fdd2
34 changed files with 18 additions and 18 deletions
115
internal/tui/tui.go
Normal file
115
internal/tui/tui.go
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
package tui
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"system_setup_tool/internal/config"
|
||||
"system_setup_tool/internal/dotfiles"
|
||||
"system_setup_tool/internal/utils"
|
||||
|
||||
pm "system_setup_tool/pkg/packagemanager"
|
||||
|
||||
"github.com/charmbracelet/huh"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
type installedPkgMsg string
|
||||
|
||||
func Run(cmd *cobra.Command, args []string) {
|
||||
sudoPassword, err := utils.GetSudoPassword()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var cfg config.Config
|
||||
if err := viper.Unmarshal(&cfg); err != nil {
|
||||
log.Fatalf("Fehler beim Lesen der Konfiguration: %v", err)
|
||||
}
|
||||
|
||||
// form := huh.NewForm(
|
||||
// huh.NewGroup(
|
||||
// huh.NewConfirm().
|
||||
// Title("Möchten Sie eine headless Installation durchführen?").
|
||||
// Value(&cfg.Headless),
|
||||
// ),
|
||||
// ).WithTheme(huh.ThemeCatppuccin())
|
||||
//
|
||||
// if err := form.Run(); err != nil {
|
||||
// log.Fatalf("Fehler bei der Benutzerabfrage: %v", err)
|
||||
// }
|
||||
//
|
||||
// osManager := pm.NewOSManager(sudoPassword)
|
||||
//
|
||||
// if err := osManager.Install(cfg.Packages.Headless); err != nil {
|
||||
// log.Printf("Warnung bei der Installation der Headless-Pakete: %v", err)
|
||||
// }
|
||||
// if !cfg.Headless {
|
||||
// if err := osManager.Install(cfg.Packages.NonHeadless); err != nil {
|
||||
// log.Printf("Warnung bei der Installation der Non-Headless-Pakete: %v", err)
|
||||
// }
|
||||
// }
|
||||
//
|
||||
|
||||
for name, config := range cfg.PackageManagers {
|
||||
if config.Enable {
|
||||
var manager pm.PackageManager
|
||||
switch name {
|
||||
case "os":
|
||||
manager = pm.NewOSManager(sudoPassword)
|
||||
case "homebrew":
|
||||
manager = &pm.HomebrewManager{}
|
||||
case "go":
|
||||
manager = &pm.GolangManager{}
|
||||
case "cargo":
|
||||
manager = &pm.CargoManager{}
|
||||
case "pipx":
|
||||
manager = &pm.PipxManager{}
|
||||
case "flatpak":
|
||||
flatpakConfig := pm.FlatpakConfig{}
|
||||
if err := mapstructure.Decode(config, &flatpakConfig); err != nil {
|
||||
log.Printf("error decoding flatpak config: %v", err)
|
||||
continue
|
||||
}
|
||||
manager = pm.NewFlatpakManager(sudoPassword, flatpakConfig)
|
||||
default:
|
||||
log.Printf("unknown packagemanager: %s", name)
|
||||
continue
|
||||
}
|
||||
if err := manager.InstallManager(); err != nil {
|
||||
log.Printf("warning packagemanager %s not installed and could not be installed: %v", manager.Name(), err)
|
||||
}
|
||||
|
||||
if err := manager.Install(config.Packages); err != nil {
|
||||
log.Printf("warning at %s-packages: %v", manager.Name(), err)
|
||||
}
|
||||
}
|
||||
}
|
||||
osManager := pm.NewOSManager(sudoPassword)
|
||||
var installBuild bool
|
||||
form := huh.NewForm(
|
||||
huh.NewGroup(
|
||||
huh.NewConfirm().
|
||||
Title("Möchten Sie die Build Essentials installieren?").
|
||||
Value(&installBuild),
|
||||
),
|
||||
).WithTheme(huh.ThemeCatppuccin())
|
||||
|
||||
err = form.Run()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
if installBuild {
|
||||
if err := osManager.InstallBuildEssentials(); err != nil {
|
||||
log.Printf("Warnung: %v", err)
|
||||
}
|
||||
}
|
||||
if cfg.Dotfiles.Enable {
|
||||
fmt.Println("\nconfiguring dotfiles...")
|
||||
if err := dotfiles.SetupDotfiles(cfg.Dotfiles); err != nil {
|
||||
log.Printf("Warnung bei Dotfiles-Setup: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue