summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/jitterbug.pm16
-rw-r--r--lib/jitterbug/Plugin/Template.pm17
-rw-r--r--lib/jitterbug/Project.pm11
-rw-r--r--lib/jitterbug/Task.pm19
-rw-r--r--lib/jitterbug/WebService.pm17
-rw-r--r--public/css/style.css21
-rw-r--r--views/index.tt11
-rw-r--r--views/layouts/main.tt10
-rw-r--r--views/project/index.tt42
-rw-r--r--views/task/index.tt1
10 files changed, 124 insertions, 41 deletions
diff --git a/lib/jitterbug.pm b/lib/jitterbug.pm
index 7b3b163..8110def 100644
--- a/lib/jitterbug.pm
+++ b/lib/jitterbug.pm
@@ -1,24 +1,20 @@
package jitterbug;
-#BEGIN {
- use Dancer ':syntax';
- use jitterbug::Plugin::Redis;
-#};
+use Dancer ':syntax';
+use jitterbug::Plugin::Redis;
+use jitterbug::Plugin::Template;
our $VERSION = '0.1';
load_app 'jitterbug::Hook', prefix => '/hook';
load_app 'jitterbug::Project', prefix => '/project';
load_app 'jitterbug::WebService', prefix => '/api';
-
-before_template sub {
- my $tokens = shift;
- $tokens->{uri_base} = request->base;
-};
+load_app 'jitterbug::Task', prefix => '/task';
get '/' => sub {
my @projects = redis->smembers(key_projects);
- template 'index', {projects => \@projects};
+ my @builds = redis->smembers(key_tasks);
+ template 'index', {projects => \@projects, builds => \@builds};
};
true;
diff --git a/lib/jitterbug/Plugin/Template.pm b/lib/jitterbug/Plugin/Template.pm
new file mode 100644
index 0000000..d42d70e
--- /dev/null
+++ b/lib/jitterbug/Plugin/Template.pm
@@ -0,0 +1,17 @@
+package jitterbug::Plugin::Template;
+
+use Dancer ':syntax';
+use Dancer::Plugin;
+
+add_hook(
+ 'before_template',
+ sub {
+ my $tokens = shift;
+ $tokens->{uri_base} = request->base;
+ print "on a " . $tokens->{uri_base} . "\n";
+ }
+);
+
+register_plugin;
+
+1;
diff --git a/lib/jitterbug/Project.pm b/lib/jitterbug/Project.pm
index b330635..be62921 100644
--- a/lib/jitterbug/Project.pm
+++ b/lib/jitterbug/Project.pm
@@ -2,6 +2,7 @@ package jitterbug::Project;
use Dancer ':syntax';
use jitterbug::Plugin::Redis;
+use jitterbug::Plugin::Template;
use DateTime;
use XML::Feed;
@@ -42,9 +43,15 @@ get '/:project/feed' => sub {
foreach my $version (keys %{$desc->{version}}) {
my $entry = XML::Feed::Entry->new();
- $entry->title("build for ".$desc->{commit}.' on '.$version);
- $entry->summary("Result: ".$desc->{version}->{$version});
+ $entry->link( request->base
+ . 'api/build/'
+ . $project . '/'
+ . $desc->{commit} . '/'
+ .$version );
+ $entry->title( "build for " . $desc->{commit} . ' on ' . $version );
+ $entry->summary( "Result: " . $desc->{version}->{$version} );
$feed->add_entry($entry);
+
}
}
diff --git a/lib/jitterbug/Task.pm b/lib/jitterbug/Task.pm
new file mode 100644
index 0000000..bef99bc
--- /dev/null
+++ b/lib/jitterbug/Task.pm
@@ -0,0 +1,19 @@
+package jitterbug::Task;
+
+use Dancer ':syntax';
+use jitterbug::Plugin::Redis;
+use jitterbug::Plugin::Template;
+
+get '/:task_id' => sub {
+ my $task_id = params->{task_id};
+
+ my $task = redis->get($task_id);
+
+ if (!$task) {
+ render_error("task doesn't exists", 404);
+ }
+
+ template 'task/index', {task => from_json($task)};
+};
+
+1;
diff --git a/lib/jitterbug/WebService.pm b/lib/jitterbug/WebService.pm
index 62f55c0..c8be8fd 100644
--- a/lib/jitterbug/WebService.pm
+++ b/lib/jitterbug/WebService.pm
@@ -21,11 +21,18 @@ get '/build/:project/:commit/:version' => sub {
open my $fh, '<', $file;
my @content = <$fh>;
close $fh;
- {
- commit => $commit,
- version => $version,
- content => join( '', @content ),
- };
+
+ if ( request->accept =~ m!application/json! ) {
+ return {
+ commit => $commit,
+ version => $version,
+ content => join( '', @content ),
+ };
+ }
+ else {
+ content_type 'text/plain';
+ return join( '', @content );
+ }
}
};
diff --git a/public/css/style.css b/public/css/style.css
index b4ae038..d035f0e 100644
--- a/public/css/style.css
+++ b/public/css/style.css
@@ -32,3 +32,24 @@ pre {
font-family: \"lucida console\",\"monaco\",\"andale mono\",\"bitstream vera sans mono\",\"consolas\",monospace;
}
+.commits{
+ border:1px solid #bedce7;
+ margin-top:.5em;
+ padding:0 .5em .5em .5em;
+ background:#eaf2f5;
+ overflow:hidden;
+}
+
+#display_test_result {
+ background: black;
+ color: white;
+}
+
+.commits .description {
+ float: left;
+}
+
+.commits .git {
+ float: right;
+}
+
diff --git a/views/index.tt b/views/index.tt
index 7b44ac5..6a79821 100644
--- a/views/index.tt
+++ b/views/index.tt
@@ -1,4 +1,6 @@
-<h2>Projects</h2>
+<h2>Dashboard</h2>
+
+<h3>Projects</h3>
<ul>
: for $projects -> $project {
@@ -6,3 +8,10 @@
: }
</ul>
+<h3>Builds pending</h3>
+
+<ul>
+ : for $builds -> $build {
+ <li><a href="<: $uri_base :>task/<: $build :>"><: $build :></a></li>
+ : }
+</ul>
diff --git a/views/layouts/main.tt b/views/layouts/main.tt
index bad65ab..9b97dbf 100644
--- a/views/layouts/main.tt
+++ b/views/layouts/main.tt
@@ -8,15 +8,11 @@
<script type="text/javascript">
$(document).ready(function() {
$('.commits a').click(function() {
- var url = '/api/build/'
- + $(this).parent("li").parent("ul").attr('id')
- + '/'
- + $(this).parent("li").attr('id')
- + '/'
- + $(this).text().toLowerCase();
+ var url = $(this).attr("href");
$.getJSON(url, null, function(data) {
- $("#display_test_result").html("<pre>" + data.content + "<pre>")
+ $("#display_test_result").html("<pre>" + data.content + "<pre>");
});
+ return false;
})})
</script>
</head>
diff --git a/views/project/index.tt b/views/project/index.tt
index 813907b..7f1aeb6 100644
--- a/views/project/index.tt
+++ b/views/project/index.tt
@@ -1,24 +1,34 @@
<h2><: $project :></h2>
-<ul>
- <li>url: <: $url :></li>
- <li>description: <: $description :></li>
- <li><a href="<: $base_uri :>/project/<: $project :>/feed">feed</a></li>
-</ul>
+<small>"<: $description :>"</small> &mdash; <a href="<: $url :>">view more</a>.
<h3>Builds</h3>
-<ul class="commits" id="<: $project :>">
- :for $builds -> $build {
- <li id="<: $build.commit :>">
- Commit <: $build.commit :> (<: $build.date.ymd :>)<br />
- author: <: $build.author.name :> - <a href="<: $build.compare :>">compare</a><br />
- :for $build.version.keys() -> $version {
- <a href="#"><: $version :></a>=<: $build.version[$version] :>
- :}
- </li>
- :}
-</ul>
+<a href="<: $base_uri :>/project/<: $project :>/feed">feed</a>
+
+<div class="commits">
+:for $builds -> $build {
+ <div class="commit" id="<: $build.commit :>">
+ <div class="description">
+ <div class="message"><pre><: $build.message :></pre></div>
+ <div class="name"><: $build.author.name :></div>
+ <div class="date"><: $build.timestamp :></div>
+ <div class="builds">
+ :for $build.version.keys() -> $version {
+ <a href="<: $uri_base :>/api/build/<: $project :>/<: $build.commit :>/<: $version :>"><: $version :></a> <: $build.version[$version] :>
+ :}
+ </div>
+ </div>
+ <div class="git">
+ <ul>
+ <li>commit&nbsp;&nbsp;<a href="<: $build.url :>"><: $build.commit :></a></li>
+ <li><a href="<: $build.compare :>">compare</a></li>
+ </ul>
+ </div>
+ </div>
+:}
+</div>
<div id="display_test_result">
</div>
+
diff --git a/views/task/index.tt b/views/task/index.tt
new file mode 100644
index 0000000..bb08935
--- /dev/null
+++ b/views/task/index.tt
@@ -0,0 +1 @@
+<h2>Task </h2>