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: Thu, 14 Dec 2006 22:14:26 +0000

CVSROOT:        /cvsroot/womb
Module name:    gnumaint
Changes by:     Jose E. Marchesi <jemarch>      06/12/14 22:14:26

Modified files:
        .              : gnumaint 

Log message:
        maintainers DB structure changed
        more listing options
        %PACKAGE_ID is now %PACKAGE_LIST
        one email is sent to each maintainer

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

Patches:
Index: gnumaint
===================================================================
RCS file: /cvsroot/womb/gnumaint/gnumaint,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- gnumaint    20 Sep 2006 16:01:50 -0000      1.6
+++ gnumaint    14 Dec 2006 22:14:26 -0000      1.7
@@ -15,13 +15,15 @@
 variable logfile          "/tmp/gnumaint.log"
 variable email_originator "address@hidden"
 variable email_reply      "address@hidden"
+variable lockfile_command "/usr/bin/lockfile"
+variable activity_account_file "/tmp/mail-activity"
 
 ### Please, dont touch the code behind this line unless you really know
 ### what you are doing
 
 # Maintainers database structure:
 #
-#   { {PACKAGE-NAME {{MAINTAINER-NAME MAINTAINER-EMAIL MAINTAINER-NOTES} ...}} 
...}
+#   { {MAINTAINER-NAME MAINTAINER-EMAIL MAINTAINER-NOTES {PACKAGE1 PACKAGE2 
...}} ...}
 #
 set maintainersdb {}
 
@@ -88,6 +90,7 @@
        gets $finput line
        incr lineno
     }
+
     while {(![eof $finput]) && ([string index $line 0] != "\f")} {
        
        # Break if EOF or ^L
@@ -108,6 +111,7 @@
        set maintainer_name {}
        set maintainer_email {}
        set maintainer_notes {}
+        set maintainer_packages {}
 
        if {[string match "name:*" $line]} then {
 
@@ -121,7 +125,7 @@
 
        gets $finput line
        incr lineno
-       set current_package {}
+        
        while {$line != ""} {
 
            set entry_label [get_entry_label $line]
@@ -140,29 +144,8 @@
                "package" {
 
                    set pkgname [get_entry_value package $line]
+                    lappend maintainer_packages $pkgname
 
-                   set current_package $pkgname
-                   
-                   ;# Get current package info, if any
-                   if {[info exist package_info($pkgname)]} then {
-
-                       set pkginfo $package_info($pkgname)
-
-                   } else {
-
-                       ;# Make a new package entry
-                       set pkginfo [list $pkgname [list]]
-                   }
-
-                   ;# Append the info of this maintainer on the
-                   ;# package entry
-                   set pkgmaintainers [lindex $pkginfo 1]
-                   lappend pkgmaintainers [list \
-                                               $maintainer_name \
-                                               $maintainer_email \
-                                               $maintainer_notes]
-                   lset pkginfo 1 $pkgmaintainers
-                   set package_info($pkgname) $pkginfo
                }
            }
 
@@ -170,22 +153,19 @@
            incr lineno
        }
 
+        ;# Add this maintainer entry into maintainersdb
+        lappend maintainersdb [list \
+                                   $maintainer_name \
+                                   $maintainer_email \
+                                   $maintainer_notes \
+                                   $maintainer_packages]
+
        ;# Read the next line
        gets $finput line
        incr lineno
     }
-
-    
-    ;# Build the maintainersdb structure
-    if {[info exist package_info]} then {
-       set packages_name_list [lsort [array names package_info]]
-       foreach package $packages_name_list {
-           lappend maintainersdb $package_info($package)
-       }
-    }
 }
 
-
 proc build_maintainers_db {} {
     
     global maintainers_file
@@ -251,17 +231,23 @@
     puts {}
     puts "  packages \[ARG\] - list the names of GNU packages"
     puts "     all (or no argument)"
-    puts "       list all the packages"
+    puts "       list all packages"
     puts "     maintained"
-    puts "       list all the maintained packages"
+    puts "       list all maintained packages"
     puts "     unmaintained"
-    puts "       list all the unmaintained packages"
+    puts "       list all unmaintained packages"
+    puts "     maintainer MAINTAINER"
+    puts "       list all packages maintained by MAINTAINER (search is done in 
both names and emails)"
     puts "  maintainers \[ARG\] - list information about GNU maintainers"
     puts "     all (or no argument)"
