public function updatePackage(PackageInterface $package, InstallerInterface $installer)
    {
        if (!$this->isPackageInstalled($package)) {
            throw new RuntimeException(sprintf('Package %s is not installed.', $package->getName()));
        }
        if (is_null($package->getRequiredVersion())) {
            $decode = $this->config->getBowerFileContent();
            if (empty($decode['dependencies']) || empty($decode['dependencies'][$package->getName()])) {
                throw new InvalidArgumentException(sprintf('Package %s not found in bower.json', $package->getName()));
            }
            $package->setRequiredVersion($decode['dependencies'][$package->getName()]);
        }

        $bower = $this->config->getPackageBowerFileContent($package);
        $package->setInfo($bower);
        $package->setVersion($bower['version']);
        $package->setRequires(isset($bower['dependencies']) ? $bower['dependencies'] : null);

        $packageTag = $this->getPackageTag($package);
        $this->output->writelnInfoPackage($package, 'validate', sprintf('%s against %s#%s', $packageTag, $package->getName(), $package->getRequiredVersion()));

        $package->setRepository($this->repository);
        if ($packageTag == $package->getVersion()) {
            // if version is fully matching, there's no need to update
            return;
        }
        $package->setVersion($packageTag);

        $this->cachePackage($package);

        $this->output->writelnUpdatingPackage($package);
        $installer->update($package);

        $overrides = $this->config->getOverrideFor($package->getName());
        if (array_key_exists('dependencies', $overrides)) {
            $dependencies = $overrides['dependencies'];
        } else {
            $dependencies = $package->getRequires();
        }
        if (!empty($dependencies)) {
            foreach ($dependencies as $name => $requiredVersion) {
                $depPackage = new Package($name, $requiredVersion);
                if (!$this->isPackageInstalled($depPackage)) {
                    $this->installPackage($depPackage, $installer, true);
                } elseif ($this->isNeedUpdate($depPackage)) {
                    $this->updatePackage($depPackage, $installer);
                }
            }
        }
    }
public function updatePackage(PackageInterface $package, InstallerInterface $installer)
    {
        if (!$this->isPackageInstalled($package)) {
            throw new RuntimeException(sprintf('Package %s is not installed.', $package->getName()));
        }
        if (is_null($package->getRequiredVersion())) {
            $decode = $this->config->getBowerFileContent();
            if (empty($decode['dependencies']) || empty($decode['dependencies'][$package->getName()])) {
                throw new InvalidArgumentException(sprintf('Package %s not found in bower.json', $package->getName()));
            }
            $package->setRequiredVersion($decode['dependencies'][$package->getName()]);
        }

        $bower = $this->config->getPackageBowerFileContent($package);
        $package->setInfo($bower);
        $package->setVersion($bower['version']);
        $package->setRequires(isset($bower['dependencies']) ? $bower['dependencies'] : null);

        $packageTag = $this->getPackageTag($package);
        $this->output->writelnInfoPackage($package, 'validate', sprintf('%s against %s#%s', $packageTag, $package->getName(), $package->getRequiredVersion()));

        $package->setRepository($this->repository);
        if ($packageTag == $package->getVersion()) {
            // if version is fully matching, there's no need to update
            return;
        }
        $package->setVersion($packageTag);

        $this->cachePackage($package);

        $this->output->writelnUpdatingPackage($package);
        $installer->update($package);

        $overrides = $this->config->getOverrideFor($package->getName());
        if (array_key_exists('dependencies', $overrides)) {
            $dependencies = $overrides['dependencies'];
        } else {
            $dependencies = $package->getRequires();
        }
        if (!empty($dependencies)) {
            foreach ($dependencies as $name => $requiredVersion) {
                $depPackage = new Package($name, $requiredVersion);
                if (!$this->isPackageInstalled($depPackage)) {
                    $this->installPackage($depPackage, $installer, true);
                } elseif ($this->isNeedUpdate($depPackage)) {
                    $this->updatePackage($depPackage, $installer);
                }
            }
        }
    }
public function updatePackage ( PackageInterface $ package , InstallerInterface $ installer ) { if ( ! $ this -> isPackageInstalled ( $ package ) ) { throw new RuntimeException ( sprintf ( 'Package %s is not installed.' , $ package -> getName ( ) ) ) ; } if ( is_null ( $ package -> getRequiredVersion ( ) ) ) { $ decode = $ this -> config -> getBowerFileContent ( ) ; if ( empty ( $ decode [ 'dependencies' ] ) || empty ( $ decode [ 'dependencies' ] [ $ package -> getName ( ) ] ) ) { throw new InvalidArgumentException ( sprintf ( 'Package %s not found in bower.json' , $ package -> getName ( ) ) ) ; } $ package -> setRequiredVersion ( $ decode [ 'dependencies' ] [ $ package -> getName ( ) ] ) ; } $ bower = $ this -> config -> getPackageBowerFileContent ( $ package ) ; $ package -> setInfo ( $ bower ) ; $ package -> setVersion ( $ bower [ 'version' ] ) ; $ package -> setRequires ( isset ( $ bower [ 'dependencies' ] ) ? $ bower [ 'dependencies' ] : null ) ; $ packageTag = $ this -> getPackageTag ( $ package ) ; $ this -> output -> writelnInfoPackage ( $ package , 'validate' , sprintf ( '%s against %s#%s' , $ packageTag , $ package -> getName ( ) , $ package -> getRequiredVersion ( ) ) ) ; $ package -> setRepository ( $ this -> repository ) ; if ( $ packageTag == $ package -> getVersion ( ) ) { // if version is fully matching, there's no need to update return ; } $ package -> setVersion ( $ packageTag ) ; $ this -> cachePackage ( $ package ) ; $ this -> output -> writelnUpdatingPackage ( $ package ) ; $ installer -> update ( $ package ) ; $ overrides = $ this -> config -> getOverrideFor ( $ package -> getName ( ) ) ; if ( array_key_exists ( 'dependencies' , $ overrides ) ) { $ dependencies = $ overrides [ 'dependencies' ] ; } else { $ dependencies = $ package -> getRequires ( ) ; } if ( ! empty ( $ dependencies ) ) { foreach ( $ dependencies as $ name => $ requiredVersion ) { $ depPackage = new Package ( $ name , $ requiredVersion ) ; if ( ! $ this -> isPackageInstalled ( $ depPackage ) ) { $ this -> installPackage ( $ depPackage , $ installer , true ) ; } elseif ( $ this -> isNeedUpdate ( $ depPackage ) ) { $ this -> updatePackage ( $ depPackage , $ installer ) ; } } } }
Update a single package

@param PackageInterface   $package
@param InstallerInterface $installer
Update a single package