3 class Gitalist::Git::CollectionOfRepositories::Vhost
4 with Gitalist::Git::CollectionOfRepositories {
5 use MooseX::Types::Moose qw/ HashRef Str /;
6 use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
7 use MooseX::Types::Path::Class qw/Dir/;
8 use Moose::Util::TypeConstraints;
10 sub BUILDARGS { # FIXME - This is fuck ugly!
11 my ($class, @args) = @_;
12 my $args = $class->next::method(@args);
13 my %collections = %{ delete $args->{collections} };
14 foreach my $name (keys %collections) {
15 my %args = %{$collections{$name}};
16 my $class = delete $args{class};
17 Class::MOP::load_class($class);
18 $collections{$name} = $class->new(%args);
20 my $ret = { %$args, collections => \%collections };
24 has vhost_dispatch => (
29 _get_collection_name_for_vhost => 'get',
38 _get_collection => 'get',
48 method debug_string { 'chosen collection ' . ref($self->chosen_collection) . " " . $self->chosen_collection->debug_string }
50 role_type 'Gitalist::Git::CollectionOfRepositories';
51 has chosen_collection => (
52 does => 'Gitalist::Git::CollectionOfRepositories',
59 $self->_get_collection($self->_get_collection_name_for_vhost($self->vhost) || $self->_get_collection_name_for_vhost('_default_'));
69 Gitalist::Git::CollectionOfRepositories::Vhost
73 my $repo = Gitalist::Git::CollectionOfRepositories::Vhost->new(
75 "git.shadowcat.co.uk" => "foo",
76 "git.moose.perl.org" => "bar",
80 foo => { class => Gitalist::Git::CollectionOfRepositories::XXX', %args },
81 bar => { class => Gitalist::Git::CollectionOfRepositories::XXX', %args },
84 my $repository_list = $repo->repositories;
85 my $first_repository = $repository_list->[0];
86 my $named_repository = $repo->get_repository('Gitalist');
92 L<Gitalist::Git::CollectionOfRepositories>, L<Gitalist::Git::Repository>
96 See L<Gitalist> for authors.
100 See L<Gitalist> for the license.