use Moose;
use Gitalist::Git::Repo;
+use Gitalist::Git::CollectionOfProjects::FromListOfDirectories;
+use MooseX::Types::Moose qw/Maybe ArrayRef/;
use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
use Moose::Util::TypeConstraints;
use namespace::autoclean;
);
has repo_dir => (
- isa => $repo_dir_t,
+ isa => Maybe[$repo_dir_t],
is => 'ro',
lazy_build => 1
);
+has repos => (
+ isa => ArrayRef[$repo_dir_t],
+ is => 'ro',
+ default => sub { [] },
+ traits => ['Array'],
+ handles => {
+ _repos_count => 'count',
+ },
+);
+
sub _build_repo_dir {
my $self = shift;
$ENV{GITALIST_REPO_DIR} ?
after BUILD => sub {
my $self = shift;
- $self->repo_dir; # Explode loudly at app startup time if there is no repos
- # dir, rather than on first hit
+ # Explode loudly at app startup time if there is no list of
+ # projects or repos dir, rather than on first hit
+ $self->_repos_count || $self->repo_dir;
};
sub build_per_context_instance {
my ($self, $app) = @_;
-
- Gitalist::Git::Repo->new(repo_dir => $self->repo_dir);
+ if ($self->_repos_count) {
+ Gitalist::Git::CollectionOfProjects::FromListOfDirectories->new(repos => $self->repos);
+ }
+ else {
+ Gitalist::Git::Repo->new(repo_dir => $self->repo_dir);
+ }
}
__PACKAGE__->meta->make_immutable;