From 24077691bbc071de6d9c8f12624dd111bec661fb Mon Sep 17 00:00:00 2001 From: Netkas Date: Sat, 17 Dec 2022 08:29:41 -0500 Subject: [PATCH] Bug fix: Duplicate dependencies --- src/ncc/Classes/PhpExtension/PhpCompiler.php | 2 +- src/ncc/Objects/Package.php | 38 +++++++++++++++++++ .../Objects/ProjectConfiguration/Build.php | 2 +- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/ncc/Classes/PhpExtension/PhpCompiler.php b/src/ncc/Classes/PhpExtension/PhpCompiler.php index f105d12..5450b5c 100644 --- a/src/ncc/Classes/PhpExtension/PhpCompiler.php +++ b/src/ncc/Classes/PhpExtension/PhpCompiler.php @@ -250,7 +250,7 @@ break; } - $this->package->Dependencies[] = $dependency; + $this->package->addDependency($dependency); } if(count($this->package->Dependencies) > 0) diff --git a/src/ncc/Objects/Package.php b/src/ncc/Objects/Package.php index c4d5f5b..f5e7b32 100644 --- a/src/ncc/Objects/Package.php +++ b/src/ncc/Objects/Package.php @@ -103,6 +103,44 @@ $this->Resources = []; } + /** + * Adds a dependency to the package + * + * @param Dependency $dependency + * @return void + */ + public function addDependency(Dependency $dependency) + { + foreach($this->Dependencies as $dep) + { + if($dep->Name == $dependency->Name) + { + $this->removeDependency($dep->Name); + break; + } + } + + $this->Dependencies[] = $dependency; + } + + /** + * Removes a dependency from the build + * + * @param string $name + * @return void + */ + private function removeDependency(string $name) + { + foreach($this->Dependencies as $key => $dep) + { + if($dep->Name == $name) + { + unset($this->Dependencies[$key]); + return; + } + } + } + /** * Validates the package object and returns True if the package contains the correct information * diff --git a/src/ncc/Objects/ProjectConfiguration/Build.php b/src/ncc/Objects/ProjectConfiguration/Build.php index 75cb315..0a1eff1 100644 --- a/src/ncc/Objects/ProjectConfiguration/Build.php +++ b/src/ncc/Objects/ProjectConfiguration/Build.php @@ -118,7 +118,7 @@ { if($dep->Name == $dependency->Name) { - $this->removeDependency($dep); + $this->removeDependency($dep->Name); break; } }