my ( $self, $c ) = @_;
my $app = blessed($c) || $c;
- my $model = Git::Repos->new( repo_dir => $app->config->{repo_dir} );
+ my $model = Git::Repos->new(
+ project => ([$c->req->parameters->{p} || '/']->flatten)[0],
+ repo_dir => $app->config->{repo_dir}, # FIXME - Move to model config
+ );
- if ($c->req->parameters->{p}) {
- # A Project was passed in
- my $project = ([$c->req->parameters->{p} || '/']->flatten)[0];
- $model->project( $project );
+ # This is fugly as fuck. Move Git::PurePerl construction into attribute builders..
+ (my $pd = $self->project_dir( $self->project )) =~ s{/\.git$}();
+ $model->gpp( Git::PurePerl->new(directory => $pd) );
- # This is fugly as fu\ack. Move Git::PurePerl construction into attribute builders..
- (my $pd = $model->project_dir($project)) =~ s{/\.git$}();
- $model->gpp( Git::PurePerl->new(directory => $pd) );
- }
return $model;
}
=cut
sub list_projects {
- my ($self, $dir) = @_;
-
- my $base = dir($dir || $self->repo_dir);
+ my ($self, $dir) = @_;
+
+ my $base = dir($dir || $self->repo_dir);
+
+ my @ret;
+ my $dh = $base->open or die("Cannot open dir $base");
+ while (my $file = $dh->read) {
+ next if $file =~ /^.{1,2}$/;
+
+ my $obj = $base->subdir($file);
+ next unless -d $obj;
+ next unless $self->is_git_repo($obj);
+ # XXX Leaky abstraction alert!
+ my $is_bare = !-d $obj->subdir('.git');
+
+ my $name = (File::Spec->splitdir($obj))[-1];
+ push @ret, {
+ name => ($name . ( $is_bare ? '' : '/.git' )),
+ $self->get_project_properties(
+ $is_bare ? $obj : $obj->subdir('.git')
+ ),
+ };
+ }
+>>>>>>> 6ccff25e7c826deca31f450f33049ba7fd62ded9:lib/Gitalist/Model/Git.pm
my @ret;
my $dh = $base->open;