FancyGuy\Composer\WebrootInstaller::getInstallPath PHP Method

getInstallPath() public method

{@inheritDoc}
public getInstallPath ( Composer\Package\PackageInterface $package )
$package Composer\Package\PackageInterface
    public function getInstallPath(PackageInterface $package)
    {
        $type = $package->getType();
        $prettyName = $package->getPrettyName();
        if (strpos($prettyName, '/') !== false) {
            list($vendor, $name) = explode('/', $prettyName);
        } else {
            $vendor = '';
            $name = $prettyName;
        }
        if ($this->composer->getPackage()) {
            $extra = $this->composer->getPackage()->getExtra();
            if (!empty($extra['webroot-dir']) && !empty($extra['webroot-package']) && $extra['webroot-package'] === $prettyName) {
                return $extra['webroot-dir'];
            } else {
                throw new \InvalidArgumentException('Only one package can be installed into the configured webroot.');
            }
        } else {
            throw new \InvalidArgumentException('The root package is not configured properly.');
        }
    }

Usage Example

 /**
  * testGetMultipleWebrootPackagesException
  * 
  * @return void
  * 
  * @expectedException \InvalidArgumentException
  */
 public function testGetMultipleWebrootPackagesException()
 {
     $installer = new WebrootInstaller($this->io, $this->composer);
     $package1 = new Package('fancyguy/webroot-package', '1.0.0', '1.0.0');
     $package1->setType('webroot');
     $package2 = new Package('fancyguy/another-webroot-package', '1.0.0', '1.0.0');
     $package2->setType('webroot');
     $consumerPackage = new RootPackage('foo/bar', '1.0.0', '1.0.0');
     $this->composer->setPackage($consumerPackage);
     $consumerPackage->setExtra(array('webroot-dir' => 'content', 'webroot-package' => 'fancyguy/webroot-package'));
     $consumerPackage->setRequires(array($package1, $package2));
     $result1 = $installer->getInstallPath($package1);
     $result2 = $installer->getInstallPath($package2);
 }