| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | 
							- <?php
 
- namespace think\composer;
 
- use Composer\Package\PackageInterface;
 
- use Composer\Repository\InstalledRepositoryInterface;
 
- use InvalidArgumentException;
 
- class ThinkFramework extends LibraryInstaller
 
- {
 
-     /**
 
-      * {@inheritDoc}
 
-      */
 
-     public function getInstallPath(PackageInterface $package)
 
-     {
 
-         if ('topthink/framework' !== $package->getPrettyName()) {
 
-             throw new InvalidArgumentException('Unable to install this library!');
 
-         }
 
-         if ($this->composer->getPackage()->getType() !== 'project') {
 
-             return parent::getInstallPath($package);
 
-         }
 
-         if ($this->composer->getPackage()) {
 
-             $extra = $this->composer->getPackage()->getExtra();
 
-             if (!empty($extra['think-path'])) {
 
-                 return $extra['think-path'];
 
-             }
 
-         }
 
-         return 'thinkphp';
 
-     }
 
-     public function install(InstalledRepositoryInterface $repo, PackageInterface $package)
 
-     {
 
-         return parent::install($repo, $package)
 
-             ->then(function () use ($package) {
 
-                 $this->removeTestDir($package);
 
-             });
 
-     }
 
-     public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target)
 
-     {
 
-         return parent::update($repo, $initial, $target)
 
-             ->then(function () use ($target) {
 
-                 $this->removeTestDir($target);
 
-             });
 
-     }
 
-     protected function removeTestDir(PackageInterface $target)
 
-     {
 
-         if ($this->composer->getPackage()->getType() == 'project' && $target->getInstallationSource() != 'source') {
 
-             //remove tests dir
 
-             $this->filesystem->removeDirectory($this->getInstallPath($target) . DIRECTORY_SEPARATOR . 'tests');
 
-         }
 
-     }
 
-     /**
 
-      * {@inheritDoc}
 
-      */
 
-     public function supports($packageType)
 
-     {
 
-         return 'think-framework' === $packageType;
 
-     }
 
- }
 
 
  |