diff --git a/src/bpmlib/dependencies.go b/src/bpmlib/dependencies.go index 5c4b220..241694a 100644 --- a/src/bpmlib/dependencies.go +++ b/src/bpmlib/dependencies.go @@ -47,6 +47,12 @@ func (pkgInfo *PackageInfo) GetDependencies(includeMakeDepends, includeOptionalD } } } + + // Skip ignored packages + allDepends = slices.DeleteFunc(allDepends, func(depend pkgInstallationReason) bool { + return slices.Contains(MainBPMConfig.IgnorePackages, depend.PkgName) + }) + return allDepends } diff --git a/src/bpmlib/general.go b/src/bpmlib/general.go index 7472a5e..3c83a2d 100644 --- a/src/bpmlib/general.go +++ b/src/bpmlib/general.go @@ -221,6 +221,11 @@ func RemovePackages(rootDir string, force, cleanupDependencies bool, packages .. // Get packages and their dependants packageDepndants := make(map[string][]string, 0) for _, action := range operation.Actions { + // Skip package if ignored + if slices.Contains(MainBPMConfig.IgnorePackages, action.(*RemovePackageAction).BpmPackage.PkgInfo.Name) { + continue + } + dependants := action.(*RemovePackageAction).BpmPackage.PkgInfo.GetPackageDependants(rootDir) packageDepndants[action.(*RemovePackageAction).BpmPackage.PkgInfo.Name] = dependants } @@ -234,6 +239,14 @@ func RemovePackages(rootDir string, force, cleanupDependencies bool, packages .. packageDepndants[pkg] = required } + // Remove dependant packages if ignored + for pkg, required := range packageDepndants { + required = slices.DeleteFunc(required, func(pkgName string) bool { + return slices.Contains(MainBPMConfig.IgnorePackages, pkgName) + }) + packageDepndants[pkg] = required + } + // Remove empty keys from map maps.DeleteFunc(packageDepndants, func(pkg string, required []string) bool { return len(required) == 0 diff --git a/src/bpmlib/operations.go b/src/bpmlib/operations.go index 848f087..75edc2e 100644 --- a/src/bpmlib/operations.go +++ b/src/bpmlib/operations.go @@ -229,7 +229,7 @@ func (operation *BPMOperation) Cleanup(cleanupMakeDepends bool) error { keepPackages = append(keepPackages, pkg.Name) resolved := pkg.GetDependenciesRecursive(!cleanupMakeDepends, operation.RootDir) for _, value := range resolved { - if !slices.Contains(keepPackages, value) { + if !slices.Contains(keepPackages, value) && !slices.Contains(MainBPMConfig.IgnorePackages, value) { keepPackages = append(keepPackages, value) } }