Tidied up the /blob action and the commit-nav.tt2 links.
[catagits/Gitalist.git] / lib / Gitalist / Controller / Root.pm
index 7aa9b94..06c0a8e 100644 (file)
@@ -27,7 +27,12 @@ Gitalist::Controller::Root - Root Controller for Gitalist
 =cut
 
 use IO::Capture::Stdout;
-use File::Slurp qw(slurp);
+
+=head2 run_gitweb
+
+The main shim around C<gitweb.pm>.
+
+=cut
 
 sub run_gitweb {
   my ( $self, $c ) = @_;
@@ -52,6 +57,12 @@ sub run_gitweb {
   }
 }
 
+=head2 index
+
+Provides the project listing.
+
+=cut
+
 sub index :Path :Args(0) {
   my ( $self, $c ) = @_;
 
@@ -71,15 +82,38 @@ sub index :Path :Args(0) {
   );
 }
 
+=head2 blob
+
+The blob action i.e the contents of a file.
+
+=cut
+
 sub blob : Local {
   my ( $self, $c ) = @_;
 
+  my $h  = $c->req->param('h')
+       || $c->model('Git')->hash_by_path($c->req->param('f'))
+       || die "No file or sha1 provided.";
+  my $hb = $c->req->param('hb')
+       || $c->model('Git')->head_hash
+       || die "Couldn't discern the corresponding head.";
+
   $c->stash(
-      blob   => $c->model('GPP')->get_object($c->req->param('h'))->content,
-      action => 'blob',
+    blob     => $c->model('Git')->get_object($h)->content,
+    head     => $c->model('Git')->get_object($hb),
+    filename => $c->req->param('f') || '',
+    action   => 'blob',
   );
+
+  $c->forward('View::SyntaxHighlight');
 }
 
+=head2 reflog
+
+Expose the local reflog. This may go away.
+
+=cut
+
 sub reflog : Local {
   my ( $self, $c ) = @_;
 
@@ -93,23 +127,33 @@ sub reflog : Local {
   );
 }
 
-sub commit {
+=head2 commit
+
+Exposes a given commit. Probably too simple currently.
+
+=cut
+
+sub commit : Local {
   my ( $self, $c ) = @_;
 
   $c->stash(
-      commit => $c->model('GPP')->get_object($c->req->param('h')),
+      commit => $c->model('Git')->get_object($c->req->param('h')),
       action => 'commit',
   );
 }
 
+=head2 auto
+
+Populate the header and footer. Perhaps not the best location.
+
+=cut
+
 sub auto : Private {
     my($self, $c) = @_;
 
-    # XXX Probably not the best place for it but it will do for now.
-    if(my $proj = $c->req->param('p')) {
-        my $m = $c->model('Git');
-        $m->project($proj);
-    }
+    # XXX Temp hack until a decent solution is invented.
+    $c->model('Git')->project($c->req->param('p'))
+      if $c->req->param('p');
 
     # Yes, this is hideous.
     $self->header($c);