deduplicate unlink and remove commands
This commit is contained in:
@@ -271,66 +271,16 @@ func addCmd(args []string) error {
|
||||
}
|
||||
|
||||
func unlinkCmd(args []string) error {
|
||||
flags, pkgSpec, err := parsePackageFlags(args)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pkgName, relPath, err := resolvePackageSpec(pkgSpec)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
repo, err := repoPath()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pkgDir := filepath.Join(repo, pkgName)
|
||||
configPath := filepath.Join(pkgDir, configFileName)
|
||||
cfg, err := loadConfig(configPath)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
targetRoot, err := selectTarget(cfg)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
filesDir := filepath.Join(pkgDir, filesDirName)
|
||||
if _, err := os.Stat(filesDir); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
if flags.dryRun {
|
||||
return nil
|
||||
}
|
||||
if err := os.RemoveAll(filepath.Join(filesDir, relPath)); err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Printf("removed %s:%s\n", pkgName, relPath)
|
||||
return nil
|
||||
return removeOrUnlink(args, false)
|
||||
}
|
||||
|
||||
func removeCmd(args []string) error {
|
||||
return removeOrUnlink(args, true)
|
||||
}
|
||||
|
||||
func removeOrUnlink(args []string, isRemove bool) error {
|
||||
_ = isRemove // commands are identical, flag kept for clarity
|
||||
|
||||
flags, pkgSpec, err := parsePackageFlags(args)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -380,11 +330,9 @@ func removeCmd(args []string) error {
|
||||
if err := restorePath(filesDir, targetRoot, relPath, flags.dryRun); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if flags.dryRun {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := os.RemoveAll(filepath.Join(filesDir, relPath)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user