X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=src%2Fpharext%2FSourceDir%2FBasic.php;h=f960236c765fb9c1484c1bb268b58757f0021d81;hb=975b503f8cb6e5f4621057712edc3ff6273366c6;hp=7decdc6781f764f29ea8b3548edb6d4c2631360b;hpb=3abb7257b440bce5627973788204ac81db66918c;p=pharext%2Fpharext diff --git a/src/pharext/SourceDir/Basic.php b/src/pharext/SourceDir/Basic.php index 7decdc6..f960236 100644 --- a/src/pharext/SourceDir/Basic.php +++ b/src/pharext/SourceDir/Basic.php @@ -3,16 +3,20 @@ namespace pharext\SourceDir; use pharext\Cli\Args; +use pharext\License; use pharext\SourceDir; use FilesystemIterator; use IteratorAggregate; +use RecursiveCallbackFilterIterator; use RecursiveDirectoryIterator; use RecursiveIteratorIterator; class Basic implements IteratorAggregate, SourceDir { + use License; + private $path; public function __construct($path) { @@ -27,23 +31,38 @@ class Basic implements IteratorAggregate, SourceDir return []; } + public function getLicense() { + if (($file = $this->findLicense($this->getBaseDir()))) { + return $this->readLicense($file); + } + return "UNKNOWN"; + } + public function getArgs() { return []; } public function setArgs(Args $args) { } + + public function filter($current, $key, $iterator) { + $sub = $current->getSubPath(); + if ($sub === ".git" || $sub === ".hg" || $sub === ".svn") { + return false; + } + return true; + } public function getIterator() { $rdi = new RecursiveDirectoryIterator($this->path, FilesystemIterator::CURRENT_AS_SELF | // needed for 5.5 FilesystemIterator::KEY_AS_PATHNAME | FilesystemIterator::SKIP_DOTS); - $rii = new RecursiveIteratorIterator($rdi, - RecursiveIteratorIterator::CHILD_FIRST); + $rci = new RecursiveCallbackFilterIterator($rdi, [$this, "filter"]); + $rii = new RecursiveIteratorIterator($rci); foreach ($rii as $path => $child) { if (!$child->isDir()) { - yield $path; + yield realpath($path); } } }