3 namespace pharext\SourceDir
;
8 use FilesystemIterator
;
10 use RecursiveCallbackFilterIterator
;
11 use RecursiveDirectoryIterator
;
12 use RecursiveIteratorIterator
;
15 class Basic
implements IteratorAggregate
, SourceDir
19 public function __construct($path) {
23 public function getBaseDir() {
27 public function getPackageInfo() {
31 public function getArgs() {
35 public function setArgs(Args
$args) {
38 public function filter($current, $key, $iterator) {
39 $sub = $current->getSubPath();
40 if ($sub === ".git" ||
$sub === ".hg" ||
$sub === ".svn") {
46 public function getIterator() {
47 $rdi = new RecursiveDirectoryIterator($this->path
,
48 FilesystemIterator
::CURRENT_AS_SELF |
// needed for 5.5
49 FilesystemIterator
::KEY_AS_PATHNAME |
50 FilesystemIterator
::SKIP_DOTS
);
51 $rci = new RecursiveCallbackFilterIterator($rdi, [$this, "filter"]);
52 $rii = new RecursiveIteratorIterator($rci);
53 foreach ($rii as $path => $child) {
54 if (!$child->isDir()) {