Made jira executable
[clearscm.git] / bin / announceEmail.pl
index 073e039..cb6667b 100755 (executable)
@@ -75,9 +75,10 @@ use warnings;
 
 use FindBin;
 use Getopt::Long;
-use Pod::Usage;
 use Mail::IMAPTalk;
 use MIME::Base64;
+use Pod::Usage;
+use Proc::ProcessTable;
 
 use lib "$FindBin::Bin/../lib";
 
@@ -89,6 +90,16 @@ use Utils;
 
 local $0 = "$FindBin::Script " . join ' ', @ARGV;
 
+my $processes = Proc::ProcessTable->new;
+
+for my $process (@{$processes->table}) {
+  if ($process->cmndline eq $0 and $process->pid != $$) { 
+    verbose "$FindBin::Script already running";
+
+    exit 0;
+  } # if
+} # for
+
 my $defaultIMAPServer = 'defaria.com';
 my $IMAP;
 my %unseen;
@@ -252,9 +263,7 @@ sub MonitorMail() {
 
     my $greeting = $greetings[int rand $#greetings];
     my $msg      = "$greeting from $from... $subject";
-       $msg      =~ s/\"/\\"/g;
-
-    my $hour = (localtime)[2];
+    my $hour     = (localtime)[2];
 
     # Only announce if after 6 Am. Note this will announce up until
     # midnight but that's ok. I want midnight to 6 Am as silent time.
@@ -262,9 +271,9 @@ sub MonitorMail() {
     if ($hour >= 7) {
       $log->msg($logmsg);
       $log->dbug("Calling speak");
-      speak $msg;
+      speak $msg, $log;
     } else {
-      $log->msg("$logmsg [silent]");
+      $log->msg("$logmsg [silent nighttime]");
     } # if
 
     $unseen{$_} = 1;
@@ -274,7 +283,7 @@ sub MonitorMail() {
   my $startTime = time;
 
   # Re-establish callback
-  $log->msg("Calling IMAP->idle");
+  $log->dbug("Calling IMAP->idle");
   eval {
     $IMAP->idle(\&MonitorMail, $opts{timeout})
   };