Browse Source

Repository options must be replicated on package when dist file is under
repository base dir

Luís Otávio Cobucci Oblonczyk 11 years ago
parent
commit
0b77a59af6
1 changed files with 21 additions and 0 deletions
  1. 21 0
      src/Composer/Repository/ComposerRepository.php

+ 21 - 0
src/Composer/Repository/ComposerRepository.php

@@ -13,6 +13,7 @@
 namespace Composer\Repository;
 
 use Composer\Package\Loader\ArrayLoader;
+use Composer\Package\Package;
 use Composer\Package\PackageInterface;
 use Composer\Package\AliasPackage;
 use Composer\Package\Version\VersionParser;
@@ -204,10 +205,19 @@ class ComposerRepository extends ArrayRepository implements StreamableRepository
             $package = $package->getAliasOf();
         }
         $package->setRepository($this);
+        $this->configurePackageOptions($package);
 
         return $package;
     }
 
+    protected function configurePackageOptions(PackageInterface $package)
+    {
+        if ($package instanceof Package
+            && strpos($package->getDistUrl(), $this->baseUrl) === 0) {
+            $package->setOptions($this->options);
+        }
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -376,6 +386,17 @@ class ComposerRepository extends ArrayRepository implements StreamableRepository
         }
     }
 
+    /**
+     * Adds a new package to the repository
+     *
+     * @param PackageInterface $package
+     */
+    public function addPackage(PackageInterface $package)
+    {
+        parent::addPackage($package);
+        $this->configurePackageOptions($package);
+    }
+
     protected function loadRootServerFile()
     {
         if (null !== $this->rootData) {