summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/jitterbug.pm27
1 files changed, 24 insertions, 3 deletions
diff --git a/lib/jitterbug.pm b/lib/jitterbug.pm
index 8110def..e4ebab2 100644
--- a/lib/jitterbug.pm
+++ b/lib/jitterbug.pm
@@ -12,9 +12,30 @@ load_app 'jitterbug::WebService', prefix => '/api';
 load_app 'jitterbug::Task',       prefix => '/task';
 
 get '/' => sub {
-    my @projects = redis->smembers(key_projects);
-    my @builds = redis->smembers(key_tasks);
-    template 'index', {projects => \@projects, builds => \@builds};
+
+    my @proj_name = redis->smembers(key_projects);
+    my @projects  = ();
+
+    foreach (@proj_name) {
+        my $proj = redis->get(key_project($_));
+        next unless $proj;
+        debug("on a $proj");
+        my $desc = from_json($proj);
+        my @ids  = redis->smembers( key_builds_project($_) );
+        my $res  = redis->get( pop @ids );
+        if ($res) {
+            my $last_build = from_json($res);
+            $desc->{last_build} = $last_build;
+        }
+        push @projects, $desc;
+    }
+
+    @projects =
+      sort { $b->{last_build}->{timestamp} cmp $a->{last_build}->{timestamp} }
+      @projects;
+
+    my @tasks = redis->smembers(key_tasks);
+    template 'index', {projects => \@projects, tasks => \@tasks};
 };
 
 true;