-    puts "       list all the maintainers"
-    puts "     PACKAGE-NAME-GLOB"
-    puts "       list the maintainers of PACKAGE-NAME, that is a GLOB 
expression (such as \"*emacs*\""
+    puts "       list all maintainers"
+    puts "     package PACKAGE-NAME"
+    puts "       list the maintainers of PACKAGE-NAME (search is done for 
\"*PACKAGE-NAME*\")"
     puts "       note that this search is case-insensitive"
+    puts "     OTHER"
+    puts "       search for GLOB in maintainers info"
+
+
     puts {}
 }
 
@@ -343,7 +329,7 @@
            ;# Activity response email
            ;#
 
-           ;# Search for the package name
+           ;# Search for packages names on the control line
            set pkg_name {}
            set package_name_regexp ".*\\\$pkgname:(\[^$\]*)\\\$.*"
            regexp $package_name_regexp $body match pkg_name
@@ -370,7 +356,7 @@
                                    "received activity control email reply from 
$maintainer_email for package $pkg_name" 
 
                                ;# Annotate this reply into the activity file
-                               
+                               ;# activity_annotate $pkg_name $maintainer_name
                            }
 
                            break
@@ -410,7 +396,7 @@
     }
 }
 
-proc fill-template {translation_list email_template} {
+proc fill_template {translation_list email_template} {
 
     foreach trn $translation_list {
        
@@ -435,28 +421,49 @@
     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] {
+    foreach maintainer $maintainersdb {
 
            set maintainer_name [lindex $maintainer 0]
            set maintainer_email [lindex $maintainer 1]
+        set maintainer_pkgs [lindex $maintainer 3]
+
+        ;# Skip Unmaintained
+        if {$maintainer_name == "Unmaintained"} then {
+            continue
+        }
+
+        ;# Skip maintainers with no packages
+        if {[llength $maintainer_pkgs] == 0} then {
+            continue
+        }
+
+        ;# Build the packages names list
+        set pkg_list_str {}
+        foreach pkg $maintainer_pkgs {
+            append pkg_list_str "- ${pkg}\n"
+        }
 
            ;# Fill the template with this package/maintainer pair info
            set translation_list [list \
-                                     [list %PACKAGE_NAME $pkg_name] \
+                                  [list %PACKAGE_LIST $pkg_list_str] \
                                      [list %MAINTAINER_NAME $maintainer_name] \
                                      [list %MAINTAINER_EMAIL 
$maintainer_email]]
-           set email_contents [fill-template $translation_list $email_template]
+        set email_contents [fill_template $translation_list $email_template]
 
            ;# Append the control line
-           set control_line \
-               "\n\n-- Please make sure to include the following line in the 
body of your reply --\n    \$package:$pkg_name\$\n"
+        set note_line \
+            "\n\n-- Please make sure to include the following line in the body 
on your reply --\n"
+
+        set control_line {}
+        foreach pkg $maintainer_pkgs {
+            append control_line "\$package:$pkg\$ "
+        }
+        append control_line "\n"
+
+        append email_contents $note_line
            append email_contents $control_line
 
-           set subject_contents [fill-template $translation_list 
$subject_template]
+        set subject_contents [fill_template $translation_list 
$subject_template]
            
            ;# Build the email with formail
            set out_email_contents \
@@ -470,14 +477,13 @@
                [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
+        ;#exec $sendmail -t -bm << $out_email_contents
            ;#puts "####################################"
-           ;#puts "- Sending email to $maintainer_name for $pkg_name:"
-           ;#puts $out_email_contents
+        puts "- Sending email to $maintainer_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" 
-       }
+        add_to_log "sent activity control email to $maintainer_email for 
packages $pkg_list_str" 
     }
 }
 
@@ -508,6 +514,9 @@
                    unmaintained {
                        do_list_packages unmaintained
                    }
+                    maintainer {
+                        do_list_packages_maintainer [lindex $opargs 3]
+                    }
                    default {
                        do_help_list
                    }
@@ -519,15 +528,20 @@
            if {[llength $opargs] == 2} then {
                
                do_list_maintainers all
-           }
+
+           } else {
            switch [lindex $opargs 2] {
                
                all {
                    do_list_maintainers all
                }
+                    package {
+                        do_list_package_maintainers [lindex $opargs 3]
+                    }
                default {
 
-                   do_list_maintainers_package [lindex $opargs 2]
+                        do_list_maintainers [lindex $opargs 2]
+                    }
                }
            }
        }
@@ -543,78 +557,118 @@
 
     variable maintainersdb
 
