deduplicate unlink and remove commands

This commit is contained in:
2026-03-04 21:19:38 +00:00
parent 980bb1e42d
commit b1d3ec4b5b
+7 -59
View File
@@ -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
}