From 667176d1d0a49166eff4bf6505748a48bcd3bbe5 Mon Sep 17 00:00:00 2001 From: Sascha Egerer Date: Wed, 31 Jul 2013 19:17:37 +0200 Subject: [PATCH] Add ChangeReport Interface Added a ChangeReport Interface to allow also non VCS-Downloaders to check the status of there package --- src/Composer/Command/StatusCommand.php | 5 +-- .../Downloader/ChangeReportInterface.php | 32 +++++++++++++++++++ src/Composer/Downloader/GitDownloader.php | 2 +- src/Composer/Downloader/HgDownloader.php | 2 +- src/Composer/Downloader/SvnDownloader.php | 2 +- src/Composer/Downloader/VcsDownloader.php | 10 +----- 6 files changed, 39 insertions(+), 14 deletions(-) create mode 100644 src/Composer/Downloader/ChangeReportInterface.php diff --git a/src/Composer/Command/StatusCommand.php b/src/Composer/Command/StatusCommand.php index 0458ad658..5a07cee8b 100644 --- a/src/Composer/Command/StatusCommand.php +++ b/src/Composer/Command/StatusCommand.php @@ -15,6 +15,7 @@ namespace Composer\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; +use Composer\Downloader\ChangeReportInterface; use Composer\Downloader\VcsDownloader; /** @@ -55,10 +56,10 @@ EOT foreach ($installedRepo->getPackages() as $package) { $downloader = $dm->getDownloaderForInstalledPackage($package); - if ($downloader instanceof VcsDownloader) { + if ($downloader instanceof ChangeReportInterface) { $targetDir = $im->getInstallPath($package); - if ($changes = $downloader->getLocalChanges($targetDir)) { + if ($changes = $downloader->getLocalChanges($targetDir, $package)) { $errors[$targetDir] = $changes; } } diff --git a/src/Composer/Downloader/ChangeReportInterface.php b/src/Composer/Downloader/ChangeReportInterface.php new file mode 100644 index 000000000..dba90ebbb --- /dev/null +++ b/src/Composer/Downloader/ChangeReportInterface.php @@ -0,0 +1,32 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Downloader; + +use Composer\Package\PackageInterface; + +/** + * ChangeReport interface. + * + * @author Sascha Egerer + */ +interface ChangeReportInterface +{ + /** + * Checks for changes to the local copy + * + * @param string $path package directory + * @param PackageInterface $package package instance + * @return string|null changes or null + */ + public function getLocalChanges($path, PackageInterface $package); +} diff --git a/src/Composer/Downloader/GitDownloader.php b/src/Composer/Downloader/GitDownloader.php index edc55bc3b..dbed51177 100644 --- a/src/Composer/Downloader/GitDownloader.php +++ b/src/Composer/Downloader/GitDownloader.php @@ -78,7 +78,7 @@ class GitDownloader extends VcsDownloader /** * {@inheritDoc} */ - public function getLocalChanges($path) + public function getLocalChanges($path, PackageInterface $package) { $this->cleanEnv(); $path = $this->normalizePath($path); diff --git a/src/Composer/Downloader/HgDownloader.php b/src/Composer/Downloader/HgDownloader.php index a3fc7da76..011b401a7 100644 --- a/src/Composer/Downloader/HgDownloader.php +++ b/src/Composer/Downloader/HgDownloader.php @@ -59,7 +59,7 @@ class HgDownloader extends VcsDownloader /** * {@inheritDoc} */ - public function getLocalChanges($path) + public function getLocalChanges($path, PackageInterface $package) { if (!is_dir($path.'/.hg')) { return; diff --git a/src/Composer/Downloader/SvnDownloader.php b/src/Composer/Downloader/SvnDownloader.php index 2e894908a..c3cc5436e 100644 --- a/src/Composer/Downloader/SvnDownloader.php +++ b/src/Composer/Downloader/SvnDownloader.php @@ -52,7 +52,7 @@ class SvnDownloader extends VcsDownloader /** * {@inheritDoc} */ - public function getLocalChanges($path) + public function getLocalChanges($path, PackageInterface $package) { if (!is_dir($path.'/.svn')) { return; diff --git a/src/Composer/Downloader/VcsDownloader.php b/src/Composer/Downloader/VcsDownloader.php index 081bd2c2b..2b44ba5f0 100644 --- a/src/Composer/Downloader/VcsDownloader.php +++ b/src/Composer/Downloader/VcsDownloader.php @@ -22,7 +22,7 @@ use Composer\Util\Filesystem; /** * @author Jordi Boggiano */ -abstract class VcsDownloader implements DownloaderInterface +abstract class VcsDownloader implements DownloaderInterface, ChangeReportInterface { protected $io; protected $config; @@ -187,14 +187,6 @@ abstract class VcsDownloader implements DownloaderInterface */ abstract protected function doUpdate(PackageInterface $initial, PackageInterface $target, $path); - /** - * Checks for changes to the local copy - * - * @param string $path package directory - * @return string|null changes or null - */ - abstract public function getLocalChanges($path); - /** * Fetches the commit logs between two commits *