|
23 | 23 | use InvalidArgumentException; |
24 | 24 | use RuntimeException; |
25 | 25 | use Symfony\Component\Finder\Finder; |
| 26 | +use vierbergenlars\SemVer\version; |
| 27 | +use vierbergenlars\SemVer\expression; |
26 | 28 |
|
27 | 29 | /** |
28 | 30 | * Main class |
@@ -129,7 +131,7 @@ public function installPackage(PackageInterface $package, InstallerInterface $in |
129 | 131 | $depPackage = new Package($name, $version); |
130 | 132 | if (!$this->isPackageInstalled($depPackage)) { |
131 | 133 | $this->installPackage($depPackage, $installer, true); |
132 | | - } else { |
| 134 | + } elseif ($this->isNeedUpdate($depPackage)) { |
133 | 135 | $this->updatePackage($depPackage, $installer); |
134 | 136 | } |
135 | 137 | } |
@@ -204,7 +206,7 @@ public function updatePackage(PackageInterface $package, InstallerInterface $ins |
204 | 206 | $depPackage = new Package($name, $requiredVersion); |
205 | 207 | if (!$this->isPackageInstalled($depPackage)) { |
206 | 208 | $this->installPackage($depPackage, $installer, true); |
207 | | - } else { |
| 209 | + } elseif ($this->isNeedUpdate($depPackage)) { |
208 | 210 | $this->updatePackage($depPackage, $installer); |
209 | 211 | } |
210 | 212 | } |
@@ -344,7 +346,6 @@ public function isPackageExtraneous(PackageInterface $package, $checkInstall = f |
344 | 346 | try { |
345 | 347 | $bower = $this->config->getBowerFileContent(); |
346 | 348 | } catch (RuntimeException $e) { // no bower.json file, package is extraneous |
347 | | - |
348 | 349 | return true; |
349 | 350 | } |
350 | 351 | if (!isset($bower['dependencies'])) { |
@@ -468,4 +469,18 @@ private function updateBowerFile(PackageInterface $package, $isDependency = fals |
468 | 469 | } |
469 | 470 | } |
470 | 471 | } |
| 472 | + |
| 473 | + /** |
| 474 | + * Update only if needed is greater version |
| 475 | + * |
| 476 | + * @param PackageInterface $package |
| 477 | + * @return bool |
| 478 | + */ |
| 479 | + public function isNeedUpdate($package) |
| 480 | + { |
| 481 | + $packageBower = $this->config->getPackageBowerFileContent($package); |
| 482 | + $semver = new version($packageBower['version']); |
| 483 | + |
| 484 | + return !$semver->satisfies(new expression($package->getRequiredVersion())); |
| 485 | + } |
471 | 486 | } |
0 commit comments