X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FGitalist%2FGit%2FCollectionOfRepositories%2FFromListOfDirectories.pm;h=4a554129ae10177d5e07300dd19ee4ace83e8c2e;hb=13c42902c178ccbb5d2e9fd174e06e8995490ff3;hp=fae7da0edf9b29d40faee2079470b8c149ce099a;hpb=cd169152465693aa11db924efade34621a7ba3b0;p=catagits%2FGitalist.git diff --git a/lib/Gitalist/Git/CollectionOfRepositories/FromListOfDirectories.pm b/lib/Gitalist/Git/CollectionOfRepositories/FromListOfDirectories.pm index fae7da0..4a55412 100644 --- a/lib/Gitalist/Git/CollectionOfRepositories/FromListOfDirectories.pm +++ b/lib/Gitalist/Git/CollectionOfRepositories/FromListOfDirectories.pm @@ -3,32 +3,80 @@ use MooseX::Declare; class Gitalist::Git::CollectionOfRepositories::FromListOfDirectories with Gitalist::Git::CollectionOfRepositories { use MooseX::Types::Common::String qw/NonEmptySimpleStr/; use MooseX::Types::Moose qw/ ArrayRef HashRef /; + use MooseX::Types::Path::Class qw/Dir/; + use Gitalist::Git::Types qw/ ArrayRefOfDirs /; use File::Basename qw/basename/; + use Path::Class qw/dir/; use Moose::Autobox; has repos => ( - isa => ArrayRef[NonEmptySimpleStr], + isa => ArrayRefOfDirs, is => 'ro', + coerce => 1, required => 1, ); - has repos_by_name => ( - isa => HashRef[NonEmptySimpleStr], + has _repos_by_name => ( + isa => HashRef[Dir], is => 'ro', lazy_build => 1, traits => ['Hash'], handles => { - _get_path_for_project_name => 'get', + _get_path_for_repository_name => 'get', }, ); - method _build_repos_by_name { - { map { basename($_) => $_ } $self->repos->flatten }; + method debug_string { 'repository directories ' . join(" ", map { $_."" } $self->repos->flatten) } + + method _build__repos_by_name { + +{ map { basename($_) => dir($_) } $self->repos->flatten }; + } + + method _get_repo_from_name (NonEmptySimpleStr $name) { + return Gitalist::Git::Repository->new($self->_get_path_for_repository_name($name)); } ## Builders - method _build_projects { - [ map { $self->get_project($_) } $self->repos->flatten ]; + method _build_repositories { + [ map { $self->get_repository(basename($_)) } $self->repos->flatten ]; } } # end class 1; + +=head1 NAME + +Gitalist::Git::CollectionOfRepositories::FromListOfDirectories - Model of a collection of git repositories + +=head1 SYNOPSIS + + my $collection = Gitalist::Git::CollectionOfRepositories::FromListOfDirectories->new( repos => [qw/ + /path/to/repos1 + /path/to/repos2 + /] ); + my $repository_list = $collection->repositories; + my $first_repository = $repository_list->[0]; + my $named_repository = $repo->get_repository('Gitalist'); + +=head1 DESCRIPTION + +This class provides an abstraction for a list of Repository directories. + +=head1 ATTRIBUTES + +=head2 repos (C<< ArrayRef[NonEmptySimpleStr] >>) + +A list of git repository directories + +=head1 SEE ALSO + +L, L + +=head1 AUTHORS + +See L for authors. + +=head1 LICENSE + +See L for the license. + +=cut