mirror of
https://github.com/EnumeratedDev/bpm.git
synced 2026-09-16 10:36:12 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e8b247e83 | ||
|
|
c8fc1b902c |
@@ -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
|
||||||
|
|||||||
@@ -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,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
|
||||||
|
|||||||
Reference in New Issue
Block a user