2021-03-23 21:58:40 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace IO\Input;
|
|
|
|
|
|
|
|
use Filter\DocumentFilter;
|
2021-04-08 15:36:57 +02:00
|
|
|
use Filter\FilterParser;
|
|
|
|
use IO\Filesystem\Directory;
|
2021-03-23 21:58:40 +01:00
|
|
|
|
|
|
|
class FinderArguments
|
|
|
|
{
|
|
|
|
use ArgvAccess;
|
|
|
|
|
2021-04-08 15:36:57 +02:00
|
|
|
private Directory $directory;
|
2021-03-23 21:58:40 +01:00
|
|
|
private array $filters;
|
|
|
|
|
|
|
|
public static function createFromGlobals(): self
|
|
|
|
{
|
2021-04-08 15:36:57 +02:00
|
|
|
$arguments = self::getScriptArgs();
|
|
|
|
$directory = array_shift($arguments);
|
2021-03-23 21:58:40 +01:00
|
|
|
|
2021-04-08 15:36:57 +02:00
|
|
|
return new self($directory, $arguments);
|
2021-03-23 21:58:40 +01:00
|
|
|
}
|
|
|
|
|
2021-03-23 23:10:23 +01:00
|
|
|
public function __construct(?string $directory, array $filters)
|
|
|
|
{
|
2021-04-08 15:36:57 +02:00
|
|
|
$factory = new FilterParser();
|
|
|
|
$this->directory = Directory::fromString($directory);
|
|
|
|
$this->filters = array_map([$factory, 'parse'], $filters);
|
2021-03-23 23:10:23 +01:00
|
|
|
}
|
|
|
|
|
2021-04-08 15:36:57 +02:00
|
|
|
public function getDirectory(): Directory
|
2021-03-23 21:58:40 +01:00
|
|
|
{
|
|
|
|
return $this->directory;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return DocumentFilter[]
|
|
|
|
*/
|
|
|
|
public function getFilters(): array
|
|
|
|
{
|
|
|
|
return $this->filters;
|
|
|
|
}
|
|
|
|
}
|