/**
* @param DirectoryScanner $scanner
*
* @return Project
*/
public function run(DirectoryScanner $scanner)
{
$srcDir = $this->project->getSourceDir();
$this->logger->log("Scanning directory '{$srcDir}' for files to process\n");
$iterator = new SourceFileIterator($scanner($srcDir), $srcDir);
foreach ($iterator as $file) {
$needsProcessing = $this->project->addFile($file);
if (!$needsProcessing) {
$this->logger->progress('cached');
continue;
}
if (!$this->processFile($file)) {
$this->project->removeFile($file);
}
}
$this->logger->completed();
return $this->project;
}