From: Dan Brook Date: Sun, 6 Mar 2011 15:27:14 +0000 (+0000) Subject: Allow enabling recursive repo search in config. X-Git-Tag: 0.002009~2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FGitalist.git;a=commitdiff_plain;h=1891c7741653bd5c20f52aa7176157afeb2e0121 Allow enabling recursive repo search in config. Seemed a shame to have a feature that was only enabled given a particular directory configuration. --- diff --git a/gitalist_local.conf b/gitalist_local.conf index 0540379..5a445f7 100644 --- a/gitalist_local.conf +++ b/gitalist_local.conf @@ -4,6 +4,7 @@ # This file is suppressed from the built dist by MANIFEST.SKIP, so you # don't have this config if you install from CPAN. repo_dir __path_to(../)__ + # search_recursively 1 # export_ok .export-ok # whitelist __path_to(../project.list)__ diff --git a/lib/Gitalist/Model/CollectionOfRepos.pm b/lib/Gitalist/Model/CollectionOfRepos.pm index 6c2d9a1..f631815 100644 --- a/lib/Gitalist/Model/CollectionOfRepos.pm +++ b/lib/Gitalist/Model/CollectionOfRepos.pm @@ -50,6 +50,13 @@ has repos => ( coerce => 1, ); + +has search_recursively => ( + is => 'ro', + isa => 'Bool', + default => 0, +); + has export_ok => ( is => 'ro', isa => 'Str', @@ -60,7 +67,6 @@ has whitelist => ( isa => 'Str', ); - sub _build_repo_dir { my $self = shift; $ENV{GITALIST_REPO_DIR} ? @@ -86,11 +92,10 @@ sub build_per_context_instance { $class = 'Gitalist::Git::CollectionOfRepositories::FromDirectory::WhiteList'; $args{repo_dir} = $self->repo_dir; $args{whitelist} = $self->whitelist; - } elsif ($self->_repos_count) { + } elsif ($self->_repos_count && !$self->search_recursively) { $class = 'Gitalist::Git::CollectionOfRepositories::FromListOfDirectories'; $args{repos} = $self->repos; - } - else { + } else { $class = 'Gitalist::Git::CollectionOfRepositories::FromDirectoryRecursive'; $args{repo_dir} = $self->repo_dir; } diff --git a/t/model_collectionofrepos.t b/t/model_collectionofrepos.t index 1151b65..2acb3ff 100644 --- a/t/model_collectionofrepos.t +++ b/t/model_collectionofrepos.t @@ -99,6 +99,18 @@ throws_ok { Gitalist::Model::CollectionOfRepos->COMPONENT($ctx_gen->(), { repos } { + my $i = test_with_config({ repo_dir => "$FindBin::Bin/lib"}); + is scalar($i->repositories->flatten), 5, 'Found 5 repos recursively'; + isa_ok $i, 'Gitalist::Git::CollectionOfRepositories::FromDirectoryRecursive'; +} + +{ + my $i = test_with_config({ repo_dir => "$FindBin::Bin/lib/repositories", search_recursively => 1 }); + is scalar($i->repositories->flatten), 5, 'Found 5 repos recursively using config'; + isa_ok $i, 'Gitalist::Git::CollectionOfRepositories::FromDirectoryRecursive'; +} + +{ my $i = test_with_config({ repos => [ "$FindBin::Bin/lib/repositories/bare.git", "$FindBin::Bin/lib/repositories/repo1",