/** * @return \Alchemy\Zippy\Zippy */ public static function load() { $zippy = Zippy::load(); $adapters = AdapterContainer::load(); $zippy->addStrategy(new ZipExtensionFileStrategy($adapters)); return $zippy; }
/** @test */ public function itShouldRegisterAdaptersOnload() { $container = AdapterContainer::load(); $this->assertInstanceOf('Alchemy\\Zippy\\Adapter\\ZipAdapter', $container['Alchemy\\Zippy\\Adapter\\ZipAdapter']); $this->assertInstanceOf('Alchemy\\Zippy\\Adapter\\GNUTar\\TarGNUTarAdapter', $container['Alchemy\\Zippy\\Adapter\\GNUTar\\TarGNUTarAdapter']); $this->assertInstanceOf('Alchemy\\Zippy\\Adapter\\GNUTar\\TarGzGNUTarAdapter', $container['Alchemy\\Zippy\\Adapter\\GNUTar\\TarGzGNUTarAdapter']); $this->assertInstanceOf('Alchemy\\Zippy\\Adapter\\GNUTar\\TarBz2GNUTarAdapter', $container['Alchemy\\Zippy\\Adapter\\GNUTar\\TarBz2GNUTarAdapter']); $this->assertInstanceOf('Alchemy\\Zippy\\Adapter\\BSDTar\\TarGzBSDTarAdapter', $container['Alchemy\\Zippy\\Adapter\\BSDTar\\TarGzBSDTarAdapter']); $this->assertInstanceOf('Alchemy\\Zippy\\Adapter\\BSDTar\\TarBSDTarAdapter', $container['Alchemy\\Zippy\\Adapter\\BSDTar\\TarBSDTarAdapter']); $this->assertInstanceOf('Alchemy\\Zippy\\Adapter\\BSDTar\\TarBz2BSDTarAdapter', $container['Alchemy\\Zippy\\Adapter\\BSDTar\\TarBz2BSDTarAdapter']); }
/** * @return AdapterInterface */ protected function getAdapter() { if (false === getenv('ZIPPY_ADAPTER')) { throw new \RuntimeException('ZIPPY_ADAPTER environment variable is not set'); } $adapter = 'Alchemy\\Zippy\\Adapter\\' . getenv('ZIPPY_ADAPTER'); if (!class_exists($adapter)) { throw new \InvalidArgumentException(sprintf('class %s does not exist', $adapter)); } $container = AdapterContainer::load(); $adapter = $container[$adapter]; if (!$adapter->isSupported()) { $this->markTestSkipped(sprintf('Adapter %s is not supported', $adapter->getName())); } return $adapter; }
/** * @param \Drupal\Console\Style\DrupalStyle $io * @param $project * @param $version * @param $type * @param $path * * @return string */ public function downloadProject(DrupalStyle $io, $project, $version, $type, $path = null) { $commandKey = str_replace(':', '.', $this->getName()); $io->comment(sprintf($this->trans('commands.' . $commandKey . '.messages.downloading'), $project, $version)); try { $destination = $this->getApplication()->getDrupalApi()->downloadProjectRelease($project, $version); if (!$path) { $path = $this->getExtractPath($type); } $drupal = $this->get('site'); $projectPath = sprintf('%s/%s', $drupal->isValidInstance() ? $drupal->getRoot() : getcwd(), $path); if (!file_exists($projectPath)) { if (!mkdir($projectPath, 0777, true)) { $io->error($this->trans('commands.' . $commandKey . '.messages.error-creating-folder') . ': ' . $projectPath); return null; } } $zippy = Zippy::load(); if (PHP_OS === "WIN32" || PHP_OS === "WINNT") { $container = AdapterContainer::load(); $container['Drupal\\Console\\Zippy\\Adapter\\TarGzGNUTarForWindowsAdapter'] = function ($container) { return TarGzGNUTarForWindowsAdapter::newInstance($container['executable-finder'], $container['resource-manager'], $container['gnu-tar.inflator'], $container['gnu-tar.deflator']); }; $zippy->addStrategy(new TarGzFileForWindowsStrategy($container)); } $archive = $zippy->open($destination); if ($type == 'core') { $archive->extract(getenv('MSYSTEM') ? null : $projectPath); } elseif (getenv('MSYSTEM')) { $current_dir = getcwd(); $temp_dir = sys_get_temp_dir(); chdir($temp_dir); $archive->extract(); $fileSystem = new Filesystem(); $fileSystem->rename($temp_dir . '/' . $project, $projectPath . '/' . $project); chdir($current_dir); } else { $archive->extract($projectPath); } unlink($destination); if ($type != 'core') { $io->success(sprintf($this->trans('commands.' . $commandKey . '.messages.downloaded'), $project, $version, sprintf('%s/%s', $projectPath, $project))); } } catch (\Exception $e) { $io->error($e->getMessage()); return null; } return $projectPath; }
/** * Creates Zippy and loads default strategies * * @return Zippy */ public static function load() { $adapters = AdapterContainer::load(); $factory = new static($adapters); $factory->addStrategy(new ZipFileStrategy($adapters)); $factory->addStrategy(new TarFileStrategy($adapters)); $factory->addStrategy(new TarGzFileStrategy($adapters)); $factory->addStrategy(new TarBz2FileStrategy($adapters)); $factory->addStrategy(new TB2FileStrategy($adapters)); $factory->addStrategy(new TBz2FileStrategy($adapters)); $factory->addStrategy(new TGzFileStrategy($adapters)); return $factory; }
public function __construct() { $this->container = AdapterContainer::load(); }