From 4afca78daa13de64943d3307e000ddf4f1d045c7 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 23 May 2012 15:39:57 +0200 Subject: [PATCH] Add missing class --- src/Composer/Installer/NoopInstaller.php | 92 ++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/Composer/Installer/NoopInstaller.php diff --git a/src/Composer/Installer/NoopInstaller.php b/src/Composer/Installer/NoopInstaller.php new file mode 100644 index 000000000..b37329c6f --- /dev/null +++ b/src/Composer/Installer/NoopInstaller.php @@ -0,0 +1,92 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Installer; + +use Composer\IO\IOInterface; +use Composer\Downloader\DownloadManager; +use Composer\Repository\InstalledRepositoryInterface; +use Composer\Package\PackageInterface; +use Composer\Util\Filesystem; + +/** + * Does not install anything but marks packages installed in the repo + * + * Useful for dry runs + * + * @author Jordi Boggiano + */ +class NoopInstaller implements InstallerInterface +{ + /** + * {@inheritDoc} + */ + public function supports($packageType) + { + return true; + } + + /** + * {@inheritDoc} + */ + public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) + { + return $repo->hasPackage($package); + } + + /** + * {@inheritDoc} + */ + public function install(InstalledRepositoryInterface $repo, PackageInterface $package) + { + if (!$repo->hasPackage($package)) { + $repo->addPackage(clone $package); + } + } + + /** + * {@inheritDoc} + */ + public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) + { + if (!$repo->hasPackage($initial)) { + throw new \InvalidArgumentException('Package is not installed: '.$initial); + } + + if (!$repo->hasPackage($target)) { + $repo->addPackage(clone $target); + } + } + + /** + * {@inheritDoc} + */ + public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) + { + if (!$repo->hasPackage($package)) { + // TODO throw exception again here, when update is fixed and we don't have to remove+install (see #125) + return; + throw new \InvalidArgumentException('Package is not installed: '.$package); + } + $repo->removePackage($package); + } + + /** + * {@inheritDoc} + */ + public function getInstallPath(PackageInterface $package) + { + $targetDir = $package->getTargetDir(); + + return $package->getPrettyName() . ($targetDir ? '/'.$targetDir : ''); + } +}