public function main()
 {
     if (NULL === $this->filesets) {
         throw new \BuildException('No fileset provided');
     }
     $project = new MagicProperty(new Phing($this));
     if (NULL !== $this->configFile) {
         $project->setConfigurationFromFile($this->configFile);
     }
     $project->setRemoveUnknownProperties($this->removeUnknownProperties);
     $project->setDryRun($this->dryRun);
     # Add files
     foreach ($this->filesets as $fs) {
         $ds = $fs->getDirectoryScanner($this->project);
         /** @var \PhingFile $fromDir */
         $fromDir = $fs->getDir($this->project);
         /** @var  $files */
         $files = $ds->getIncludedFiles();
         foreach ($files as $file) {
             $fileName = $fromDir->getAbsolutePath() . DIRECTORY_SEPARATOR . $file;
             $this->log('Adding file ' . $fileName, \Project::MSG_VERBOSE);
             $project->addSource($fileName);
         }
     }
     $sourcesChanged = $project->applyMagic();
     if ($this->haltOnSourcesChanged && $sourcesChanged > 0) {
         throw new \BuildException($sourcesChanged . ' source files changed');
     }
 }
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $logger = new SymfonyConsoleOutput($output);
     $logger->setReportingLevel(Logger::INFO);
     if ($input->getOption('quiet')) {
         $logger->setReportingLevel(Logger::ERROR);
     }
     $project = new MagicProperty($logger);
     $project->setRemoveUnknownProperties($input->getOption('remove'));
     $project->setDryRun($input->getOption('dry-run'));
     if (NULL !== ($config = $input->getOption('config'))) {
         $project->setConfigurationFromFile($config);
     }
     foreach ($input->getArgument('sources') as $source) {
         $project->addSource($source);
     }
     $sourcesChanged = $project->applyMagic();
     return $sourcesChanged === 0 ? 0 : 1;
 }