3 namespace pharext\SourceDir
;
7 use pharext\PackageInfo
;
10 use FilesystemIterator
;
11 use IteratorAggregate
;
12 use RecursiveCallbackFilterIterator
;
13 use RecursiveDirectoryIterator
;
14 use RecursiveIteratorIterator
;
17 class Basic
implements IteratorAggregate
, SourceDir
24 public function __construct($path) {
28 public function getBaseDir() {
36 public function getPackageInfo() {
37 return $this->findPackageInfo($this->getBaseDir());
40 public function getLicense() {
41 if (($file = $this->findLicense($this->getBaseDir()))) {
42 return $this->readLicense($file);
47 public function getArgs() {
51 public function setArgs(Args
$args) {
54 public function filter($current, $key, $iterator) {
55 $sub = $current->getSubPath();
56 if ($sub === ".git" ||
$sub === ".hg" ||
$sub === ".svn") {
62 public function getIterator() {
63 $rdi = new RecursiveDirectoryIterator($this->path
,
64 FilesystemIterator
::CURRENT_AS_SELF |
// needed for 5.5
65 FilesystemIterator
::KEY_AS_PATHNAME |
66 FilesystemIterator
::SKIP_DOTS
);
67 $rci = new RecursiveCallbackFilterIterator($rdi, [$this, "filter"]);
68 $rii = new RecursiveIteratorIterator($rci);
69 foreach ($rii as $path => $child) {
70 if (!$child->isDir()) {
71 yield
realpath($path);