commit-womb
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-womb] gnumaint gnumaint


From: Jose E. Marchesi
Subject: [Commit-womb] gnumaint gnumaint
Date: Wed, 30 Aug 2006 19:20:31 +0000

CVSROOT:        /cvsroot/womb
Module name:    gnumaint
Changes by:     Jose E. Marchesi <jemarch>      06/08/30 19:20:31

Modified files:
        .              : gnumaint 

Log message:
        sendemail operation for maintainer activity test added

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnumaint/gnumaint?cvsroot=womb&r1=1.2&r2=1.3

Patches:
Index: gnumaint
===================================================================
RCS file: /cvsroot/womb/gnumaint/gnumaint,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- gnumaint    30 Aug 2006 17:39:45 -0000      1.2
+++ gnumaint    30 Aug 2006 19:20:31 -0000      1.3
@@ -8,9 +8,13 @@
 ## Global variables (configuration section)
 ##
 
-set maintainers_file "/home/jemarch/gnu/src/gnumaint/maintainers.new"
-set mail_test_for_activity 
"/home/jemarch/gnu/src/gnumaint/mailtestforactivity.txt"
-
+variable maintainers_file "/home/jemarch/gnu/src/gnumaint/maintainers.new"
+variable mail_activity    
"/home/jemarch/gnu/src/gnumaint/mailtestforactivity.txt"
+variable formail          "/usr/bin/formail"
+variable sendmail         "/usr/bin/sendmail"
+variable logfile          "/tmp/gnumaint.log"
+variable email_originator "address@hidden"
+variable email_reply      "address@hidden"
 
 ### Please, dont touch the code behind this line unless you really know
 ### what you are doing
@@ -21,6 +25,15 @@
 #
 set maintainersdb {}
 
+proc add_to_log {text} {
+
+    variable logfile
+
+    set flog [open $logfile a]
+    puts $flog "[exec date]: $text"
+    close $flog
+}
+
 proc do_help_usage {} {
     
     puts {Usage: gnumaint OPERATION [ARG]...}
@@ -252,6 +265,23 @@
     puts {}
 }
 
+proc do_help_sendemail {} {
+
+    variable mail_activity
+
+    puts "gnumaint sendemail - send several kind of emails to maintainers"
+    puts "Usage:"
+    puts {}
+    puts "  gnumaint sendemail EMAIL-TYPE"
+    puts {}
+    puts "Allowed EMAIL-TYPEs are:"
+    puts {}
+    puts "   activity - send an email to maintainers requesting a reply to 
test activity"
+    puts "     this command uses the template located in "
+    puts "     $mail_activity"
+    puts {}
+}
+
 proc do_help_operation {topic} {
 
     switch $topic {
@@ -279,6 +309,92 @@
 
 }
 
+proc do_sendemail_operation {opargs} {
+
+    if {[llength $opargs] == 1} then {
+
+       do_help_sendemail
+       exit 1
+    }
+
+    switch [lindex $opargs 1] {
+
+       activity {
+           
+           do_sendemail_operation_activity
+       }
+       default {
+
+           do_help_sendemail
+           exit 1
+
+       }
+    }
+}
+
+proc fill-template {translation_list email_template} {
+
+    foreach trn $translation_list {
+       
+       regsub -all -- [lindex $trn 0] $email_template [lindex $trn 1] 
email_template
+    }
+
+    return $email_template
+}
+
+proc do_sendemail_operation_activity {} {
+    
+    global maintainersdb
+    global formail
+    global sendmail
+    global mail_activity
+    global email_originator
+    global email_reply
+
+    ;# Read the email template
+    set email_contents_file [open $mail_activity r]
+    gets $email_contents_file subject_template
+    set email_template [read -nonewline $email_contents_file]
+    close $email_contents_file
+
+    foreach pkg $maintainersdb {
+
+       set pkg_name [lindex $pkg 0]
+
+       foreach maintainer [lindex $pkg 1] {
+
+           set maintainer_name [lindex $maintainer 0]
+           set maintainer_email [lindex $maintainer 1]
+
+           ;# Fill the template with this package/maintainer pair info
+           set translation_list [list \
+                                     [list %PACKAGE_NAME $pkg_name] \
+                                     [list %MAINTAINER_NAME $maintainer_name] \
+                                     [list %MAINTAINER_EMAIL 
$maintainer_email]]
+           set email_contents [fill-template $translation_list $email_template]
+           set subject_contents [fill-template $translation_list 
$subject_template]
+           
+           ;# Build the email with formail
+           set out_email_contents \
+               [exec $formail -i "Reply-To: $email_reply" -i \
+                    "From: $email_originator" \
+                    -i "To: $maintainer_email" \
+                    -i "Subject: $subject_contents" << $email_contents]
+           set out_email_contents \
+               [exec $formail -k -X Date -X Reply-to: -X From: -X Subject: -X 
To: << $out_email_contents]
+
+           ;# Send the email using sendmail
+           ;#exec $sendmail -t -bm << $out_email_contents
+           puts "####################################"
+           puts "- Sending email to $maintainer_name for $pkg_name:"
+           puts $out_email_contents
+
+           ;# Append an entry into the log file
+           add_to_log "sent activity control email to $maintainer_email for 
package $pkg_name" 
+       }
+    }
+}
+
 proc do_list_operation {opargs} {
 
     if {[llength $opargs] == 1} then {
@@ -443,7 +559,11 @@
 
            do_list_operation $argv
        }
+       sendemail {
+
+           do_sendemail_operation $argv
        
+       }
        default {
 
            do_help_usage




reply via email to

[Prev in Thread] Current Thread [Next in Thread]