LEtudiant\Composer\Installer\SharedPackageInstaller::update PHP Method

update() public method

public update ( Composer\Repository\InstalledRepositoryInterface $repo, Composer\Package\PackageInterface $initial, Composer\Package\PackageInterface $target )
$repo Composer\Repository\InstalledRepositoryInterface
$initial Composer\Package\PackageInterface
$target Composer\Package\PackageInterface
    public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target)
    {
        $this->packageDataManager->setPackageInstallationSource($initial);
        $this->packageDataManager->setPackageInstallationSource($target);
        // The package need only a code update because the version (branch), only the commit changed
        if ($this->getInstallPath($initial) === $this->getInstallPath($target)) {
            $this->createPackageVendorSymlink($target);
            parent::update($repo, $initial, $target);
        } else {
            // If the initial package sources folder exists, uninstall it
            $this->composer->getInstallationManager()->uninstall($repo, new UninstallOperation($initial));
            // Install the target package
            $this->composer->getInstallationManager()->install($repo, new InstallOperation($target));
        }
    }

Usage Example

 /**
  * Behaviors :
  *
  * New (version replacement, Stable to Dev or Dev to Stable) :
  *  - Stable : > vendor directory
  *  - Dev : > shared dependencies directory
  *
  * Update (if package name & target directory are the same) :
  *  - Stable : checkout new sources
  *  - Dev : checkout new sources
  *
  * In case of replacement (see "New" part above) :
  *  - The old package is completely deleted ("composer remove" process) before installing the new version
  *
  *
  * {@inheritdoc}
  */
 public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target)
 {
     // If both packages are stable version (tag)
     if (!$target->isDev() && !$initial->isDev()) {
         $this->defaultInstaller->update($repo, $initial, $target);
     } else {
         if (!$repo->hasPackage($initial)) {
             throw new \InvalidArgumentException('Package is not installed : ' . $initial->getPrettyName());
         }
         $this->symlinkInstaller->update($repo, $initial, $target);
     }
 }
All Usage Examples Of LEtudiant\Composer\Installer\SharedPackageInstaller::update