Esempio n. 1
0
 public function testAppendCmdOutput()
 {
     $io = new NullIO();
     $pkg = new Package('test/test', 1, 1);
     $extra = ['bash-profile-dir' => dirname(self::$file)];
     $pkg->setExtra($extra);
     # Is appendable?
     $this->assertFileExists(self::$file);
     # Pretty much the same as the internal behavior.
     # This test as well tests if the tmp file setup worked out in the setup method.
     $source = file_get_contents(__DIR__ . '/../ci/.wpcli_profile');
     $result = file_put_contents(self::$file, $source, FILE_APPEND);
     $this->assertInternalType('integer', $result);
     $this->assertTrue(false !== strpos($source, file_get_contents(self::$file)));
     # Make and add file, check against existing data, …
     $this->assertTrue(Setup::appendCmd($io, $pkg));
     # …repetitive calls do not duplicate the appended auto-complete script.
     $this->assertFalse(Setup::appendCmd($io, $pkg));
 }
 public function build(Addon $addon)
 {
     $composer = $this->packagist->getComposer();
     $downloader = $composer->getDownloadManager();
     $packageVersions = $this->packagist->getPackageVersions($addon->Name);
     $time = time();
     if (!$packageVersions) {
         throw new Exception('Could not find corresponding Packagist versions');
     }
     // Get the latest local and packagist version pair.
     $version = $addon->Versions()->filter('Development', true)->first();
     foreach ($packageVersions as $packageVersion) {
         if ($packageVersion->getVersionNormalized() != $version->Version) {
             continue;
         }
         $path = implode('/', array(TEMP_FOLDER, self::ADDONS_DIR, $addon->Name));
         // Convert PackagistAPI result into class compatible with Composer logic
         $package = new Package($addon->Name, $packageVersion->getVersionNormalized(), $packageVersion->getVersion());
         $package->setExtra($packageVersion->getExtra());
         if ($source = $packageVersion->getSource()) {
             $package->setSourceUrl($source->getUrl());
             $package->setSourceType($source->getType());
             $package->setSourceReference($source->getReference());
         }
         if ($dist = $packageVersion->getDist()) {
             $package->setDistUrl($dist->getUrl());
             $package->setDistType($dist->getType());
             $package->setDistReference($dist->getReference());
         }
         $this->download($package, $path);
         $this->buildReadme($addon, $path);
         $this->buildScreenshots($addon, $package, $path);
     }
     $addon->LastBuilt = $time;
     $addon->write();
 }
Esempio n. 3
0
 /**
  * testCustomInstallerName
  */
 public function testCustomInstallerName()
 {
     $installer = new Installer($this->io, $this->composer);
     $package = new Package('shama/cakephp-ftp-plugin', '1.0.0', '1.0.0');
     $package->setType('cakephp-plugin');
     $package->setExtra(array('installer-name' => 'FTP'));
     $result = $installer->getInstallPath($package);
     $this->assertEquals('Plugin/FTP/', $result);
 }
