in order to implement sst for windows and macos the structure of osmanager has been changed. Now osmanager has a new field pm, which contains the specific packagemanager for the os. Linux packagemanagers have been implemented as packagemanagers on their own.
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package cmd
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"runtime"
|
|
"system_setup_tool/utils"
|
|
|
|
pm "system_setup_tool/packagemanager"
|
|
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var removeCmd = &cobra.Command{
|
|
Use: "remove [package_name]",
|
|
Short: "Remove a package with the specified package manager",
|
|
Args: cobra.ExactArgs(1),
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
packageName := args[0]
|
|
managerName, _ := cmd.Flags().GetString("manager")
|
|
var manager pm.PackageManager
|
|
if managerName == "os" {
|
|
managerName = "OS Package Manager"
|
|
} else if managerName == "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.RemovePackage(packageName); err != nil {
|
|
log.Printf("error: %v\n", err)
|
|
}
|
|
},
|
|
}
|