remove

package
v0.7.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2022 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var RemoveCmd = &cobra.Command{
	Use:   "remove [pkg]",
	Short: "remove a package",
	Long:  `The "remove" subcommand removes a prompt-selected version of a given package.`,
	Example: `webman remove go
webman remove zig
webman remove rg`,
	Run: func(cmd *cobra.Command, args []string) {
		utils.Init()
		if len(args) != 1 {
			cmd.Help()
			os.Exit(0)
		}
		pkg := args[0]

		pkgDir := filepath.Join(utils.WebmanPkgDir, pkg)
		dirEntries, err := os.ReadDir(pkgDir)
		if err != nil {
			if os.IsNotExist(err) {
				fmt.Printf("No versions of %s are currently installed.\n", color.CyanString(pkg))
				os.Exit(0)
			}
			panic(err)
		}
		using, err := pkgparse.CheckUsing(pkg)
		if err != nil {
			panic(err)
		}
		if using != nil {
			fmt.Println("Currently using: ", color.CyanString(*using))
		} else {
			fmt.Printf("Not currently using any %s version\n", color.CyanString(pkg))
		}

		var pkgVersions []string
		for _, entry := range dirEntries {
			if entry.IsDir() {
				pkgVersions = append(pkgVersions, entry.Name())
			}
		}
		var pkgVerStems []string
		if len(pkgVersions) == 1 {
			pkgVerStems = append(pkgVerStems, pkgVersions[0])
		} else {
			surveyPrompt := &survey.MultiSelect{
				Message:  "Select " + color.CyanString(pkg) + " version to " + color.RedString("remove") + ":",
				Options:  pkgVersions,
				PageSize: 10,
			}
			err := survey.AskOne(surveyPrompt, &pkgVerStems)
			if err != nil {
				fmt.Printf("Prompt failed %v\n", err)
				return
			}
		}
		if len(pkgVerStems) == 0 {
			color.HiBlack("No packages selected for removal.")
			os.Exit(0)
		}
		pkgConf, err := pkgparse.ParsePkgConfigLocal(pkg, false)
		if err != nil {
			panic(err)
		}

		if len(pkgVerStems) == len(pkgVersions) {
			if _, err := RemoveAllVers(pkg, pkgConf); err != nil {
				panic(err)
			}
		} else {
			for _, pkgVerStem := range pkgVerStems {
				RemovePkgVer(pkgVerStem, using, pkg, pkgConf)
			}
		}
		fmt.Printf("All %d selected packages are uninstalled.\n", len(pkgVerStems))
	},
}

RemoveCmd represents the remove command

Functions

func GetPkgVerStems

func GetPkgVerStems(pkg string) error

func RemoveAllVers

func RemoveAllVers(pkg string, pkgConf *pkgparse.PkgConfig) (bool, error)

func RemovePkgVer

func RemovePkgVer(pkgVerStem string, using *string, pkg string, pkgConf *pkgparse.PkgConfig)

func UninstallBins

func UninstallBins(pkg string, pkgConf *pkgparse.PkgConfig) error

Uninstalls the binaries for a package (if they are installed)

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL