Fix gitalist.conf
Tomas Doran [Mon, 2 Nov 2009 20:04:16 +0000 (20:04 +0000)]
.gitignore
gitalist.conf
lib/Gitalist/Model/Git.pm

index 2c92d23..cae7b05 100644 (file)
@@ -1,3 +1,5 @@
+git-daemon-export-ok
+script/gitalist.cgi
 META.yml
 Makefile
 Makefile.old
index 0139553..54ee7d0 100644 (file)
@@ -1,8 +1,10 @@
 name Gitalist
 
-#git /path/to/git
-projectroot __path_to(../)__
-repo_dir __path_to(../)__
+<Model::Git>
+    #git /path/to/git
+ #   projectroot /home/dbrook/dev
+ #   repo_dir /home/dbrook/dev
+</Model::Git>
 
 sitename "Gitalist presently"
 
index 973de0a..7bbce50 100644 (file)
@@ -25,17 +25,15 @@ sub build_per_context_instance {
   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;
 }
 
@@ -249,9 +247,30 @@ each item will contain the contents of L</project_info>.
 =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;