protected function mergePackages(Package $oldPackage, Package $newPackage) { $oldPackage->setUpdatedAt(new \DateTime()); $oldPackage->setDescription($newPackage->getDescription()); // Remove all versions that do not exist anymore and update the existing versions: foreach ($oldPackage->getVersions() as $version) { $newVersion = $this->findVersion($newPackage, $version); if (!$newVersion) { $oldPackage->removeVersion($version); } else { $version->setReferenceHash($newVersion->getReferenceHash()); $version->setLicense($newVersion->getLicense()); $version->setUpdatedAt(new \DateTime()); $this->mergeDependencies($version, $newVersion); } } // Add the new versions: foreach ($newPackage->getVersions() as $version) { $oldVersion = $this->findVersion($oldPackage, $version); if ($oldVersion === null) { $oldPackage->addVersion($version); } } }
private function parsePackageJson($json) { $package = new Package(); $package->setCreatedAt(new \DateTime()); $package->setUpdatedAt(new \DateTime()); if (isset($json->name)) { list($vendorName, $packageName) = explode('/', $json->name, 2); $vendor = new Vendor(); $vendor->setName($vendorName); $package->setName($packageName); $package->setVendor($vendor); $package->setFullname($json->name); } if (isset($json->description)) { $package->setDescription($json->description); } return $package; }