protected function execute(InputInterface $input, OutputInterface $output)
{
// Finalize the container
$this->finalizeContainer($input);
// Input/output dirs
$inputDirectory = $input->getArgument('input_directory');
$outputDirectory = $input->getArgument('output_directory');
if (!empty($outputDirectory)) {
$output->writeln(sprintf('Copying input directory <info>%s</info> to <info>%s</info>', $inputDirectory, $outputDirectory));
$this->copyDir($inputDirectory, $outputDirectory);
$directory = $outputDirectory;
} else {
$directory = $inputDirectory;
}
// Strip whitespace?
$stripWhitespace = !$input->getOption('leave_whitespace');
$ignoreError = !!$input->getOption('ignore_error');
// Show every file
$this->getObfuscator()->getEventDispatcher()->addListener('obfuscator.file', function (FileEvent $event) use($output, $directory) {
$output->writeln(sprintf('Obfuscating <info>%s</info>', substr($event->getFile(), strlen($directory))));
});
// Show error processing file
if ($ignoreError) {
$this->getObfuscator()->getEventDispatcher()->addListener('obfuscator.file.error', function (FileErrorEvent $event) use($output, $directory) {
$output->writeln(sprintf('Error obfuscating <error>%s</error>', substr($event->getFile(), strlen($directory))));
$output->writeln(sprintf('Parsing error: <error>%s</error>', $event->getErrorMessage()));
});
}
// Actual obfuscation
$this->getObfuscator()->obfuscate($directory, $stripWhitespace, $ignoreError);
}