Esempio n. 1
0
 public function latest(CompletePackage $package)
 {
     $response = json_decode($this->client->get('/packages/' . $package->getName() . '.json')->send()->getBody(), true);
     $versions = $response['package']['versions'];
     $stability = VersionParser::parseStability($package->getPrettyVersion());
     $versions = $this->trim->trim($versions, $stability);
     $versions = $this->sort->nameSort($versions);
     return array_shift($versions);
 }
Esempio n. 2
0
 /**
  * @api
  */
 public function __construct(\Composer\Package\CompletePackage $pkgInstance = null)
 {
     parent::__construct();
     $this->packageInstance = $pkgInstance;
     if ($pkgInstance) {
         $this->composerPackageName = $pkgInstance->getName();
     }
     $this->type = Event\TYPE_BROADCAST_POST_ORDER;
 }
Esempio n. 3
0
 /**
  * Filter the package to add dist and other meta information.
  */
 function filterPackage(CompletePackage $package)
 {
     list($vendor, $shortName) = explode('/', $package->getName());
     // try to get the plugin info - may return an array or null/false
     try {
         $info = $this->getPluginInfo($shortName);
     } catch (RuntimeException $e) {
         if ($io->isVerbose()) {
             $io->writeError($e->getMessage());
         }
         // this allows us to try again for this plugin
         return;
     }
     if ($info) {
         // set the dist info
         $package->setDistType('zip');
         // strip out "tags", "trunk", slashes, and spaces
         $version = preg_replace('/tags|trunk|[\\/ ]/', '', $package->getSourceReference());
         // if there is a version identifier, prepend with a period
         $version = $version ? ".{$version}" : '';
         // set the dist url
         $package->setDistUrl('https://downloads.wordpress.org/plugin/' . urlencode($shortName . $version) . '.zip');
         // set some additional meta info
         // this is inconsequential to the solver, but it gets stored in composer.lock
         // and appears when running `composer show vendor/package`
         if (isset($info['short_description'])) {
             $package->setDescription($info['short_description']);
         }
         if (!empty($info['contributors'])) {
             $authors = [];
             foreach ($info['contributors'] as $name => $homepage) {
                 $authors[] = ['name' => $name, 'homepage' => $homepage];
             }
             $package->setAuthors($authors);
         }
         if (!empty($info['tags'])) {
             $package->setKeywords($info['tags']);
         }
         // URL-ready slug
         $pluginSlug = urlencode($shortName);
         $package->setSupport(['forum' => "https://wordpress.org/support/plugin/{$pluginSlug}/", 'source' => "http://plugins.trac.wordpress.org/browser/{$pluginSlug}/", 'docs' => "https://wordpress.org/plugins/{$pluginSlug}/"]);
         $package->setHomepage("https://wordpress.org/plugins/{$pluginSlug}/");
     } else {
         // null means the package is no longer active
         $package->setAbandoned(true);
     }
 }
Esempio n. 4
0
 /**
  * Filter the package to add dist and other meta information.
  */
 function filterPackage(CompletePackage $package)
 {
     list($vendor, $shortName) = explode('/', $package->getName());
     if (($themeInfo = $this->getThemeInfo()) && isset($themeInfo[$shortName])) {
         $info = $themeInfo[$shortName];
         // set the dist info
         $package->setDistType('zip');
         $package->setDistUrl($info['download_uri']);
         // additional meta info
         $package->setDescription($info['description']);
         $package->setAuthors([['name' => $info['author'], 'homepage' => $info['author_uri']]]);
         $package->setHomepage($info['theme_uri']);
         // is this theme retired?
         if (in_array($shortName, $this->getRetiredThemes())) {
             $package->setAbandoned(true);
         }
     }
 }
