deduplicate unlink and remove commands
This commit is contained in:
@@ -271,66 +271,16 @@ func addCmd(args []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func unlinkCmd(args []string) error {
|
func unlinkCmd(args []string) error {
|
||||||
flags, pkgSpec, err := parsePackageFlags(args)
|
return removeOrUnlink(args, false)
|
||||||
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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func removeCmd(args []string) error {
|
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)
|
flags, pkgSpec, err := parsePackageFlags(args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -380,11 +330,9 @@ func removeCmd(args []string) error {
|
|||||||
if err := restorePath(filesDir, targetRoot, relPath, flags.dryRun); err != nil {
|
if err := restorePath(filesDir, targetRoot, relPath, flags.dryRun); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if flags.dryRun {
|
if flags.dryRun {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := os.RemoveAll(filepath.Join(filesDir, relPath)); err != nil {
|
if err := os.RemoveAll(filepath.Join(filesDir, relPath)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user