7370cec91e235f706fb8cbd3c9ccaf4b837dc009
[catagits/Gitalist.git] / lib / Gitalist / Git / CollectionOfRepositories / FromDirectory / WhiteList.pm
1 use MooseX::Declare;
2
3 class Gitalist::Git::CollectionOfRepositories::FromDirectory::WhiteList
4     extends Gitalist::Git::CollectionOfRepositories::FromDirectory {
5     use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
6     use MooseX::Types::Path::Class qw/File Dir/;
7
8     has whitelist => (
9         isa      => File,
10         is       => 'ro',
11         required => 1,
12         coerce   => 1,
13     );
14
15     method _build_repositories {
16         return [
17             map  Gitalist::Git::Repository->new($_),
18             grep -d $_,
19             map  $self->repo_dir->subdir($_),
20             map  [split]->[0], $self->whitelist->slurp(chomp => 1)
21         ];
22     }
23 }
24
25 __END__
26 =head1 NAME
27
28 Gitalist::Git::CollectionOfRepositories::FromDirectory::WhiteList - Model of a repositories listed in a file in a given directory.
29
30 =head1 SYNOPSIS
31
32     my $repo = Gitalist::Git::CollectionOfRepositories::FromDirectory::WhiteList->new(
33       repo_dir  => $Dir,
34       whitelist => 'projects.list',
35     );
36     my $repository_list = $repo->repositories;
37     my $first_repository = $repository_list->[0];
38     my $named_repository = $repo->get_repository('Gitalist');
39
40 =head1 DESCRIPTION
41
42 This class provides a list of Repositories found in the given
43 directory and specified in a given whitelist file.
44
45 =head1 ATTRIBUTES
46
47 =head2 whitelist (C<Path::Class::File>)
48
49 The file containing the available repositories. Each line specifies a
50 different repository within L</repo_dir>.
51
52 =head1 SEE ALSO
53
54 L<Gitalist::Git::CollectionOfRepositories>,
55 L<Gitalist::Git::Repository>, 
56 L<Gitalist::Git::CollectionOfRepositories::FromDirectory>
57
58 =head1 AUTHORS
59
60 See L<Gitalist> for authors.
61
62 =head1 LICENSE
63
64 See L<Gitalist> for the license.
65
66 =cut