package main import ( "io/ioutil" "os" "path/filepath" ) func cmdUninstall(cfg *TargetConfig, opts []string) { // check target version if len(opts) == 0 { cmdHelp(1, "no version specified") } ver := opts[0] item, err := getVerInfo(cfg.VersionFile, ver) if err != nil { fatalf("failed to get version info: %v", err) } else if item == nil { fatalf("%s version %q does not defined in %q", cfg.Name, ver, cfg.VersionFile) } infos, err := ioutil.ReadDir(cfg.RootDir) if err != nil { fatalf("failed to readdir: %v", err) } for _, info := range infos { if info.Name() == ver { dir := filepath.Join(cfg.RootDir, ver) if !info.IsDir() { fatalf("found %s %s (%q) but it is not a directory.\nplease remove it yourself.", cfg.Name, ver, dir) } else if err = os.RemoveAll(dir); err != nil { fatalf("failed to uninstall version %s: %v", ver, err) } printf("%s version %s (%q) has been uninstalled.", cfg.Name, ver, dir) return } } fatalf("%s version %q is not installed", cfg.Name, ver) }