------------------------------------------------------------
revno: 6612
committer: Barry Warsaw <[EMAIL PROTECTED]>
branch nick: bin-fixes
timestamp: Sat 2008-03-22 22:01:31 -0400
message:
  Rename rmlist to remove_list, and let it take multiple -l command line
  arguments.
  
  Added a MultipleMailingListOptions subclass.
renamed:
  mailman/bin/rmlist.py => mailman/bin/remove_list.py
modified:
  mailman/app/lifecycle.py
  mailman/bin/__init__.py
  mailman/bin/create_list.py
  mailman/options.py
  mailman/bin/remove_list.py

=== modified file 'mailman/app/lifecycle.py'
--- a/mailman/app/lifecycle.py  2008-02-27 06:26:18 +0000
+++ b/mailman/app/lifecycle.py  2008-03-23 02:01:31 +0000
@@ -114,4 +114,4 @@
         elif os.path.isfile(target):
             os.unlink(target)
         else:
-            log.error('Could not delete list artifact: $target')
+            log.error('Could not delete list artifact: %s', target)

=== modified file 'mailman/bin/__init__.py'
--- a/mailman/bin/__init__.py   2008-03-23 01:43:38 +0000
+++ b/mailman/bin/__init__.py   2008-03-23 02:01:31 +0000
@@ -48,8 +48,8 @@
     'owner',
     'post',
     'qrunner',
+    'remove_list',
     'request',
-    'rmlist',
     'senddigests',
     'set_members',
     'show_config',

=== modified file 'mailman/bin/create_list.py'
--- a/mailman/bin/create_list.py        2008-03-23 01:43:38 +0000
+++ b/mailman/bin/create_list.py        2008-03-23 02:01:31 +0000
@@ -35,7 +35,7 @@
 
 class ScriptOptions(SingleMailingListOptions):
     usage=_("""\
-%prog [options] fqdn_listname
+%prog [options]
 
 Create a new mailing list.
 

=== renamed file 'mailman/bin/rmlist.py' => 'mailman/bin/remove_list.py'
--- a/mailman/bin/rmlist.py     2008-02-27 06:26:18 +0000
+++ b/mailman/bin/remove_list.py        2008-03-23 02:01:31 +0000
@@ -18,63 +18,68 @@
 import os
 import sys
 import shutil
-import optparse
 
 from mailman import Errors
 from mailman import Utils
-from mailman import Version
 from mailman.app.lifecycle import remove_list
 from mailman.configuration import config
 from mailman.i18n import _
-from mailman.initialize import initialize
+from mailman.options import MultipleMailingListOptions
 
 
 
-def parseargs():
-    parser = optparse.OptionParser(version=Version.MAILMAN_VERSION,
-                                   usage=_("""\
-%prog [options] listname
+class ScriptOptions(MultipleMailingListOptions):
+    usage=_("""\
+%prog [options]
 
 Remove the components of a mailing list with impunity - beware!
 
 This removes (almost) all traces of a mailing list.  By default, the lists
 archives are not removed, which is very handy for retiring old lists.
-"""))
-    parser.add_option('-a', '--archives',
-                      default=False, action='store_true', help=_("""\
+""")
+
+    def add_options(self):
+        super(ScriptOptions, self).add_options()
+        self.parser.add_option(
+            '-a', '--archives',
+            default=False, action='store_true',
+            help=_("""\
 Remove the list's archives too, or if the list has already been deleted,
 remove any residual archives."""))
-    parser.add_option('-C', '--config',
-                      help=_('Alternative configuration file to use'))
-    opts, args = parser.parse_args()
-    if not args:
-        parser.error(_('Missing listname'))
-    if len(args) > 1:
-        parser.error(_('Unexpected arguments'))
-    return parser, opts, args
+        self.parser.add_option(
+            '-q', '--quiet',
+            default=False, action='store_true',
+            help=_('Suppress status messages'))
+
+    def sanity_check(self):
+        if len(self.options.listnames) == 0:
+            self.parser.error(_('Nothing to do'))
+        if len(self.arguments) > 0:
+            self.parser.error(_('Unexpected arguments'))
 
 
 
 def main():
-    parser, opts, args = parseargs()
-    initialize(opts.config)
+    options = ScriptOptions()
+    options.initialize()
 
-    fqdn_listname = args[0].lower()
-    mlist = config.db.list_manager.get(fqdn_listname)
-    if mlist is None:
-        if not opts.archives:
-            print >> sys.stderr, _(
-                'No such list (or list already deleted): $fqdn_listname')
-            sys.exit(1)
-        else:
-            print _("""\
+    for fqdn_listname in options.options.listnames:
+        if not options.options.quiet:
+            print _('Removing list: $fqdn_listname')
+        mlist = config.db.list_manager.get(fqdn_listname)
+        if mlist is None:
+            if options.options.archives:
+                print _("""\
 No such list: ${fqdn_listname}.  Removing its residual archives.""")
-
-    if not opts.archives:
-        print _('Not removing archives.  Reinvoke with -a to remove them.')
-
-    remove_list(fqdn_listname, mlist, opts.archives)
-    config.db.flush()
+            else:
+                print >> sys.stderr, _(
+                    'No such list (or list already deleted): $fqdn_listname')
+
+        if not options.options.archives:
+            print _('Not removing archives.  Reinvoke with -a to remove them.')
+
+        remove_list(fqdn_listname, mlist, options.options.archives)
+        config.db.commit()
 
 
 

=== modified file 'mailman/options.py'
--- a/mailman/options.py        2008-03-23 01:43:38 +0000
+++ b/mailman/options.py        2008-03-23 02:01:31 +0000
@@ -111,3 +111,15 @@
             '-l', '--listname',
             type='unicode', help=_('The mailing list name'))
         super(SingleMailingListOptions, self).add_options()
+
+
+class MultipleMailingListOptions(Options):
+    """A helper for specifying multiple mailing lists on the command line."""
+
+    def add_options(self):
+        self.parser.add_option(
+            '-l', '--listname',
+            default=[], action='append', dest='listnames', type='unicode',
+            help=("""\
+A mailing list name.  It is okay to have multiple --listname options."""))
+



--
Primary development focus
https://code.launchpad.net/~mailman-coders/mailman/3.0

You are receiving this branch notification because you are subscribed to it.
_______________________________________________
Mailman-checkins mailing list
[email protected]
Unsubscribe: 
http://mail.python.org/mailman/options/mailman-checkins/archive%40jab.org

Reply via email to