use Moose;
use Gitalist::Git::CollectionOfRepositories::FromDirectoryRecursive;
use Gitalist::Git::CollectionOfRepositories::FromListOfDirectories;
+use Gitalist::Git::CollectionOfRepositories::FromDirectory::WhiteList;
use MooseX::Types::Moose qw/Maybe ArrayRef/;
use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
use Moose::Util::TypeConstraints;
coerce => 1,
);
+
+has search_recursively => (
+ is => 'ro',
+ isa => 'Bool',
+ default => 0,
+);
+
+has export_ok => (
+ is => 'ro',
+ isa => 'Str',
+);
+
+has whitelist => (
+ is => 'ro',
+ isa => 'Str',
+);
+
sub _build_repo_dir {
my $self = shift;
$ENV{GITALIST_REPO_DIR} ?
sub build_per_context_instance {
my ($self, $app) = @_;
- if ($self->_repos_count) {
- Gitalist::Git::CollectionOfRepositories::FromListOfDirectories->new(repos => $self->repos);
- }
- else {
- Gitalist::Git::CollectionOfRepositories::FromDirectoryRecursive->new(repo_dir => $self->repo_dir);
+
+ my %args = (export_ok => $self->export_ok || '');
+ my $class;
+ if($self->whitelist && -f $self->whitelist) {
+ $class = 'Gitalist::Git::CollectionOfRepositories::FromDirectory::WhiteList';
+ $args{repo_dir} = $self->repo_dir;
+ $args{whitelist} = $self->whitelist;
+ } elsif ($self->_repos_count && !$self->search_recursively) {
+ $class = 'Gitalist::Git::CollectionOfRepositories::FromListOfDirectories';
+ $args{repos} = $self->repos;
+ } else {
+ $class = 'Gitalist::Git::CollectionOfRepositories::FromDirectoryRecursive';
+ $args{repo_dir} = $self->repo_dir;
}
+
+ return $class->new(%args);
}
__PACKAGE__->meta->make_immutable;