Compare commits
2 commits
main
...
developmen
| Author | SHA1 | Date | |
|---|---|---|---|
| 3a321746bf | |||
| 31881c2daf |
11 changed files with 69 additions and 77 deletions
|
|
@ -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))
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
|||
11
cmd/cmd.go
11
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)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -2,8 +2,11 @@ package cmd
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"slices"
|
||||
"sort"
|
||||
|
||||
"system_setup_tool/internal/utils"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
|
|
@ -42,12 +45,10 @@ var addCmd = &cobra.Command{
|
|||
} else {
|
||||
packages := viper.GetStringSlice(fmt.Sprintf("package_managers.%s.packages", manager))
|
||||
|
||||
for _, pkg := range packages {
|
||||
if pkg == name {
|
||||
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)
|
||||
viper.Set(fmt.Sprintf("package_managers.%s.packages", manager), packages)
|
||||
|
|
@ -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))
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 != "" {
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
5
main.go
5
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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue