Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
3a321746bf refactor: replace log with slog 2025-06-12 10:20:38 +02:00
31881c2daf refactor: replace log with slog 2025-06-12 10:08:16 +02:00
11 changed files with 69 additions and 77 deletions

View file

@ -2,7 +2,7 @@ package cmd
import ( import (
"fmt" "fmt"
"log" "log/slog"
"system_setup_tool/internal/utils" "system_setup_tool/internal/utils"
pm "system_setup_tool/pkg/packagemanager" pm "system_setup_tool/pkg/packagemanager"
@ -19,9 +19,10 @@ var checkCmd = &cobra.Command{
packageName := args[0] packageName := args[0]
managerName, _ := cmd.Flags().GetString("manager") managerName, _ := cmd.Flags().GetString("manager")
var manager pm.PackageManager var manager pm.PackageManager
if managerName == "os" { switch managerName {
case "os":
managerName = "OS Package Manager" managerName = "OS Package Manager"
} else if managerName == "brew" { case "brew":
managerName = "homebrew" managerName = "homebrew"
} }
switch managerName { switch managerName {
@ -39,11 +40,11 @@ var checkCmd = &cobra.Command{
fmt.Println("No PackageManager found") fmt.Println("No PackageManager found")
} }
if err := manager.Check(packageName); err != nil { if err := manager.Check(packageName); err != nil {
log.Printf("error: %v\n", err) slog.Error(err.Error())
} }
fmt.Printf("Package: %s installed\n", packageName) fmt.Printf("Package: %s installed\n", packageName)
if err := utils.LogToHistory("checked", packageName, manager.Name()); err != nil { 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))
} }
}, },
} }

View file

@ -2,9 +2,10 @@ package cmd
import ( import (
"fmt" "fmt"
"log" "log/slog"
"os" "os"
"path/filepath" "path/filepath"
"system_setup_tool/internal/tui" "system_setup_tool/internal/tui"
"github.com/spf13/cobra" "github.com/spf13/cobra"
@ -71,7 +72,7 @@ func initConfig() {
viper.SetConfigType("toml") viper.SetConfigType("toml")
dirname, err := os.UserConfigDir() dirname, err := os.UserConfigDir()
if err != nil { if err != nil {
log.Println("cant obtain config dir") slog.Error("cant obtain config dir")
} else { } else {
viper.AddConfigPath(filepath.Join(dirname, "sst")) viper.AddConfigPath(filepath.Join(dirname, "sst"))
} }
@ -81,11 +82,11 @@ func initConfig() {
if _, ok := err.(viper.ConfigFileNotFoundError); ok { if _, ok := err.(viper.ConfigFileNotFoundError); ok {
fmt.Println("no config file found, creating a new one...") fmt.Println("no config file found, creating a new one...")
if err := createDefaultConfig(); err != nil { 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) os.Exit(1)
} }
} else { } else {
log.Printf("error reading config file: %v\n", err) slog.Error(fmt.Sprintf("reading config file: %v\n", err))
os.Exit(1) os.Exit(1)
} }
} }
@ -119,7 +120,7 @@ func createDefaultConfig() error {
v.SetDefault("package_managers.os.packages", []string{}) v.SetDefault("package_managers.os.packages", []string{})
configDir := filepath.Join(os.Getenv("HOME"), ".config", "sst") 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) return fmt.Errorf("error creating config dir: %w", err)
} }

View file

