diff --git a/cmd/check_cmd.go b/cmd/check_cmd.go index d31efcd..bafe0d9 100644 --- a/cmd/check_cmd.go +++ b/cmd/check_cmd.go @@ -2,7 +2,7 @@ package cmd import ( "fmt" - "log" + "log/slog" "system_setup_tool/internal/utils" pm "system_setup_tool/pkg/packagemanager" @@ -19,9 +19,10 @@ var checkCmd = &cobra.Command{ packageName := args[0] managerName, _ := cmd.Flags().GetString("manager") var manager pm.PackageManager - if managerName == "os" { + switch managerName { + case "os": managerName = "OS Package Manager" - } else if managerName == "brew" { + case "brew": managerName = "homebrew" } switch managerName { @@ -39,11 +40,11 @@ var checkCmd = &cobra.Command{ fmt.Println("No PackageManager found") } if err := manager.Check(packageName); err != nil { - log.Printf("error: %v\n", err) + slog.Error(err.Error()) } fmt.Printf("Package: %s installed\n", packageName) if err := utils.LogToHistory("checked", packageName, manager.Name()); err != nil { - fmt.Println("error logging action:", err) + slog.Error(fmt.Sprintf("error logging action: %v", err)) } }, } diff --git a/cmd/cmd.go b/cmd/cmd.go index 92de0c4..7a2386a 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -2,9 +2,10 @@ package cmd import ( "fmt" - "log" + "log/slog" "os" "path/filepath" + "system_setup_tool/internal/tui" "github.com/spf13/cobra" @@ -71,7 +72,7 @@ func initConfig() { viper.SetConfigType("toml") dirname, err := os.UserConfigDir() if err != nil { - log.Println("cant obtain config dir") + slog.Error("cant obtain config dir") } else { viper.AddConfigPath(filepath.Join(dirname, "sst")) } @@ -81,11 +82,11 @@ func initConfig() { if _, ok := err.(viper.ConfigFileNotFoundError); ok { fmt.Println("no config file found, creating a new one...") if err := createDefaultConfig(); err != nil { - log.Printf("error creating default config: %v\n", err) + slog.Error(fmt.Sprintf("creating default config: %v\n", err)) os.Exit(1) } } else { - log.Printf("error reading config file: %v\n", err) + slog.Error(fmt.Sprintf("reading config file: %v\n", err)) os.Exit(1) } } @@ -119,7 +120,7 @@ func createDefaultConfig() error { v.SetDefault("package_managers.os.packages", []string{}) configDir := filepath.Join(os.Getenv("HOME"), ".config", "sst") - if err := os.MkdirAll(configDir, 0755); err != nil { + if err := os.MkdirAll(configDir, 0o755); err != nil { return fmt.Errorf("error creating config dir: %w", err) } diff --git a/cmd/history_cmd.go b/cmd/history_cmd.go index 2b1fedb..5de9ca6 100644 --- a/cmd/history_cmd.go +++ b/cmd/history_cmd.go @@ -2,7 +2,7 @@ package cmd import ( "fmt" - "log" + "log/slog" "os" "path/filepath" @@ -16,7 +16,7 @@ var historyCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { dirname, err := os.UserConfigDir() if err != nil { - log.Printf("error getting user config dir: %v\n", err) + slog.Error(fmt.Sprintf("getting user config dir: %v\n", err)) } historyFile := filepath.Join(dirname, "sst", "sst_history") content, err := os.ReadFile(historyFile) diff --git a/cmd/install_cmd.go b/cmd/install_cmd.go index 73d179c..9976540 100644 --- a/cmd/install_cmd.go +++ b/cmd/install_cmd.go @@ -2,8 +2,10 @@ package cmd import ( "fmt" - "log" + "log/slog" + "os" "runtime" + "system_setup_tool/internal/utils" pm "system_setup_tool/pkg/packagemanager" @@ -20,9 +22,10 @@ var installCmd = &cobra.Command{ packageName := args[0] managerName, _ := cmd.Flags().GetString("manager") var manager pm.PackageManager - if managerName == "os" { + switch managerName { + case "os": managerName = "OS Package Manager" - } else if managerName == "brew" { + case "brew": managerName = "homebrew" } switch managerName { @@ -30,7 +33,8 @@ var installCmd = &cobra.Command{ if runtime.GOOS != "windows" { sudoPassword, err := utils.GetSudoPassword() if err != nil { - log.Fatal(err) + slog.Error(err.Error()) + os.Exit(1) } manager = pm.NewOSManager(sudoPassword) } else { @@ -49,7 +53,7 @@ var installCmd = &cobra.Command{ return } if err := manager.Install([]string{packageName}); err != nil { - log.Printf("error: %v\n", err) + slog.Error(err.Error()) } if err := utils.LogToHistory("installed", packageName, manager.Name()); err != nil { fmt.Println("error logging action:", err) diff --git a/cmd/package_commands.go b/cmd/package_commands.go index d0f1da4..b3cca3f 100644 --- a/cmd/package_commands.go +++ b/cmd/package_commands.go @@ -2,8 +2,11 @@ package cmd import ( "fmt" + "log/slog" "os" + "slices" "sort" + "system_setup_tool/internal/utils" "github.com/spf13/cobra" @@ -42,11 +45,9 @@ var addCmd = &cobra.Command{ } else { packages := viper.GetStringSlice(fmt.Sprintf("package_managers.%s.packages", manager)) - for _, pkg := range packages { - if pkg == name { - fmt.Printf("Package %s is already present in the configuration for %s\n", name, manager) - return - } + if slices.Contains(packages, name) { + fmt.Printf("Package %s is already present in the configuration for %s\n", name, manager) + return } packages = append(packages, name) @@ -87,7 +88,7 @@ var deleteCmd = &cobra.Command{ for i, pkg := range packages { if pkg == name { - packages = append(packages[:i], packages[i+1:]...) + packages = slices.Delete(packages, i, i+1) if isHeadless { viper.Set("packages.headless", packages) } else { @@ -95,7 +96,7 @@ var deleteCmd = &cobra.Command{ } if err := viper.WriteConfig(); err != nil { - fmt.Printf("Error writing configuration: %v\n", err) + slog.Error(fmt.Sprintf("Error writing configuration: %v\n", err)) os.Exit(1) } @@ -110,11 +111,11 @@ var deleteCmd = &cobra.Command{ for i, pkg := range packages { if pkg == name { - packages = append(packages[:i], packages[i+1:]...) + packages = slices.Delete(packages, i, i+1) viper.Set(fmt.Sprintf("package_managers.%s.packages", manager), packages) if err := viper.WriteConfig(); err != nil { - fmt.Printf("Error writing configuration: %v\n", err) + slog.Error(fmt.Sprintf("Error writing configuration: %v\n", err)) os.Exit(1) } @@ -125,7 +126,7 @@ var deleteCmd = &cobra.Command{ fmt.Printf("Package %s was not found in the configuration for %s\n", name, manager) if err := utils.LogToHistory("removed", name, manager); err != nil { - fmt.Println("error logging action:", err) + slog.Error(fmt.Sprintf("error logging action: %v", err)) } } }, diff --git a/cmd/remove_cmd.go b/cmd/remove_cmd.go index 00af703..85fe900 100644 --- a/cmd/remove_cmd.go +++ b/cmd/remove_cmd.go @@ -2,8 +2,9 @@ package cmd import ( "fmt" - "log" + "log/slog" "runtime" + "system_setup_tool/internal/utils" pm "system_setup_tool/pkg/packagemanager" @@ -19,9 +20,10 @@ var removeCmd = &cobra.Command{ packageName := args[0] managerName, _ := cmd.Flags().GetString("manager") var manager pm.PackageManager - if managerName == "os" { + switch managerName { + case "os": managerName = "OS Package Manager" - } else if managerName == "brew" { + case "brew": managerName = "homebrew" } switch managerName { @@ -29,7 +31,7 @@ var removeCmd = &cobra.Command{ if runtime.GOOS != "windows" { sudoPassword, err := utils.GetSudoPassword() if err != nil { - log.Fatal(err) + slog.Error(err.Error()) } manager = pm.NewOSManager(sudoPassword) } else { @@ -48,10 +50,10 @@ var removeCmd = &cobra.Command{ return } if err := manager.RemovePackage(packageName); err != nil { - log.Printf("error: %v\n", err) + slog.Error(err.Error()) } if err := utils.LogToHistory("removed", packageName, manager.Name()); err != nil { - fmt.Println("error logging action:", err) + slog.Error(fmt.Sprintf("error logging action: %v", err)) } }, } diff --git a/cmd/search_cmd.go b/cmd/search_cmd.go index d076c94..dfaddd0 100644 --- a/cmd/search_cmd.go +++ b/cmd/search_cmd.go @@ -2,7 +2,7 @@ package cmd import ( "fmt" - "log" + "log/slog" "runtime" "strings" "sync" @@ -21,9 +21,10 @@ var searchCmd = &cobra.Command{ Run: func(cmd *cobra.Command, args []string) { packageName := args[0] managerName, _ := cmd.Flags().GetString("manager") - if managerName == "os" { + switch managerName { + case "os": managerName = "OS Package Manager" - } else if managerName == "brew" { + case "brew": managerName = "homebrew" } @@ -46,7 +47,7 @@ var searchCmd = &cobra.Command{ pm.NewOSManager(""), } default: - log.Println("No Package Managers found") + slog.Info("No Package Managers found") } if managerName != "" { diff --git a/cmd/update_command.go b/cmd/update_command.go index 1731c8c..cd5b63c 100644 --- a/cmd/update_command.go +++ b/cmd/update_command.go @@ -3,8 +3,10 @@ package cmd import ( "fmt" "log" + "log/slog" "runtime" "sync" + "system_setup_tool/internal/utils" pm "system_setup_tool/pkg/packagemanager" @@ -21,9 +23,10 @@ var updateCmd = &cobra.Command{ packageName := args[0] managerName, _ := cmd.Flags().GetString("manager") var manager pm.PackageManager - if managerName == "os" { + switch managerName { + case "os": managerName = "OS Package Manager" - } else if managerName == "brew" { + case "brew": managerName = "homebrew" } @@ -47,23 +50,23 @@ var updateCmd = &cobra.Command{ case "flatpak": manager = &pm.FlatpakManager{} default: - fmt.Println("No PackageManager found") + slog.Info("No PackageManager found") return } if packageName != "" { if err := manager.UpdatePackage(packageName); err != nil { - log.Printf("error: %v\n", err) + slog.Error(err.Error()) } else { if err := utils.LogToHistory("updated", packageName, manager.Name()); err != nil { - fmt.Println("error logging action:", err) + slog.Error(fmt.Sprintf("error logging action: %v", err)) } } } else { if err := manager.UpdateAllPackages(); err != nil { - log.Printf("error: %v\n", err) + slog.Error(err.Error()) } else { if err := utils.LogToHistory("updated", "all", "all"); err != nil { - fmt.Println("error logging action:", err) + slog.Error(fmt.Sprintf("error logging action: %v", err)) } } } @@ -74,7 +77,6 @@ var updateAllCmd = &cobra.Command{ Use: "update-all", Short: "update all packages with all package managers.", Run: func(cmd *cobra.Command, args []string) { - var managers []pm.PackageManager switch runtime.GOOS { case "linux": @@ -120,7 +122,7 @@ func updateAllConcurrently(managers []pm.PackageManager) { fmt.Printf("Updating %s-Packages\n", manager.Name()) err := manager.UpdateAllPackages() if err != nil { - log.Printf("Error updating %s: %v\n", manager.Name(), err) + slog.Error(fmt.Sprintf("updating %s: %v\n", manager.Name(), err)) } }(m) } diff --git a/internal/dotfiles/dotfiles.go b/internal/dotfiles/dotfiles.go index f6eea51..dd10d8f 100644 --- a/internal/dotfiles/dotfiles.go +++ b/internal/dotfiles/dotfiles.go @@ -2,9 +2,10 @@ package dotfiles import ( "fmt" - "log" + "log/slog" "os" "path/filepath" + "system_setup_tool/internal/shell" ) @@ -35,7 +36,7 @@ func SetupDotfiles(config DotfilesConfig) error { cmd = shell.ExecCommand("stow", ".", "--override='*'") if err := cmd.Run(); err != nil { - log.Printf("error creating links: %v", err) + slog.Error(fmt.Sprintf("error creating links: %v", err)) } fmt.Printf("all linked properly\n") diff --git a/internal/tui/tui.go b/internal/tui/tui.go index a387915..80af36c 100644 --- a/internal/tui/tui.go +++ b/internal/tui/tui.go @@ -3,6 +3,8 @@ package tui import ( "fmt" "log" + "log/slog" + "system_setup_tool/internal/config" "system_setup_tool/internal/dotfiles" "system_setup_tool/internal/utils" @@ -28,30 +30,6 @@ func Run(cmd *cobra.Command, args []string) { 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 @@ -74,15 +52,15 @@ func Run(cmd *cobra.Command, args []string) { } manager = pm.NewFlatpakManager(sudoPassword, flatpakConfig) default: - log.Printf("unknown packagemanager: %s", name) + slog.Warn(fmt.Sprintf("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) + slog.Warn(fmt.Sprintf("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) + slog.Warn(fmt.Sprintf("warning at %s-packages: %v", manager.Name(), err)) } } } diff --git a/main.go b/main.go index 959f384..6e26b28 100644 --- a/main.go +++ b/main.go @@ -1,14 +1,15 @@ package main import ( - "log" + "log/slog" "os" + "system_setup_tool/cmd" ) func main() { if err := cmd.RootCmd.Execute(); err != nil { - log.Println(err) + slog.Error(err.Error()) os.Exit(1) } }