/**
* Executes the current command.
*
* This method is not abstract because you can use this class
* as a concrete class. In this case, instead of defining the
* execute() method, you set the code to execute by passing
* a Closure to the setCode() method.
*
* @param InputInterface $input An InputInterface instance
* @param OutputInterface $output An OutputInterface instance
*
* @throws \LogicException When this abstract method is not implemented
* @return null|int null or 0 if everything went fine, or an error code
*
* @see setCode()
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$leftFilename = $input->getArgument('left');
$rightFilename = $input->getArgument('right');
$debug = $input->getOption('debug');
$loggerHelper = new LoggerHelper();
$logger = $loggerHelper->create($debug);
if (!$rightFilename || !file_exists($rightFilename)) {
$logger->info('right file not set or invalid - creating right file from resources');
$cacheDir = sys_get_temp_dir() . '/browscap-diff/' . microtime(true) . '/';
$rightFilename = $cacheDir . 'full_php_browscap.ini';
if (!file_exists($cacheDir)) {
mkdir($cacheDir, 0777, true);
}
$buildGenerator = new BuildGenerator($input->getOption('resources'), $cacheDir);
$writerCollectionFactory = new FullPhpWriterFactory();
$writerCollection = $writerCollectionFactory->createCollection($logger, $cacheDir);
$buildGenerator->setLogger($logger)->setCollectionCreator(new CollectionCreator())->setWriterCollection($writerCollection);
$buildGenerator->run($input->getArgument('version'), false);
}
$generator = new DiffGenerator();
$generator->setLogger($logger)->run($leftFilename, $rightFilename);
$logger->info('Diff done.');
}