-    set listed_maintainer {}
-
-    foreach pkg $maintainersdb {
+    foreach maintainer $maintainersdb {
 
-       foreach maintainer [lindex $pkg 1] {
+        set maintainer_name [lindex $maintainer 0]
+        set maintainer_email [lindex $maintainer 1]
+        set maintainer_notes [lindex $maintainer 2]
 
            if {($which == "all") ||
-               ([lsearch -exact $listed_maintainer $which] == -1)} then {
+            [string match -nocase "*${which}*" $maintainer_name] ||
+            [string match -nocase "*${which}*" $maintainer_email]} {
+            
                ;# List this maintainer
-               puts -nonewline [lindex $maintainer 0]
-               if {[lindex $maintainer 1] != ""} then {
+            puts -nonewline $maintainer_name
+            if {$maintainer_email != ""} then {
                    puts -nonewline " "
-                   puts -nonewline "<[lindex $maintainer 1]>"
+                puts -nonewline "<$maintainer_email>"
                }
-               foreach note [lindex $maintainer 2] {
+            foreach note $maintainer_notes {
                    puts -nonewline " "
                    puts -nonewline "($note)"
                }
                puts {}
-
-               lappend listed_maintainer [lindex $maintainer 0]
-           }
        }
     }
 }
 
-proc do_list_maintainers_package {package_name} {
+proc do_list_package_maintainers {package_name} {
 
     variable maintainersdb
 
-    foreach pkg $maintainersdb {
+    foreach maintainer $maintainersdb {
+       
+        set maintainer_name [lindex $maintainer 0]
+        set maintainer_email [lindex $maintainer 1]
+        set maintainer_notes [lindex $maintainer 2]
+        set maintainer_pkgs [lindex $maintainer 3]
        
-       if {[string match -nocase $package_name [lindex $pkg 0]]} then {      
+        set to_list false
+        foreach pkg $maintainer_pkgs {
            
-           # List the maintainers for this package                           
-           foreach maintainer [lindex $pkg 1] {                              
+            if {[string match -nocase "*${package_name}*" $pkg]} then {
+                set to_list true
+                break
+            }
+        }
+
+        if {$to_list} then {
                
                ;# List this maintainer
-               puts -nonewline [lindex $maintainer 0]
-               if {[lindex $maintainer 1] != ""} then {
+            puts -nonewline $maintainer_name
+            if {$maintainer_email != ""} then {
                    puts -nonewline " "
                    puts -nonewline "<[lindex $maintainer 1]>"
                }
-               foreach note [lindex $maintainer 2] {
+            foreach note $maintainer_notes {
                    puts -nonewline " "
                    puts -nonewline "($note)"
                }
                puts {}
            }                                                                 
        }                                                                     
+}
+
+proc do_list_packages_maintainer {maintainer_info} {
+
+    variable maintainersdb
+
+    foreach maintainer $maintainersdb {
+
+        set maintainer_name [lindex $maintainer 0]
+        set maintainer_email [lindex $maintainer 1]
+        set maintainer_pkgs [lindex $maintainer 3]
+
+        if {[string match -nocase "*${maintainer_info}*" $maintainer_name] ||
+            [string match -nocase "*${maintainer_info}*" $maintainer_email]} 
then {
+
+            foreach pkg $maintainer_pkgs {
+                puts $pkg
+            }
     }
+    }
+
 }
 
 proc do_list_packages {which} {
 
     variable maintainersdb
 
-    foreach pkg $maintainersdb {
+    set pkg_list {}
 
-       set maintainers [lindex $pkg 1]
-       set first_maintainer_name [lindex [lindex $maintainers 0] 0]
+    foreach maintainer $maintainersdb {
+
+        set maintainer_name [lindex $maintainer 0]
+        set maintainer_pkgs [lindex $maintainer 3]
 
        if {(($which == "maintained") && 
-            ($first_maintainer_name == "Unmaintained")) ||
+            ($maintainer_name == "Unmaintained")) ||
            (($which == "unmaintained") &&
-            ($first_maintainer_name != "Unmaintained"))} then {
+            ($maintainer_name != "Unmaintained"))} then {
 
            continue
        }
 
-       puts [lindex $pkg 0]
+        foreach pkg $maintainer_pkgs {
+            if {[lsearch -exact $pkg_list $pkg] == -1} then {
+                lappend pkg_list $pkg
+            }
+        }
+    }
+
+    foreach pkg $pkg_list {
 
+        puts $pkg
     }
 }
 




reply via email to

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