Esempio n. 5
0
 /**
  * @param \Composer\Package\CompletePackage $package
  * @return CM_App_Package
  * @throws CM_Exception_Invalid
  */
 protected function _getPackageFromComposerPackage(\Composer\Package\CompletePackage $package)
 {
     $pathRelative = '';
     if (!$package instanceof \Composer\Package\RootPackage) {
         $vendorDir = $this->_getComposerVendorDir();
         $pathRelative = $vendorDir . $package->getPrettyName() . '/';
     }
     $extra = $package->getExtra();
     $modules = array();
     if (array_key_exists('cm-modules', $extra)) {
         $modules = $extra['cm-modules'];
     }
     return new CM_App_Package($package->getName(), $pathRelative, $modules);
 }
 private function updateAuthors(AddonVersion $version, CompletePackage $package)
 {
     if ($package->getAuthors()) {
         foreach ($package->getAuthors() as $details) {
             $author = null;
             if (!$details->getName() && !$details->getEmail()) {
                 continue;
             }
             if ($details->getEmail()) {
                 $author = AddonAuthor::get()->filter('Email', $details->getEmail())->first();
             }
             if (!$author && $details->getHomepage()) {
                 $author = AddonAuthor::get()->filter('Name', $details->getName())->filter('Homepage', $details->getHomepage())->first();
             }
             if (!$author && $details->getName()) {
                 $author = AddonAuthor::get()->filter('Name', $details->getName())->filter('Versions.Addon.Name', $package->getName())->first();
             }
             if (!$author) {
                 $author = new AddonAuthor();
             }
             if ($details->getName()) {
                 $author->Name = $details->getName();
             }
             if ($details->getEmail()) {
                 $author->Email = $details->getEmail();
             }
             if ($details->getHomepage()) {
                 $author->Homepage = $details->getHomepage();
             }
             //to-do not supported by API
             //if(isset($details['role'])) $author->Role = $details['role'];
             $version->Authors()->add($author->write());
         }
     }
 }
 /**
  * Test the conversion of a complete repository.
  *
  * @return void
  */
 public function testConvertRepositoryToArrayOnlyRequired()
 {
     $repository = new ArrayRepository([$package1 = new CompletePackage('test/dependency1', '1.0.0.0', '1.0.0.0'), $package2 = new CompletePackage('test/non-dependency2', '2.0.0.0', '2.0.0.0')]);
     $package1->setType('project');
     $package1->setLicense(['LGPL-3']);
     $package2->setType('project');
     $package2->setLicense(['GPL-3']);
     $converter = new PackageConverter($rootPackage = new RootPackage('root/package', 'dev-master', 'dev-master'));
     $rootPackage->setRequires(['test/dependency1' => new Link('root/package', 'test/dependency1', new Constraint('<', '2.0'))]);
     $converted = $converter->convertRepositoryToArray($repository, true);
     $this->assertEquals(['test\\/dependency1'], $converted->getEntries('/'));
     $this->assertEquals(['test\\/dependency1/name', 'test\\/dependency1/version', 'test\\/dependency1/constraint', 'test\\/dependency1/type', 'test\\/dependency1/locked', 'test\\/dependency1/license', 'test\\/dependency1/abandoned'], $converted->getEntries('/test\\/dependency1'));
     $this->assertEquals($package1->getName(), $converted->get('test\\/dependency1/name'));
     $this->assertEquals($package1->getPrettyVersion(), $converted->get('test\\/dependency1/version'));
     $this->assertEquals($converted->get('test\\/dependency1/constraint'), '< 2.0');
     $this->assertEquals($package1->getType(), $converted->get('test\\/dependency1/type'));
     $this->assertFalse($converted->get('test\\/dependency1/locked'));
     $this->assertEquals($package1->getLicense(), $converted->get('test\\/dependency1/license'));
     $this->assertFalse($converted->get('test\\/dependency1/abandoned'));
 }
Esempio n. 8
0
 /**
  * Uninstall a plugin from the database
  *
  * @param CompletePackage $package
  */
 public function uninstall(CompletePackage $package)
 {
     $plugin = $this->findOneByName($package->getName());
     if ($plugin != null) {
         $this->entityManager->remove($plugin);
         $this->entityManager->flush();
     } else {
         error_log('Tried to uninstall a plugin that wasn\'t in the database: ' . $package->getName());
     }
 }