2 Commits
5 changed files with 91 additions and 5 deletions
+89 -3
View File
@@ -590,12 +590,66 @@ func InstallPackage(filename, installDir string, force, binaryPkgFromSrc, keepTe
} }
if len(filesDiff) != 0 { if len(filesDiff) != 0 {
fmt.Println("Removing obsolete files") fmt.Println("Removing obsolete files")
var symlinks []string
for _, f := range filesDiff { for _, f := range filesDiff {
err := os.RemoveAll(path.Join(installDir, f)) f = path.Join(installDir, f)
lstat, err := os.Lstat(f)
if os.IsNotExist(err) {
continue
}
if err != nil {
return err
}
if lstat.Mode() == os.ModeSymlink {
symlinks = append(symlinks, f)
continue
}
stat, err := os.Stat(f)
if os.IsNotExist(err) {
continue
}
if err != nil {
return err
}
if stat.IsDir() {
dir, err := os.ReadDir(f)
if err != nil {
return err
}
if len(dir) == 0 {
fmt.Println("Removing: " + f)
err := os.Remove(f)
if err != nil {
return err
}
}
} else {
fmt.Println("Removing: " + f)
err := os.Remove(f)
if err != nil {
return err
}
}
}
for _, f := range symlinks {
f = path.Join(installDir, f)
_, err := os.Lstat(f)
if os.IsNotExist(err) {
continue
}
if err != nil {
return err
}
_, err = filepath.EvalSymlinks(f)
if os.IsNotExist(err) {
err := os.Remove(f)
if err != nil {
return err
}
}
if err != nil { if err != nil {
return err return err
} }
fmt.Println("Removing: " + path.Join(installDir, f))
} }
} }
return nil return nil
@@ -816,9 +870,21 @@ func RemovePackage(pkg, rootDir string) error {
installedDir := path.Join(rootDir, "var/lib/bpm/installed/") installedDir := path.Join(rootDir, "var/lib/bpm/installed/")
pkgDir := path.Join(installedDir, pkg) pkgDir := path.Join(installedDir, pkg)
files := GetPackageFiles(pkg, rootDir) files := GetPackageFiles(pkg, rootDir)
var symlinks []string
for _, file := range files { for _, file := range files {
file = path.Join(rootDir, file) file = path.Join(rootDir, file)
stat, err := os.Lstat(file) lstat, err := os.Lstat(file)
if os.IsNotExist(err) {
continue
}
if err != nil {
return err
}
if lstat.Mode() == os.ModeSymlink {
symlinks = append(symlinks, file)
continue
}
stat, err := os.Stat(file)
if os.IsNotExist(err) { if os.IsNotExist(err) {
continue continue
} }
@@ -845,6 +911,26 @@ func RemovePackage(pkg, rootDir string) error {
} }
} }
} }
for _, file := range symlinks {
file = path.Join(rootDir, file)
_, err := os.Lstat(file)
if os.IsNotExist(err) {
continue
}
if err != nil {
return err
}
_, err = filepath.EvalSymlinks(file)
if os.IsNotExist(err) {
err := os.Remove(file)
if err != nil {
return err
}
}
if err != nil {
return err
}
}
err := os.RemoveAll(pkgDir) err := os.RemoveAll(pkgDir)
if err != nil { if err != nil {
return err return err
+1 -1
View File
@@ -17,7 +17,7 @@ import (
/* A simple-to-use package manager */ /* A simple-to-use package manager */
/* ---------------------------------- */ /* ---------------------------------- */
var bpmVer = "0.1.4" var bpmVer = "0.1.6"
var subcommand = "help" var subcommand = "help"
var subcommandArgs []string var subcommandArgs []string
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
name: bpm name: bpm
description: The Bubble Package Manager description: The Bubble Package Manager
version: 0.1.4 version: 0.1.6
url: https://gitlab.com/bubble-package-manager/bpm/ url: https://gitlab.com/bubble-package-manager/bpm/
license: GPL3 license: GPL3
architecture: x86_64 architecture: x86_64