[Top][All Lists]
[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
}
}
- [Commit-womb] gnumaint gnumaint,
Jose E. Marchesi <=