@ -2,7 +2,7 @@ package cmd
import ( import (
"fmt" "fmt"
"log" "log/slog"
"os" "os"
"path/filepath" "path/filepath"
@ -16,7 +16,7 @@ var historyCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
dirname, err := os.UserConfigDir() dirname, err := os.UserConfigDir()
if err != nil { 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") historyFile := filepath.Join(dirname, "sst", "sst_history")
content, err := os.ReadFile(historyFile) content, err := os.ReadFile(historyFile)

View file

@ -2,8 +2,10 @@ package cmd
import ( import (
"fmt" "fmt"
"log" "log/slog"
"os"
"runtime" "runtime"
"system_setup_tool/internal/utils" "system_setup_tool/internal/utils"
pm "system_setup_tool/pkg/packagemanager" pm "system_setup_tool/pkg/packagemanager"
@ -20,9 +22,10 @@ var installCmd = &cobra.Command{
packageName := args[0] packageName := args[0]
managerName, _ := cmd.Flags().GetString("manager") managerName, _ := cmd.Flags().GetString("manager")
var manager pm.PackageManager var manager pm.PackageManager
if managerName == "os" { switch managerName {
case "os":
managerName = "OS Package Manager" managerName = "OS Package Manager"
} else if managerName == "brew" { case "brew":
managerName = "homebrew" managerName = "homebrew"
} }
switch managerName { switch managerName {
@ -30,7 +33,8 @@ var installCmd = &cobra.Command{
if runtime.GOOS != "windows" { if runtime.GOOS != "windows" {
sudoPassword, err := utils.GetSudoPassword() sudoPassword, err := utils.GetSudoPassword()
if err != nil { if err != nil {
log.Fatal(err) slog.Error(err.Error())
os.Exit(1)
} }
manager = pm.NewOSManager(sudoPassword) manager = pm.NewOSManager(sudoPassword)
} else { } else {
@ -49,7 +53,7 @@ var installCmd = &cobra.Command{
return return
} }
if err := manager.Install([]string{packageName}); err != nil { 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 { if err := utils.LogToHistory("installed", packageName, manager.Name()); err != nil {
fmt.Println("error logging action:", err) fmt.Println("error logging action:", err)

View file

@ -2,8 +2,11 @@ package cmd
import ( import (
"fmt" "fmt"
"log/slog"
"os" "os"
"slices"
"sort" "sort"
"system_setup_tool/internal/utils" "system_setup_tool/internal/utils"
"github.com/spf13/cobra" "github.com/spf13/cobra"
@ -42,11 +45,9 @@ var addCmd = &cobra.Command{
} else { } else {
packages := viper.GetStringSlice(fmt.Sprintf("package_managers.%s.packages", manager)) packages := viper.GetStringSlice(fmt.Sprintf("package_managers.%s.packages", manager))
for _, pkg := range packages { if slices.Contains(packages, name) {
if pkg == name { fmt.Printf("Package %s is already present in the configuration for %s\n", name, manager)
fmt.Printf("Package %s is already present in the configuration for %s\n", name, manager) return
return
}
} }
packages = append(packages, name) packages = append(packages, name)
@ -87,7 +88,7 @@ var deleteCmd = &cobra.Command{
for i, pkg := range packages { for i, pkg := range packages {
if pkg == name { if pkg == name {
packages = append(packages[:i], packages[i+1:]...) packages = slices.Delete(packages, i, i+1)
if isHeadless { if isHeadless {
viper.Set("packages.headless", packages) viper.Set("packages.headless", packages)
} else { } else {
@ -95,7 +96,7 @@ var deleteCmd = &cobra.Command{
} }
if err := viper.WriteConfig(); err != nil { 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) os.Exit(1)
} }
@ -110,11 +111,11 @@ var deleteCmd = &cobra.Command{
for i, pkg := range packages { for i, pkg := range packages {
if pkg == name { 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) viper.Set(fmt.Sprintf("package_managers.%s.packages", manager), packages)
if err := viper.WriteConfig(); err != nil { 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) 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) fmt.Printf("Package %s was not found in the configuration for %s\n", name, manager)
if err := utils.LogToHistory("removed", name, manager); err != nil { if err := utils.LogToHistory("removed", name, manager); err != nil {
fmt.Println("error logging action:", err) slog.Error(fmt.Sprintf("error logging action: %v", err))
} }
} }
}, },

View file

@ -2,8 +2,9 @@ package cmd
import ( import (
"fmt" "fmt"
"log" "log/slog"
"runtime" "runtime"
"system_setup_tool/internal/utils" "system_setup_tool/internal/utils"
pm "system_setup_tool/pkg/packagemanager" pm "system_setup_tool/pkg/packagemanager"
@ -19,9 +20,10 @@ var removeCmd = &cobra.Command{
packageName := args[0] packageName := args[0]
managerName, _ := cmd.Flags().GetString("manager") managerName, _ := cmd.Flags().GetString("manager")
var manager pm.PackageManager var manager pm.PackageManager
if managerName == "os" { switch managerName {
case "os":
managerName = "OS Package Manager" managerName = "OS Package Manager"
} else if managerName == "brew" { case "brew":
managerName = "homebrew" managerName = "homebrew"
} }
switch managerName { switch managerName {
@ -29,7 +31,7 @@ var removeCmd = &cobra.Command{
if runtime.GOOS != "windows" { if runtime.GOOS != "windows" {
sudoPassword, err := utils.GetSudoPassword() sudoPassword, err := utils.GetSudoPassword()
if err != nil { if err != nil {
log.Fatal(err) slog.Error(err.Error())
} }
manager = pm.NewOSManager(sudoPassword) manager = pm.NewOSManager(sudoPassword)
} else { } else {
@ -48,10 +50,10 @@ var removeCmd = &cobra.Command{
return return
} }
if err := manager.RemovePackage(packageName); err != nil { 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 { 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))
} }
}, },
} }

View file

@ -2,7 +2,7 @@ package cmd
import ( import (
"fmt" "fmt"
"log" "log/slog"
"runtime" "runtime"
"strings" "strings"
"sync" "sync"
@ -21,9 +21,10 @@ var searchCmd = &cobra.Command{
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
packageName := args[0] packageName := args[0]
managerName, _ := cmd.Flags().GetString("manager") managerName, _ := cmd.Flags().GetString("manager")
if managerName == "os" { switch managerName {
case "os":
managerName = "OS Package Manager" managerName = "OS Package Manager"
} else if managerName == "brew" { case "brew":
managerName = "homebrew" managerName = "homebrew"
} }
@ -46,7 +47,7 @@ var searchCmd = &cobra.Command{
pm.NewOSManager(""), pm.NewOSManager(""),
} }
default: default:
log.Println("No Package Managers found") slog.Info("No Package Managers found")
} }
if managerName != "" { if managerName != "" {

View file

@ -3,8 +3,10 @@ package cmd
import ( import (
"fmt" "fmt"
"log" "log"
"log/slog"
"runtime" "runtime"
"sync" "sync"
"system_setup_tool/internal/utils" "system_setup_tool/internal/utils"
pm "system_setup_tool/pkg/packagemanager" pm "system_setup_tool/pkg/packagemanager"
@ -21,9 +23,10 @@ var updateCmd = &cobra.Command{
packageName := args[0] packageName := args[0]
managerName, _ := cmd.Flags().GetString("manager") managerName, _ := cmd.Flags().GetString("manager")
var manager pm.PackageManager var manager pm.PackageManager
if managerName == "os" { switch managerName {
case "os":
managerName = "OS Package Manager" managerName = "OS Package Manager"
} else if managerName == "brew" { case "brew":
managerName = "homebrew" managerName = "homebrew"
} }
@ -47,23 +50,23 @@ var updateCmd = &cobra.Command{
case "flatpak": case "flatpak":
manager = &pm.FlatpakManager{} manager = &pm.FlatpakManager{}
default: default:
fmt.Println("No PackageManager found") slog.Info("No PackageManager found")
return return
} }
if packageName != "" { if packageName != "" {
if err := manager.UpdatePackage(packageName); err != nil { if err := manager.UpdatePackage(packageName); err != nil {
log.Printf("error: %v\n", err) slog.Error(err.Error())
} else { } else {
if err := utils.LogToHistory("updated", packageName, manager.Name()); err != nil { 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 { } else {
if err := manager.UpdateAllPackages(); err != nil { if err := manager.UpdateAllPackages(); err != nil {
log.Printf("error: %v\n", err) slog.Error(err.Error())
} else { } else {
if err := utils.LogToHistory("updated", "all", "all"); err != nil { 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", Use: "update-all",
Short: "update all packages with all package managers.", Short: "update all packages with all package managers.",
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
var managers []pm.PackageManager var managers []pm.PackageManager
switch runtime.GOOS { switch runtime.GOOS {
case "linux": case "linux":
@ -120,7 +122,7 @@ func updateAllConcurrently(managers []pm.PackageManager) {
fmt.Printf("Updating %s-Packages\n", manager.Name()) fmt.Printf("Updating %s-Packages\n", manager.Name())
err := manager.UpdateAllPackages() err := manager.UpdateAllPackages()
if err != nil { 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) }(m)
} }

View file

@ -2,9 +2,10 @@ package dotfiles
import ( import (
"fmt" "fmt"
"log" "log/slog"
"os" "os"
"path/filepath" "path/filepath"
"system_setup_tool/internal/shell" "system_setup_tool/internal/shell"
) )
@ -35,7 +36,7 @@ func SetupDotfiles(config DotfilesConfig) error {
cmd = shell.ExecCommand("stow", ".", "--override='*'") cmd = shell.ExecCommand("stow", ".", "--override='*'")
if err := cmd.Run(); err != nil { 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") fmt.Printf("all linked properly\n")

View file

@ -3,6 +3,8 @@ package tui
import ( import (
"fmt" "fmt"
"log" "log"
"log/slog"
"system_setup_tool/internal/config" "system_setup_tool/internal/config"
"system_setup_tool/internal/dotfiles" "system_setup_tool/internal/dotfiles"
"system_setup_tool/internal/utils" "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) 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 { for name, config := range cfg.PackageManagers {
if config.Enable { if config.Enable {
var manager pm.PackageManager var manager pm.PackageManager
@ -74,15 +52,15 @@ func Run(cmd *cobra.Command, args []string) {
} }
manager = pm.NewFlatpakManager(sudoPassword, flatpakConfig) manager = pm.NewFlatpakManager(sudoPassword, flatpakConfig)
default: default:
log.Printf("unknown packagemanager: %s", name) slog.Warn(fmt.Sprintf("unknown packagemanager: %s", name))
continue continue
} }
if err := manager.InstallManager(); err != nil { 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 { 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))
} }
} }
} }

View file

@ -1,14 +1,15 @@
package main package main
import ( import (
"log" "log/slog"
"os" "os"
"system_setup_tool/cmd" "system_setup_tool/cmd"
) )
func main() { func main() {
if err := cmd.RootCmd.Execute(); err != nil { if err := cmd.RootCmd.Execute(); err != nil {
log.Println(err) slog.Error(err.Error())
os.Exit(1) os.Exit(1)
} }
} }