1- #!/usr/bin/env python
1+ #!/usr/bin/env python3
22"""\
33 This script is a wrapper around the mailgw.py script that exists in roundup.
44It runs as service instead of running as a one-time shot.
3434import getpass
3535import logging
3636import imaplib
37- import optparse
37+ import argparse
3838import os
3939import re
4040import time
41+ import sys
4142
4243from roundup .anypy .my_input import my_input
4344
4445logging .basicConfig ()
4546log = logging .getLogger ('roundup.IMAPServer' )
4647
47- version = '0.1.2 '
48+ version = '0.1.3 '
4849
4950class RoundupMailbox :
5051 """This contains all the info about each mailbox.
@@ -301,10 +302,11 @@ def getItems(s):
301302
302303def main ():
303304 """This is what is called if run at the prompt"""
304- parser = optparse . OptionParser (
305- version = ( '%prog ' + version ) ,
306- usage = """usage: %prog [options] (home server)...
305+ parser = argparse . ArgumentParser (
306+ formatter_class = argparse . RawDescriptionHelpFormatter ,
307+ epilog = """
307308
309+ The server takes pairs of home/server.
308310So each entry has a home, and then the server configuration. Home is just
309311a path to the roundup issue tracker. The server is something of the form:
310312
@@ -315,57 +317,63 @@ def main():
315317Without mailbox the INBOX is used.
316318
317319Examples:
318- %prog /home/roundup/trackers/test imaps://[email protected] /test 319- %prog /home/roundup/trackers/test imap.example.com \
320- /home/roundup/trackers/test2 imap.example.com/test2
321- """
320+ %( prog)s /home/roundup/trackers/test imaps://[email protected] /test 321+ %( prog)s /home/roundup/trackers/test imap.example.com \ \
322+ /home/roundup/trackers/test2 imap.example.com/test2
323+ """ % dict ( prog = sys . argv [ 0 ])
322324 )
323- parser .add_option ('-d' , '--delay' , dest = 'delay' , type = 'float' ,
325+ parser .add_argument ('args' , nargs = '*' )
326+ parser .add_argument ('-d' , '--delay' , dest = 'delay' , type = float ,
324327 metavar = '<sec>' , default = 5 ,
325328 help = "Set the delay between checks in minutes. (default 5)"
326329 )
327- parser .add_option ('-p' , '--pid-file' , dest = 'pidfile' ,
330+ parser .add_argument ('-p' , '--pid-file' , dest = 'pidfile' ,
328331 metavar = '<file>' , default = None ,
329332 help = "The pid of the server process will be written to <file>"
330333 )
331- parser .add_option ('-n' , '--no-daemon' , dest = 'daemon' ,
334+ parser .add_argument ('-n' , '--no-daemon' , dest = 'daemon' ,
332335 action = 'store_false' , default = True ,
333336 help = "Do not fork into the background after running the first check."
334337 )
335- parser .add_option ('-v' , '--verbose' , dest = 'verbose' ,
338+ parser .add_argument ('--version' , action = "store_true" ,
339+ help = "Print version and exit" )
340+ parser .add_argument ('-v' , '--verbose' , dest = 'verbose' ,
336341 action = 'store_const' , const = logging .INFO ,
337342 help = "Be more verbose in letting you know what is going on."
338343 " Enables informational messages."
339344 )
340- parser .add_option ('-V' , '--very-verbose' , dest = 'verbose' ,
345+ parser .add_argument ('-V' , '--very-verbose' , dest = 'verbose' ,
341346 action = 'store_const' , const = logging .DEBUG ,
342347 help = "Be very verbose in letting you know what is going on."
343348 " Enables debugging messages."
344349 )
345- parser .add_option ('-q' , '--quiet' , dest = 'verbose' ,
350+ parser .add_argument ('-q' , '--quiet' , dest = 'verbose' ,
346351 action = 'store_const' , const = logging .ERROR ,
347352 help = "Be less verbose. Ignores warnings, only prints errors."
348353 )
349- parser .add_option ('-Q' , '--very-quiet' , dest = 'verbose' ,
354+ parser .add_argument ('-Q' , '--very-quiet' , dest = 'verbose' ,
350355 action = 'store_const' , const = logging .CRITICAL ,
351356 help = "Be much less verbose. Ignores warnings and errors."
352357 " Only print CRITICAL messages."
353358 )
354359
355- (opts , args ) = parser .parse_args ()
356- if (len (args ) == 0 ) or (len (args ) % 2 == 1 ):
360+ args = parser .parse_args ()
361+ if args .version :
362+ print ('%s %s' % (sys .argv [0 ], version ))
363+ sys .exit (0 )
364+ if not len (args .args ) or len (args .args ) % 2 == 1 :
357365 parser .error ('Invalid number of arguments. '
358366 'Each site needs a home and a server.' )
359367
360- if opts .verbose == None :
361- opts .verbose = logging .WARNING
368+ if args .verbose == None :
369+ args .verbose = logging .WARNING
362370
363- log .setLevel (opts .verbose )
364- myServer = IMAPServer (delay = opts .delay , pidfile = opts .pidfile ,
365- daemon = opts .daemon )
366- for i in range (0 ,len (args ),2 ):
367- home = args [i ]
368- server = args [i + 1 ]
371+ log .setLevel (args .verbose )
372+ myServer = IMAPServer (delay = args .delay , pidfile = args .pidfile ,
373+ daemon = args .daemon )
374+ for i in range (0 ,len (args . args ),2 ):
375+ home = args . args [i ]
376+ server = args . args [i + 1 ]
369377 if not os .path .exists (home ):
370378 parser .error ('Home: "%s" does not exist' % home )
371379
0 commit comments