public function onSearchStart(SearchEvent $event)
 {
     $input = $event->getInput();
     $query = $input->getArgument('query');
     $this->parser->freeOnly = $input->getOption('free');
     $this->parser->maxPages = $input->getOption('pages');
     $books = $this->parser->searchBooks($event->getProgressBar(), $query);
     $event->setBooks($books);
 }
 /**
  * @param SearchEvent $event
  */
 public function onSearchFinish(SearchEvent $event)
 {
     $input = $event->getInput();
     $output = $event->getOutput();
     $file = $input->getOption('file');
     if ($file) {
         $this->saveToFile($file, $event->getBooks());
         $output->writeln("Results saved to {$file}");
     }
 }
 /**
  * @param SearchEvent $event
  */
 public function onSearchFinish(SearchEvent $event)
 {
     $output = $event->getOutput();
     $books = $event->getBooks();
     $output->writeLn('');
     if (empty($books)) {
         $output->writeLn('No books found.');
         return;
     }
     $table = new Table($output);
     $table->setHeaders(['Title', 'Link']);
     $table->setRows($books);
     $table->render();
 }