1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- <?php
- namespace think\composer;
- use Composer\Package\PackageInterface;
- use Composer\Repository\InstalledRepositoryInterface;
- use InvalidArgumentException;
- class ThinkFramework extends LibraryInstaller
- {
- public function install(InstalledRepositoryInterface $repo, PackageInterface $package)
- {
- return parent::install($repo, $package)->then(function () use ($package) {
- if ($this->composer->getPackage()
- ->getType() == 'project' && $package->getInstallationSource() != 'source') {
- //remove tests dir
- $this->filesystem->removeDirectory($this->getInstallPath($package) . DIRECTORY_SEPARATOR . 'tests');
- }
- });
- }
- /**
- * {@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 update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target)
- {
- return parent::update($repo, $initial, $target)->then(function () use ($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;
- }
- }
|