[PATCH 4/4] mailman: Sync setup script from configs/ to module

Todd Zullinger tmz at pobox.com
Mon Jan 11 01:38:15 UTC 2010


---
 modules/mailman/files/fedora-mailing-list-setup |   63 +++++++++++++++-------
 1 files changed, 43 insertions(+), 20 deletions(-)

diff --git a/modules/mailman/files/fedora-mailing-list-setup b/modules/mailman/files/fedora-mailing-list-setup
index bf10b81..134c9e6 100755
--- a/modules/mailman/files/fedora-mailing-list-setup
+++ b/modules/mailman/files/fedora-mailing-list-setup
@@ -19,18 +19,19 @@
 """Create a new mailing list according to Fedora's initial list creation guidelines."""
 
 import sys
-
-sys.path.append('/usr/lib/mailman')
-sys.path.append('/usr/lib/mailman/bin')
-
 import pwd
 import grp
 import os
-import getpass
-import getopt
+import optparse
 import sha
 
-import paths
+try:
+    sys.path.append('/usr/lib/mailman/bin')
+    import paths
+except ImportError:
+    print >> sys.stderr, 'Failed to import mailman paths module.'
+    sys.exit(1)
+
 from Mailman import mm_cfg
 from Mailman import MailList
 from Mailman import Utils
@@ -137,9 +138,13 @@ def switch_user():
     os.setgid(mailman_gid)
     os.setuid(mailman_uid)
 
-def ask_questions(listType):
+def ask_questions(listType, *args):
+    args = list(args)
     if listType == "hosted":
-        project = raw_input('Project name: ').strip().lower()
+        if len(args) > 0:
+            project = args.pop(0)
+        else:
+            project = raw_input('Project name: ').strip().lower()
         found = False
         for vcs in ['cvs', 'git', 'hg', 'mtn', 'svn']:
             try:
@@ -152,7 +157,10 @@ def ask_questions(listType):
         if not found:
             usage(1, 'Can\'t find a project named "%s"!' % project)
 
-    listname = raw_input('List name: ').strip().lower()
+    if len(args) > 0:
+        listname = args[0]
+    else:
+        listname = raw_input('List name: ').strip().lower()
 
     if listType == "hosted":
         if listname != project and not listname.startswith(project + '-'):
@@ -164,7 +172,10 @@ def ask_questions(listType):
     if Utils.list_exists(listname):
         usage(1, 'List already exists: "%s"!' % listname)
 
-    admin = raw_input('Admin username: ').strip().lower()
+    if len(args) > 1:
+        admin = args[1]
+    else:
+        admin = raw_input('Admin username: ').strip().lower()
 
     try:
         pw = pwd.getpwnam(admin)
@@ -188,13 +199,25 @@ def ask_questions(listType):
 
     return listname, admin
 
-# work out where we are running fedorahosted lists require extra restrictions
-hostname = os.uname()[1]
-if hostname.startswith("hosted"):
-   listType = "hosted"
-else:
-   listType = "other"
+def main():
+    # Check where we are.  Lists on fedorahosted.org have extra restrictions.
+    hostname = os.uname()[1]
+    if hostname.startswith("hosted"):
+        listType = "hosted"
+        usage = '%prog [project [listname [listadmin]]]'
+    else:
+        listType = "other"
+        usage = '%prog [listname [listadmin]]'
+
+    parser = optparse.OptionParser(usage=usage)
+    opts, args = parser.parse_args()
 
-listname, admin = ask_questions(listType)
-switch_user()
-create_list(listname, '%s at fedoraproject.org' % admin)
+    listname, admin = ask_questions(listType, *args)
+    switch_user()
+    create_list(listname, '%s at fedoraproject.org' % admin)
+
+if __name__ == '__main__':
+    try:
+        main()
+    except KeyboardInterrupt:
+        sys.exit(1)
-- 
1.6.6



More information about the infrastructure mailing list