Пример #1
0
 /**
  * Check whether pv is installed
  *
  * @return bool
  */
 protected function hasPipeViewer()
 {
     return OperatingSystem::isProgramInstalled('pv');
 }
Пример #2
0
 /**
  * @param InputInterface $input
  * @param OutputInterface $output
  */
 protected function installSampleData(InputInterface $input, OutputInterface $output)
 {
     $contaoPackage = $this->config['contaoPackage'];
     /* @var $contaoPackage \Composer\Package\MemoryPackage */
     $extra = $contaoPackage->getExtra();
     if (!isset($extra['sample-data'])) {
         return;
     }
     $dialog = $this->getHelperSet()->get('dialog');
     $installSampleData = $input->getOption('installSampleData') !== null ? $this->_parseBoolOption($input->getOption('installSampleData')) : $dialog->askConfirmation($output, '<question>Install sample data?</question> <comment>[y]</comment>: ');
     if ($installSampleData) {
         $filesystem = new Filesystem();
         foreach ($this->commandConfig['demo-data-packages'] as $demoPackageData) {
             if ($demoPackageData['name'] == $extra['sample-data']) {
                 $package = $this->downloadByComposerConfig($input, $output, $demoPackageData, $this->config['installationFolder'] . '/_temp_demo_data', false);
                 $this->_fixComposerExtractionBug();
                 $expandedFolder = $this->config['installationFolder'] . '/_temp_demo_data/' . str_replace(array('.tar.gz', '.tar.bz2', '.zip'), '', basename($package->getDistUrl()));
                 if (is_dir($expandedFolder)) {
                     $filesystem->recursiveCopy($expandedFolder, $this->config['installationFolder']);
                     $filesystem->recursiveRemoveDirectory($expandedFolder);
                 }
                 // Remove empty folder
                 if (is_dir($this->config['installationFolder'] . '/vendor/composer')) {
                     $filesystem->recursiveRemoveDirectory($this->config['installationFolder'] . '/vendor/composer');
                 }
                 // Install sample data
                 $sampleDataSqlFile = glob($this->config['installationFolder'] . '/_temp_demo_data/contao_*sample_data*sql');
                 $db = $this->config['db'];
                 /* @var $db \PDO */
                 if (isset($sampleDataSqlFile[0])) {
                     if (OperatingSystem::isProgramInstalled('mysql')) {
                         $exec = 'mysql ' . '-h' . escapeshellarg(strval($this->config['db_host'])) . ' ' . '-u' . escapeshellarg(strval($this->config['db_user'])) . ' ' . (!strval($this->config['db_pass'] == '') ? '-p' . escapeshellarg($this->config['db_pass']) . ' ' : '') . strval($this->config['db_name']) . ' < ' . escapeshellarg($sampleDataSqlFile[0]);
                         $output->writeln('<info>Importing <comment>' . $sampleDataSqlFile[0] . '</comment> with mysql cli client</info>');
                         exec($exec);
                         @unlink($sampleDataSqlFile);
                     } else {
                         $output->writeln('<info>Importing <comment>' . $sampleDataSqlFile[0] . '</comment> with PDO driver</info>');
                         // Fallback -> Try to install dump file by PDO driver
                         $dbUtils = new DatabaseUtils();
                         $dbUtils->importSqlDump($db, $sampleDataSqlFile[0]);
                     }
                 }
             }
         }
         if (is_dir($this->config['installationFolder'] . '/_temp_demo_data')) {
             $filesystem->recursiveRemoveDirectory($this->config['installationFolder'] . '/_temp_demo_data');
         }
     }
 }