Esempio n. 4
0
 /**
  * Get a simple copy of the package.
  *
  * @return Package
  */
 public function getPackageCopy()
 {
     $copy = new Package($this->package->getName(), $this->package->getVersion(), $this->package->getPrettyVersion());
     $copy->setType($this->package->getType());
     $copy->setExtra($this->package->getExtra());
     return $copy;
 }
 /**
  * @param array $releases
  * @param string $connectPackage
  * @return RepositoryInterface
  */
 private function addPackages(array $releases, $connectPackage)
 {
     return new ArrayRepository(array_map(function ($release) use($connectPackage) {
         $distUrl = sprintf($this->distUrlFormat, $connectPackage, $release, $connectPackage, $release);
         $package = new Package(strtolower($connectPackage), $release, $release);
         $package->setDistUrl($distUrl);
         $package->setDistType('tar');
         $package->setType('magento-module');
         $package->setExtra(['package-xml' => "package.xml"]);
         return $package;
     }, $releases));
 }
 /**
  * @param array $releases
  * @param string $connectPackage
  * @param VersionParser $versionParser
  * @return RepositoryInterface
  */
 private function addPackages(array $releases, $connectPackage, VersionParser $versionParser)
 {
     $releases = array_filter($releases, function ($release) use($versionParser) {
         try {
             $versionParser->normalize($release);
         } catch (UnexpectedValueException $e) {
             $this->writeVerbose(sprintf('Version "%s" is not valid. Skipping this version.', $release));
             return false;
         }
         return true;
     });
     return new ArrayRepository(array_map(function ($release) use($connectPackage, $versionParser) {
         $distUrl = sprintf($this->distUrlFormat, $connectPackage, $release, $connectPackage, $release);
         $release = $versionParser->normalize($release);
         $package = new Package(strtolower($connectPackage), $release, $release);
         $package->setDistUrl($distUrl);
         $package->setDistType('tar');
         $package->setType('magento-module');
         $package->setExtra(['package-xml' => "package.xml"]);
         return $package;
     }, $releases));
 }
 public function testWordPressThemeCustom()
 {
     $themeName = 'theme-name';
     $packageName = "wpackagist/{$themeName}";
     $installer = new Installer($this->io, $this->composer);
     $package = new Package($packageName, '1.0.0', '1.0.0');
     $package->setType('wordpress-theme');
     $base = 'base';
     $package->setExtra(['wordpress-base' => $base]);
     $path = $installer->getInstallPath($package);
     $expected = "{$base}/wp-content/themes/{$themeName}";
     $this->assertEquals($expected, $path);
 }
 public function testUninstall()
 {
     $this->fs->ensureDirectoryExists($this->pluginDir);
     $installer = new GingerInstaller($this->io, $this->composer);
     $repository = new ComposerRepositoryMock();
     $package = new Package('gingerwfms/wf-configurator-backend', '1.0.0', '1.0.0');
     $package->setType('ginger-backend-plugin');
     $package->setExtra(array('plugin-namespace' => 'WfConfiguratorBackend'));
     $repository->addPackage($package);
     $gate = new Gate();
     $mockBus = new CqrsBusMock();
     $pluginNamespace = '';
     $pluginName = '';
     $pluginType = '';
     $pluginVersion = '';
     $mockBus->mapCommand('GingerPluginInstaller\\Cqrs\\UninstallPluginCommand', function (UninstallPluginCommand $command) use(&$pluginNamespace, &$pluginName, &$pluginType, &$pluginVersion) {
         $pluginNamespace = $command->getPluginNamespace();
         $pluginName = $command->getPluginName();
         $pluginType = $command->getPluginType();
         $pluginVersion = $command->getPluginVersion();
     });
     $gate->attach($mockBus);
     $gate->setDefaultBusName($mockBus->getName());
     Bootstrap::getServiceManager()->setAllowOverride(true);
     Bootstrap::getServiceManager()->setService('malocher.cqrs.gate', $gate);
     $installer->uninstall($repository, $package);
     $this->assertSame('WfConfiguratorBackend', $pluginNamespace);
     $this->assertSame('gingerwfms/wf-configurator-backend', $pluginName);
     $this->assertSame('ginger-backend-plugin', $pluginType);
     $this->assertSame('1.0.0', $pluginVersion);
 }
 /**
  * @param string $name
  * @param string $theme
  * @param array  $extra
  * @param bool   $createAssets
  * @param bool   $addGlob
  * @param bool   $addFiles
  * @return Package
  */
 public function createStaticPackage($name = 'some/static', $theme = 'package/theme', $extra = array(), $createAssets = true, $addGlob = false, $addFiles = false)
 {
     $package = new Package($name, "1.0.0", $name);
     $package->setExtra($extra);
     $package->setType('static');
     $rootPackageExtra = array_merge_recursive($this->composer->getPackage()->getExtra(), array('static-map' => array($name => array($theme => array(array('src' => 'assets', 'dest' => 'assets'))))));
     $this->composer->getPackage()->setExtra($rootPackageExtra);
     if ($createAssets) {
         $this->createStaticPackageAssets($package);
     }
     if ($addGlob) {
         $this->addGlobFiles($package);
     }
     if ($addFiles) {
         $this->addStandardFiles($package);
     }
     return $package;
 }
 /**
  * testPackageExtraOptions
  *
  * @dataProvider dataForTestPackageExtraOptions
  */
 public function testPackageExtraOptions($type, $path, $name, array $extra)
 {
     $installer = new BundleInstaller($this->io, $this->composer);
     $package = new Package($name, '1.0.0', '1.0.0');
     $package->setType($type);
     $package->setExtra($extra);
     $result = $installer->getInstallPath($package);
     $this->assertEquals($path, $result);
 }