Beispiel #1
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $loop = Factory::create();
     $launcher = new Launcher($loop);
     $builder = new Builder($launcher);
     $packager = new Packager();
     $packager->setOutput(function ($line) use($builder) {
         $builder->info(strip_tags($line))->waitReturn();
     });
     $packager->coerceWritable(0);
     foreach (array('gksudo', 'kdesudo', 'cocoasudo', 'sudo') as $bin) {
         if ($this->hasBin($bin)) {
             $packager->setBinSudo($bin);
             break;
         }
     }
     $packager->setOutput($output);
     $menu = $builder->listMenu(array('search' => 'Search package online', 'local' => 'Select local package', 'url' => 'Build from git-Repository', 'about' => 'About clue/phar-composer'), 'Action');
     $menu->setTitle('clue/phar-composer');
     $menu->setWindowIcon('info');
     $menu->setCancelLabel('Quit');
     $selection = $menu->waitReturn();
     if ($selection === 'search') {
         $pharer = $this->doSearch($builder, $packager);
     } elseif ($selection === 'local') {
         do {
             $dir = $builder->directorySelection()->waitReturn();
             if ($dir === false) {
                 return;
             }
             try {
                 $pharer = $packager->getPharer($dir);
                 break;
             } catch (\Exception $e) {
                 $builder->error('Could not initialize composer package:' . PHP_EOL . PHP_EOL . $e->getMessage())->waitReturn();
             }
         } while (true);
     } elseif ($selection === 'url') {
         $pharer = $this->doUrl($builder, $packager);
     } else {
         return;
     }
     if ($pharer === null) {
         return;
     }
     $action = $builder->listMenu(array('build' => 'Build project', 'install' => 'Install project system-wide'), 'Action for "' . $pharer->getPackageRoot()->getName() . '"')->waitReturn();
     if ($action === 'build') {
         $this->doBuild($builder, $packager, $pharer);
     } elseif ($action === 'install') {
         $this->doInstall($builder, $packager, $pharer);
     } else {
         return;
     }
     $builder->info('Successfully built ' . $pharer->getTarget() . '!')->waitReturn();
 }