package cmd import ( "fmt" "log" "runtime" "codeberg.org/Pata1704/system_setup_tool/internal/utils" pm "codeberg.org/Pata1704/system_setup_tool/pkg/packagemanager" "github.com/spf13/cobra" ) var installCmd = &cobra.Command{ Use: "install [package_name]", Short: "Install a package with the specified package manager", Args: cobra.ExactArgs(1), Aliases: []string{"i"}, Run: func(cmd *cobra.Command, args []string) { packageName := args[0] managerName, _ := cmd.Flags().GetString("manager") var manager pm.PackageManager switch managerName { case "os": managerName = "OS Package Manager" case "brew": managerName = "homebrew" } switch managerName { case "OS Package Manager": if runtime.GOOS != "windows" { sudoPassword, err := utils.GetSudoPassword() if err != nil { log.Fatal(err) } manager = pm.NewOSManager(sudoPassword) } else { manager = pm.NewOSManager("") } case "homebrew": manager = &pm.HomebrewManager{} case "cargo": manager = &pm.CargoManager{} case "pipx": manager = &pm.PipxManager{} case "flatpak": manager = &pm.FlatpakManager{} default: fmt.Println("No PackageManager found") return } if err := manager.Install([]string{packageName}); err != nil { log.Printf("error: %v\n", err) } if err := utils.LogToHistory("installed", packageName, manager.Name()); err != nil { fmt.Println("error logging action:", err) } }, }