X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Fpharext%2FSourceDir%2FBasic.php;h=13891d02a9b65eeb452a065e7453f4f9d6362086;hb=25b7d8e0878e236e592434c10b3eb76490126579;hp=7decdc6781f764f29ea8b3548edb6d4c2631360b;hpb=3abb7257b440bce5627973788204ac81db66918c;p=pharext%2Fpharext diff --git a/src/pharext/SourceDir/Basic.php b/src/pharext/SourceDir/Basic.php index 7decdc6..13891d0 100644 --- a/src/pharext/SourceDir/Basic.php +++ b/src/pharext/SourceDir/Basic.php @@ -3,16 +3,22 @@ namespace pharext\SourceDir; use pharext\Cli\Args; +use pharext\License; +use pharext\PackageInfo; use pharext\SourceDir; use FilesystemIterator; use IteratorAggregate; +use RecursiveCallbackFilterIterator; use RecursiveDirectoryIterator; use RecursiveIteratorIterator; class Basic implements IteratorAggregate, SourceDir { + use License; + use PackageInfo; + private $path; public function __construct($path) { @@ -22,28 +28,47 @@ class Basic implements IteratorAggregate, SourceDir public function getBaseDir() { return $this->path; } - + + /** + * @inheritdoc + * @return array + */ public function getPackageInfo() { - return []; + return $this->findPackageInfo($this->getBaseDir()); } + 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); } } }