diff --git a/main.go b/main.go index f919cdb..9bdfb77 100644 --- a/main.go +++ b/main.go @@ -337,7 +337,12 @@ func unlinkCmd(args []string) error { } func removeCmd(args []string) error { - flags, pkgName, err := parsePackageFlags(args) + flags, pkgSpec, err := parsePackageFlags(args) + if err != nil { + return err + } + + pkgName, relPath, err := splitPackageSpec(pkgSpec) if err != nil { return err } @@ -364,7 +369,21 @@ func removeCmd(args []string) error { return err } - if err := restorePackage(filesDir, targetRoot, flags.dryRun); err != nil { + if relPath == "" { + if err := restorePackage(filesDir, targetRoot, flags.dryRun); err != nil { + return err + } + if flags.dryRun { + return nil + } + if err := os.RemoveAll(pkgDir); err != nil { + return err + } + fmt.Printf("removed package %s\n", pkgName) + return nil + } + + if err := restorePath(filesDir, targetRoot, relPath, flags.dryRun); err != nil { return err } @@ -372,7 +391,11 @@ func removeCmd(args []string) error { return nil } - return os.RemoveAll(pkgDir) + if err := os.RemoveAll(filepath.Join(filesDir, relPath)); err != nil { + return err + } + fmt.Printf("removed %s:%s\n", pkgName, relPath) + return nil } func applyPackage(filesDir, targetRoot string) error { @@ -713,6 +736,7 @@ func removeLinks(paths []string, dryRun bool) error { if err := os.Remove(path); err != nil { return err } + fmt.Printf("removed %s\n", path) } return nil } @@ -818,6 +842,7 @@ func restoreOne(sourcePath, targetPath, filesAbs string, dryRun bool) error { return err } + fmt.Printf("restored %s\n", targetPath) return copyFile(sourcePath, targetPath) }