Skip to content
This repository was archived by the owner on Jul 8, 2024. It is now read-only.

Commit d0ce99d

Browse files
injitoolsgarak
authored andcommitted
Update dependencies only if needed is greater version (#154)
Update dependencies only if needed is greater version
1 parent cc9974d commit d0ce99d

1 file changed

Lines changed: 18 additions & 3 deletions

File tree

src/Bowerphp/Bowerphp.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
use InvalidArgumentException;
2424
use RuntimeException;
2525
use Symfony\Component\Finder\Finder;
26+
use vierbergenlars\SemVer\version;
27+
use vierbergenlars\SemVer\expression;
2628

2729
/**
2830
* Main class
@@ -129,7 +131,7 @@ public function installPackage(PackageInterface $package, InstallerInterface $in
129131
$depPackage = new Package($name, $version);
130132
if (!$this->isPackageInstalled($depPackage)) {
131133
$this->installPackage($depPackage, $installer, true);
132-
} else {
134+
} elseif ($this->isNeedUpdate($depPackage)) {
133135
$this->updatePackage($depPackage, $installer);
134136
}
135137
}
@@ -204,7 +206,7 @@ public function updatePackage(PackageInterface $package, InstallerInterface $ins
204206
$depPackage = new Package($name, $requiredVersion);
205207
if (!$this->isPackageInstalled($depPackage)) {
206208
$this->installPackage($depPackage, $installer, true);
207-
} else {
209+
} elseif ($this->isNeedUpdate($depPackage)) {
208210
$this->updatePackage($depPackage, $installer);
209211
}
210212
}
@@ -344,7 +346,6 @@ public function isPackageExtraneous(PackageInterface $package, $checkInstall = f
344346
try {
345347
$bower = $this->config->getBowerFileContent();
346348
} catch (RuntimeException $e) { // no bower.json file, package is extraneous
347-
348349
return true;
349350
}
350351
if (!isset($bower['dependencies'])) {
@@ -468,4 +469,18 @@ private function updateBowerFile(PackageInterface $package, $isDependency = fals
468469
}
469470
}
470471
}
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+
}
471486
}

0 commit comments

Comments
 (0)