about summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/jitterbug/Builder.pm4
-rw-r--r--lib/jitterbug/Emailer.pm43
2 files changed, 45 insertions, 2 deletions
diff --git a/lib/jitterbug/Builder.pm b/lib/jitterbug/Builder.pm
index 376b98c..4a8451f 100644
--- a/lib/jitterbug/Builder.pm
+++ b/lib/jitterbug/Builder.pm
@@ -141,10 +141,10 @@ sub run_task {
             my $output           = $lines;
             my $sha              = $desc->{'id'};
             my $on_failure       = $conf->{'jitterbug'}{'build_process'}{'on_failure'};
-            my $on_failure_email = $conf->{'jitterbug'}{'build_process'}{'on_failure_email'};
+            my $on_failure_cc_email = $conf->{'jitterbug'}{'build_process'}{'on_failure_email'};
 
             $message  =~ s/'/\\'/g; $commiter =~ s/'/\\'/g; $output =~ s/'/\\'/g;
-            my $failure_cmd = sprintf("%s '%s' %s '%s' '%s' %s %s", $on_failure, $commiter, $task->project->name, $message, $output, $sha, $on_failure_email);
+            my $failure_cmd = sprintf("%s '%s' %s '%s' '%s' %s %s", $on_failure, $commiter, $task->project->name, $message, $output, $sha, $on_failure_cc_email);
             debug("Running failure command: $failure_cmd");
             `$failure_cmd`;
         }
diff --git a/lib/jitterbug/Emailer.pm b/lib/jitterbug/Emailer.pm
new file mode 100644
index 0000000..97ec640
--- /dev/null
+++ b/lib/jitterbug/Emailer.pm
@@ -0,0 +1,43 @@
+package jitterbug::Emailer;
+
+use strict;
+use warnings;
+use Email::Stuff;
+
+sub new {
+    my $self = bless {} => shift;
+    my ($conf,$task,$tap_output) = @_;
+    # smelly
+    $self->{'conf'} = $conf;
+    $self->{'task'} = $task;
+    $self->{'tap_output'} = $tap_output;
+
+    return $self;
+}
+
+sub run {
+    my $self = shift;
+    my $buildconf = $conf->{'jitterbug'}{'build_process'};
+    my $project   = $task->project->name;
+
+    my $sha1 = $task->commit->sha256;
+    my $body = <<BODY;
+$tap_output
+BODY
+
+    Email::Stuff->from($buildconf->{'on_failure_from_email')
+                ->to($buildconf->{'on_failure_to_email'})
+                ->cc($buildconf->{'on_failure_cc_email'})
+                ->text_body($body)
+                ->subject(
+                    $buildconf->{'on_failure_subject_prefix'} . "$project @ $sha1"
+                  )
+                # Should we attach a build log for convenience?
+                # ->attach(io('dead_bunbun_faked.gif')->all,
+                #    filename => 'dead_bunbun_proof.gif')
+                ->send;
+
+    return $self;
+}
+
+1;