From 7d601c7a602dcf9956f68e33f745db370e742097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1chym=20Tou=C5=A1ek?= Date: Sat, 18 Jan 2014 15:42:43 +0100 Subject: [PATCH 01/13] Added incompatible updates feature --- .../Diagnostics/ComposerUpdatesPanel.php | 26 ++++--- .../Diagnostics/templates/panel.phtml | 42 ++++++++---- .../Diagnostics/templates/tab.phtml | 27 ++++++-- src/ComposerUpdates/PackageInfo.php | 67 ++++++++++++++++--- src/ComposerUpdates/Service.php | 16 ++++- 5 files changed, 135 insertions(+), 43 deletions(-) diff --git a/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php b/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php index 2cd94ed..d5b756b 100644 --- a/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php +++ b/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php @@ -21,15 +21,20 @@ public function __construct(ComposerUpdates\Service $service) */ public function getTab() { - if (empty($this->packages)) { + if (!$this->packages) { return; } - $updates = array_filter($this->packages, function(ComposerUpdates\PackageInfo $package) { - return $package->isUpdateAvailable(); - }); + $status = max(array_map(function(ComposerUpdates\PackageInfo $package) { + return $package->getStatus(); + }, $this->packages)); + + $updates = count(array_filter($this->packages, function(ComposerUpdates\PackageInfo $package) { + return $package->getStatus(); + })); return self::render(__DIR__ . '/templates/tab.phtml', array( + 'status' => $status, 'updates' => $updates, )); } @@ -40,18 +45,19 @@ public function getTab() */ public function getPanel() { - if (empty($this->packages)) { + if (!$this->packages) { return; } - uasort($this->packages, function (ComposerUpdates\PackageInfo $package1, ComposerUpdates\PackageInfo $package2) { - $update1 = $package1->isUpdateAvailable(); - $update2 = $package2->isUpdateAvailable(); - return $update1 !== $update2 ? $update1 < $update2 : $package1->getName() > $package2->getName(); + $packages = $this->packages; + uksort($packages, function ($key1, $key2) use ($packages) { + $status1 = $packages[$key1]->getStatus(); + $status2 = $packages[$key2]->getStatus(); + return $status1 !== $status2 ? $status1 < $status2 : $key1 > $key2; }); return self::render(__DIR__ . '/templates/panel.phtml', array( - 'packages' => $this->packages, + 'packages' => $packages, )); } diff --git a/src/ComposerUpdates/Diagnostics/templates/panel.phtml b/src/ComposerUpdates/Diagnostics/templates/panel.phtml index f7b1a60..2df8c7d 100644 --- a/src/ComposerUpdates/Diagnostics/templates/panel.phtml +++ b/src/ComposerUpdates/Diagnostics/templates/panel.phtml @@ -1,6 +1,6 @@ + 'no-update', + \ComposerUpdates\PackageInfo::STATUS_INCOMPATIBLE_UPDATE => 'incompatible-update', + \ComposerUpdates\PackageInfo::STATUS_COMPATIBLE_UPDATE => 'compatible-update', +); +?> +

Composer updates

@@ -37,26 +49,28 @@ Package Version - Update + Compatible + Incompatible - isUpdateAvailable()) { ?> - - - - + getName()) ?> getInstalledVersion() ?> - isUpdateAvailable()) { ?> - getAvailableVersion() ?> available + isCompatibleUpdateAvailable()) { ?> + getCompatibleUpdate() ?> available + + + + isIncompatibleUpdateAvailable()) { ?> + getIncompatibleUpdate() ?> available diff --git a/src/ComposerUpdates/Diagnostics/templates/tab.phtml b/src/ComposerUpdates/Diagnostics/templates/tab.phtml index 290ee62..a12b719 100644 --- a/src/ComposerUpdates/Diagnostics/templates/tab.phtml +++ b/src/ComposerUpdates/Diagnostics/templates/tab.phtml @@ -1,6 +1,7 @@ + 'no-update', + \ComposerUpdates\PackageInfo::STATUS_INCOMPATIBLE_UPDATE => 'incompatible-update', + \ComposerUpdates\PackageInfo::STATUS_COMPATIBLE_UPDATE => 'compatible-update', +); +?> + + -  up to date +  no update -   +   diff --git a/src/ComposerUpdates/PackageInfo.php b/src/ComposerUpdates/PackageInfo.php index 85757bf..d8c5de3 100644 --- a/src/ComposerUpdates/PackageInfo.php +++ b/src/ComposerUpdates/PackageInfo.php @@ -4,26 +4,39 @@ class PackageInfo { + const STATUS_NO_UPDATE = 0; + const STATUS_INCOMPATIBLE_UPDATE = 1; + const STATUS_COMPATIBLE_UPDATE = 2; + + /** @var string*/ private $name; /** @var Version */ private $installedVersion; - + + /** @var Version[] */ + private $compatibleUpdates; + /** @var Version[] */ - private $newVersions; + private $incompatibleUpdates; /** * @param string $name * @param Version $installedVersion - * @param Version[] $newVersions + * @param Version[] $compatibleUpdates + * @param Version[] $incompatibleUpdates */ - public function __construct($name, Version $installedVersion, array $newVersions) + public function __construct($name, Version $installedVersion, array $compatibleUpdates, array $incompatibleUpdates) { $this->name = $name; $this->installedVersion = $installedVersion; - $this->newVersions = $newVersions; + $this->compatibleUpdates = $compatibleUpdates; + $this->incompatibleUpdates = $incompatibleUpdates; } + /** + * @return string + */ public function getName() { return $this->name; @@ -37,21 +50,57 @@ public function getInstalledVersion() return $this->installedVersion; } + /** + * @return int + */ + public function getStatus() + { + if ($this->compatibleUpdates) { + return self::STATUS_COMPATIBLE_UPDATE; + } elseif ($this->incompatibleUpdates) { + return self::STATUS_INCOMPATIBLE_UPDATE; + } else { + return self::STATUS_NO_UPDATE; + } + } + /** * @return bool */ - public function isUpdateAvailable() + public function isCompatibleUpdateAvailable() { - return count($this->newVersions) > 0; + return (bool) $this->compatibleUpdates; + } + + /** + * @return bool + */ + public function isIncompatibleUpdateAvailable() + { + return (bool) $this->incompatibleUpdates; } /** * @return Version */ - public function getAvailableVersion() + public function getCompatibleUpdate() + { + $max = new NullVersion(); + foreach ($this->compatibleUpdates as $version) { + if ($version->isGreaterThan($max)) { + $max = $version; + } + } + return $max; + } + + /** + * @return Version + */ + public function getIncompatibleUpdate() { $max = new NullVersion(); - foreach ($this->newVersions as $version) { + foreach ($this->incompatibleUpdates as $version) { if ($version->isGreaterThan($max)) { $max = $version; } diff --git a/src/ComposerUpdates/Service.php b/src/ComposerUpdates/Service.php index 834e75d..259ab74 100644 --- a/src/ComposerUpdates/Service.php +++ b/src/ComposerUpdates/Service.php @@ -44,15 +44,25 @@ private function getPackagesFromRequires(array $requires) foreach ($requires as $link) { $name = $link->getTarget(); + $currentVersion = isset($installedVersions[$name]) ? $installedVersions[$name] : new NullVersion(); + $provides = $pool->whatProvides($name, $link->getConstraint()); $versions = array_map(function ($package) { return new Version($package); }, $provides); - $currentVersion = isset($installedVersions[$name]) ? $installedVersions[$name] : new NullVersion(); - $newVersions = array_filter($versions, function($version) use ($currentVersion) { + $compatibleUpdates = array_filter($versions, function($version) use ($currentVersion) { + return $version->isGreaterThan($currentVersion); + }); + + $provides = $pool->whatProvides($name); + $versions = array_map(function ($package) { + return new Version($package); + }, $provides); + $incompatibleUpdates = array_filter($versions, function($version) use ($currentVersion) { return $version->isGreaterThan($currentVersion); }); - $packages[] = new PackageInfo($name, $installedVersions[$name], $newVersions); + + $packages[] = new PackageInfo($name, $installedVersions[$name], $compatibleUpdates, $incompatibleUpdates); } return $packages; From 8a83351ba71282f14a86fa1b5b47a7b4b69b819f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1chym=20Tou=C5=A1ek?= Date: Sat, 18 Jan 2014 15:44:58 +0100 Subject: [PATCH 02/13] typos --- src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php | 4 ++-- src/ComposerUpdates/Initializer.php | 2 +- src/ComposerUpdates/PackageInfo.php | 8 ++++---- src/ComposerUpdates/Service.php | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php b/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php index d5b756b..1d66805 100644 --- a/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php +++ b/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php @@ -24,11 +24,11 @@ public function getTab() if (!$this->packages) { return; } - + $status = max(array_map(function(ComposerUpdates\PackageInfo $package) { return $package->getStatus(); }, $this->packages)); - + $updates = count(array_filter($this->packages, function(ComposerUpdates\PackageInfo $package) { return $package->getStatus(); })); diff --git a/src/ComposerUpdates/Initializer.php b/src/ComposerUpdates/Initializer.php index 41749fb..767e655 100644 --- a/src/ComposerUpdates/Initializer.php +++ b/src/ComposerUpdates/Initializer.php @@ -23,7 +23,7 @@ class Initializer /** @var Composer\Repository\RepositoryInterface */ private $installedRepository; - /** @var Composer\PAckage\RootPackageInterface */ + /** @var Composer\Package\RootPackageInterface */ private $rootPackage; /** @var Composer\DependencyResolver\Pool */ diff --git a/src/ComposerUpdates/PackageInfo.php b/src/ComposerUpdates/PackageInfo.php index d8c5de3..84becae 100644 --- a/src/ComposerUpdates/PackageInfo.php +++ b/src/ComposerUpdates/PackageInfo.php @@ -66,15 +66,15 @@ public function getStatus() /** * @return bool - */ + */ public function isCompatibleUpdateAvailable() { return (bool) $this->compatibleUpdates; } - + /** * @return bool - */ + */ public function isIncompatibleUpdateAvailable() { return (bool) $this->incompatibleUpdates; @@ -93,7 +93,7 @@ public function getCompatibleUpdate() } return $max; } - + /** * @return Version */ diff --git a/src/ComposerUpdates/Service.php b/src/ComposerUpdates/Service.php index 259ab74..1049450 100644 --- a/src/ComposerUpdates/Service.php +++ b/src/ComposerUpdates/Service.php @@ -33,19 +33,19 @@ public function getDevPackages() private function getPackagesFromRequires(array $requires) { $installedRepo = $this->initializer->getInstalledRepository(); - $pool = $this->initializer->getPackagePool(); $installedVersions = array(); foreach ($installedRepo->getPackages() as $package) { $installedVersions[$package->getName()] = new Version($package); } + $pool = $this->initializer->getPackagePool(); $packages = array(); foreach ($requires as $link) { $name = $link->getTarget(); $currentVersion = isset($installedVersions[$name]) ? $installedVersions[$name] : new NullVersion(); - + $provides = $pool->whatProvides($name, $link->getConstraint()); $versions = array_map(function ($package) { return new Version($package); @@ -53,7 +53,7 @@ private function getPackagesFromRequires(array $requires) $compatibleUpdates = array_filter($versions, function($version) use ($currentVersion) { return $version->isGreaterThan($currentVersion); }); - + $provides = $pool->whatProvides($name); $versions = array_map(function ($package) { return new Version($package); @@ -61,7 +61,7 @@ private function getPackagesFromRequires(array $requires) $incompatibleUpdates = array_filter($versions, function($version) use ($currentVersion) { return $version->isGreaterThan($currentVersion); }); - + $packages[] = new PackageInfo($name, $installedVersions[$name], $compatibleUpdates, $incompatibleUpdates); } From a2d0187e2d11f66a11ec7a1dac06de350b14457e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1chym=20Tou=C5=A1ek?= Date: Sat, 18 Jan 2014 17:13:23 +0100 Subject: [PATCH 03/13] Added caching to prevent unnecessary remote calls on every request --- .../DI/ComposerUpdatesExtension.php | 8 ++++---- .../Diagnostics/ComposerUpdatesPanel.php | 14 ++++++++++++-- src/ComposerUpdates/Initializer.php | 12 ++++++------ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/ComposerUpdates/DI/ComposerUpdatesExtension.php b/src/ComposerUpdates/DI/ComposerUpdatesExtension.php index 3f19ebf..e077067 100644 --- a/src/ComposerUpdates/DI/ComposerUpdatesExtension.php +++ b/src/ComposerUpdates/DI/ComposerUpdatesExtension.php @@ -8,27 +8,27 @@ class ComposerUpdatesExtension extends Nette\DI\CompilerExtension { private $defaults = array( 'cacheDir' => NULL, - 'localConfigFile' => NULL, + 'rootDir' => NULL, ); public function loadConfiguration() { $config = $this->getConfig($this->defaults); - if (!is_dir($config['cacheDir']) || !is_file($config['localConfigFile'])) { + if (!is_dir($config['cacheDir']) || !is_dir($config['rootDir'])) { throw new \InvalidArgumentException("Please configure the ComposerUpdates extensions using the section '{$this->name}:' in your config file."); } $builder = $this->getContainerBuilder(); $builder->addDefinition($this->prefix('initializer')) - ->setClass('ComposerUpdates\Initializer', array($config['cacheDir'], $config['localConfigFile'])); + ->setClass('ComposerUpdates\Initializer', array($config['cacheDir'], $config['rootDir'])); $builder->addDefinition($this->prefix('service')) ->setClass('ComposerUpdates\Service'); $builder->addDefinition($this->prefix('panel')) - ->setClass('ComposerUpdates\Diagnostics\ComposerUpdatesPanel'); + ->setClass('ComposerUpdates\Diagnostics\ComposerUpdatesPanel', array($config['rootDir'])); } public function afterCompile(Nette\PhpGenerator\ClassType $class) diff --git a/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php b/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php index 1d66805..c1f1212 100644 --- a/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php +++ b/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php @@ -10,9 +10,19 @@ class ComposerUpdatesPanel extends Nette\Object implements Nette\Diagnostics\IBa /** @var ComposerUpdates\PackageInfo[] */ private $packages; - public function __construct(ComposerUpdates\Service $service) + public function __construct($rootDir, ComposerUpdates\Service $service, Nette\Caching\IStorage $storage) { - $this->packages = $service->getPackages(); + $cache = new Nette\Caching\Cache($storage, 'ComposerUpdates.panel'); + $this->packages = $cache->load($rootDir, function (& $dependencies) use ($rootDir, $service) { + $dependencies = array( + Nette\Caching\Cache::EXPIRATION => '1 hour', + Nette\Caching\Cache::FILES => array( + $rootDir . '/composer.json', + $rootDir . '/composer.lock', + ), + ); + return $service->getPackages(); + }); } /** diff --git a/src/ComposerUpdates/Initializer.php b/src/ComposerUpdates/Initializer.php index 767e655..fc1aa39 100644 --- a/src/ComposerUpdates/Initializer.php +++ b/src/ComposerUpdates/Initializer.php @@ -7,7 +7,7 @@ class Initializer { private $cacheDir; - private $localConfigFile; + private $rootDir; /** @var Composer\IO\IOInterface */ private $io; @@ -29,10 +29,10 @@ class Initializer /** @var Composer\DependencyResolver\Pool */ private $packagePool; - public function __construct($cacheDir, $localConfigFile) + public function __construct($cacheDir, $rootDir) { - $this->cacheDir = $cacheDir . '/_ComposerUpdates'; - $this->localConfigFile = $localConfigFile; + $this->cacheDir = $cacheDir . '/_ComposerUpdates.composer'; + $this->rootDir = $rootDir; $this->io = new Composer\IO\NullIO(); } @@ -82,7 +82,7 @@ public function getDevRequires() private function getConfig() { if ($this->config === NULL || $this->localConfig === NULL) { - $json = new Composer\Json\JsonFile($this->localConfigFile); + $json = new Composer\Json\JsonFile($this->rootDir . '/composer.json'); $this->localConfig = $json->read(); $this->config = new Composer\Config; @@ -98,7 +98,7 @@ private function getConfig() private function getVendorDir() { - return dirname($this->localConfigFile) . '/' . $this->getConfig()->get('vendor-dir'); + return $this->rootDir . '/' . $this->getConfig()->get('vendor-dir'); } private function getRepositoryManager() From da0967fceb744d7622e4a38204718dffa861de69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1chym=20Tou=C5=A1ek?= Date: Sat, 18 Jan 2014 18:11:16 +0100 Subject: [PATCH 04/13] Added dev-only packages --- .../Diagnostics/ComposerUpdatesPanel.php | 2 +- .../Diagnostics/templates/panel.phtml | 3 +++ src/ComposerUpdates/NullVersion.php | 7 +------ src/ComposerUpdates/PackageInfo.php | 15 ++++++++++++++- src/ComposerUpdates/Service.php | 6 +++--- 5 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php b/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php index c1f1212..4494ed0 100644 --- a/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php +++ b/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php @@ -21,7 +21,7 @@ public function __construct($rootDir, ComposerUpdates\Service $service, Nette\Ca $rootDir . '/composer.lock', ), ); - return $service->getPackages(); + return array_merge($service->getPackages(), $service->getDevPackages()); }); } diff --git a/src/ComposerUpdates/Diagnostics/templates/panel.phtml b/src/ComposerUpdates/Diagnostics/templates/panel.phtml index 2df8c7d..2534b7e 100644 --- a/src/ComposerUpdates/Diagnostics/templates/panel.phtml +++ b/src/ComposerUpdates/Diagnostics/templates/panel.phtml @@ -59,6 +59,9 @@ $classes = array( getName()) ?> + isDevOnly()) { ?> + (dev only) + getInstalledVersion() ?> diff --git a/src/ComposerUpdates/NullVersion.php b/src/ComposerUpdates/NullVersion.php index b962af4..6edc2f1 100644 --- a/src/ComposerUpdates/NullVersion.php +++ b/src/ComposerUpdates/NullVersion.php @@ -2,16 +2,11 @@ namespace ComposerUpdates; -use composer\Package\PackageInterface; - class NullVersion extends Version { - protected $version; - - protected $prettyVersion; - public function __construct() { $this->version = -1; + $this->prettyVersion = 'none'; } } diff --git a/src/ComposerUpdates/PackageInfo.php b/src/ComposerUpdates/PackageInfo.php index 84becae..c0c7f6b 100644 --- a/src/ComposerUpdates/PackageInfo.php +++ b/src/ComposerUpdates/PackageInfo.php @@ -20,18 +20,23 @@ class PackageInfo /** @var Version[] */ private $incompatibleUpdates; + /** @var bool */ + private $devOnly; + /** * @param string $name * @param Version $installedVersion * @param Version[] $compatibleUpdates * @param Version[] $incompatibleUpdates + * @param bool $devOnly */ - public function __construct($name, Version $installedVersion, array $compatibleUpdates, array $incompatibleUpdates) + public function __construct($name, Version $installedVersion, array $compatibleUpdates, array $incompatibleUpdates, $devOnly) { $this->name = $name; $this->installedVersion = $installedVersion; $this->compatibleUpdates = $compatibleUpdates; $this->incompatibleUpdates = $incompatibleUpdates; + $this->devOnly = $devOnly; } /** @@ -64,6 +69,14 @@ public function getStatus() } } + /** + * @return bool + */ + public function isDevOnly() + { + return $this->devOnly; + } + /** * @return bool */ diff --git a/src/ComposerUpdates/Service.php b/src/ComposerUpdates/Service.php index 1049450..2dc90cf 100644 --- a/src/ComposerUpdates/Service.php +++ b/src/ComposerUpdates/Service.php @@ -27,10 +27,10 @@ public function getPackages() public function getDevPackages() { $requires = $this->initializer->getDevRequires(); - return $this->getPackagesFromRequires($requires); + return $this->getPackagesFromRequires($requires, TRUE); } - private function getPackagesFromRequires(array $requires) + private function getPackagesFromRequires(array $requires, $devOnly = FALSE) { $installedRepo = $this->initializer->getInstalledRepository(); @@ -62,7 +62,7 @@ private function getPackagesFromRequires(array $requires) return $version->isGreaterThan($currentVersion); }); - $packages[] = new PackageInfo($name, $installedVersions[$name], $compatibleUpdates, $incompatibleUpdates); + $packages[] = new PackageInfo($name, $currentVersion, $compatibleUpdates, $incompatibleUpdates, $devOnly); } return $packages; From 5c516c2eb9fa12a337ace357c6d0ab2a3a0da721 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1chym=20Tou=C5=A1ek?= Date: Sat, 18 Jan 2014 18:23:34 +0100 Subject: [PATCH 05/13] Fixed packages not currently installed --- .../Diagnostics/ComposerUpdatesPanel.php | 3 ++- src/ComposerUpdates/Diagnostics/templates/panel.phtml | 5 +++++ src/ComposerUpdates/Diagnostics/templates/tab.phtml | 5 +++++ src/ComposerUpdates/PackageInfo.php | 11 +++++++---- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php b/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php index 4494ed0..bc3bcfa 100644 --- a/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php +++ b/src/ComposerUpdates/Diagnostics/ComposerUpdatesPanel.php @@ -40,7 +40,8 @@ public function getTab() }, $this->packages)); $updates = count(array_filter($this->packages, function(ComposerUpdates\PackageInfo $package) { - return $package->getStatus(); + $status = $package->getStatus(); + return $status !== ComposerUpdates\PackageInfo::STATUS_NO_UPDATE && $status !== ComposerUpdates\PackageInfo::STATUS_NOT_INSTALLED; })); return self::render(__DIR__ . '/templates/tab.phtml', array( diff --git a/src/ComposerUpdates/Diagnostics/templates/panel.phtml b/src/ComposerUpdates/Diagnostics/templates/panel.phtml index 2534b7e..2a542cc 100644 --- a/src/ComposerUpdates/Diagnostics/templates/panel.phtml +++ b/src/ComposerUpdates/Diagnostics/templates/panel.phtml @@ -13,6 +13,7 @@ vertical-align: middle; margin-top: -2px; } +#nette-debug .nette-composerUpdatesPanel .not-installed, #nette-debug .nette-composerUpdatesPanel .no-update, #nette-debug .nette-composerUpdatesPanel .incompatible-update, #nette-debug .nette-composerUpdatesPanel .compatible-update { @@ -22,6 +23,9 @@ border-radius: 8px; margin-right: 3px; } +#nette-debug .nette-composerUpdatesPanel .not-installed { + background: #B1B1B1; +} #nette-debug .nette-composerUpdatesPanel .no-update { background: #599B4A; } @@ -35,6 +39,7 @@ 'not-installed', \ComposerUpdates\PackageInfo::STATUS_NO_UPDATE => 'no-update', \ComposerUpdates\PackageInfo::STATUS_INCOMPATIBLE_UPDATE => 'incompatible-update', \ComposerUpdates\PackageInfo::STATUS_COMPATIBLE_UPDATE => 'compatible-update', diff --git a/src/ComposerUpdates/Diagnostics/templates/tab.phtml b/src/ComposerUpdates/Diagnostics/templates/tab.phtml index a12b719..3194e69 100644 --- a/src/ComposerUpdates/Diagnostics/templates/tab.phtml +++ b/src/ComposerUpdates/Diagnostics/templates/tab.phtml @@ -1,4 +1,5 @@

Composer updates

+
    +
  • There is no newer version of this library.
  • +
  • There is newer version but it may not be compatible with your project. Update with caution.
  • +
  • There is newer version compatible with your project. Update is recommended.
  • +
  • This library is not currently installed.
  • +
From fbecc66e7f807e74e99ed4754df561743df4defd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1chym=20Tou=C5=A1ek?= Date: Wed, 22 Jan 2014 01:18:24 +0100 Subject: [PATCH 13/13] Removed PHP from the list (updates did not work for it) --- src/ComposerUpdates/Service.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ComposerUpdates/Service.php b/src/ComposerUpdates/Service.php index 2dc90cf..79e7b54 100644 --- a/src/ComposerUpdates/Service.php +++ b/src/ComposerUpdates/Service.php @@ -44,6 +44,9 @@ private function getPackagesFromRequires(array $requires, $devOnly = FALSE) foreach ($requires as $link) { $name = $link->getTarget(); + if (strpos($name, '/') === FALSE) { + continue; + } $currentVersion = isset($installedVersions[$name]) ? $installedVersions[$name] : new NullVersion(); $provides = $pool->whatProvides($name, $link->getConstraint());