package cmd import ( "fmt" "log" "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": sudoPassword, err := utils.GetSudoPassword() if err != nil { log.Fatal(err) } osManager := pm.NewOSManager(sudoPassword) if err := osManager.Install([]string{packageName}); err != nil { log.Printf("error: %v\n", err) } 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) } }, }