diff options
author | W. Trevor King <wking@drexel.edu> | 2010-01-20 15:22:28 -0500 |
---|---|---|
committer | W. Trevor King <wking@drexel.edu> | 2010-01-20 15:22:28 -0500 |
commit | c8985785eb741ff646082879f1ca5e9cfe3873b0 (patch) | |
tree | 9e4b45e90217689746aad0e2e03aa98af5f38032 | |
parent | fdc203bdae26aecb475a03c3da17cd44ee376a9c (diff) | |
download | bugseverywhere-c8985785eb741ff646082879f1ca5e9cfe3873b0.tar.gz |
'be-mbox-to-xml' -> 'be-mail-to-xml' + support for several formats.
-rw-r--r-- | NEWS | 4 | ||||
-rwxr-xr-x | misc/xml/be-mail-to-xml (renamed from misc/xml/be-mbox-to-xml) | 28 |
2 files changed, 24 insertions, 8 deletions
@@ -1,3 +1,7 @@ +January 20, 2010 + * Renamed 'be-mbox-to-xml' -> 'be-mail-to-xml' and added support for + several mailbox formats. + January 3, 2010 * Changed `be list --uuids` -> `be list --ids` Instead of UUIDs, it now outputs user ids: BUGDIR/BUG diff --git a/misc/xml/be-mbox-to-xml b/misc/xml/be-mail-to-xml index 1fc41e0..2add065 100755 --- a/misc/xml/be-mbox-to-xml +++ b/misc/xml/be-mail-to-xml @@ -23,16 +23,19 @@ followed by a blank line. """ import base64 +import codecs import email.utils -from libbe.encoding import get_encoding, set_IO_stream_encodings -from libbe.utility import time_to_str -from mailbox import mbox, Message # the mailbox people really want an on-disk copy +from libbe.util.encoding import get_output_encoding +from libbe.util.utility import time_to_str +import mailbox # the mailbox people really want an on-disk copy +import optparse +import sys from time import asctime, gmtime, mktime import types from xml.sax.saxutils import escape -DEFAULT_ENCODING = get_encoding() -set_IO_stream_encodings(DEFAULT_ENCODING) +DEFAULT_ENCODING = get_output_encoding() +sys.stdout = codecs.getwriter(DEFAULT_ENCODING)(sys.stdout) KNOWN_IDS = [] @@ -140,8 +143,17 @@ def comment_message_to_xml(message, fields=None): lines.append(u"</comment>") return u'\n'.join(lines) -def main(mbox_filename): - mb = mbox(mbox_filename) +def main(argv): + parser = optparse.OptionParser(usage='%prog [options] mailbox') + formats = ['mbox', 'Maildir', 'MH', 'Babyl', 'MMDF'] + parser.add_option('-f', '--format', type='choice', dest='format', + help="Select the mailbox format from %s. See the mailbox module's documention for descriptions of these formats." \ + % ', '.join(formats), + default='mbox', choices=formats) + options,args = parser.parse_args(argv) + mailbox_file = args[1] + reader = getattr(mailbox, options.format) + mb = reader(mailbox_file, factory=None) print u'<?xml version="1.0" encoding="%s" ?>' % DEFAULT_ENCODING print u"<be-xml>" for message in mb: @@ -151,4 +163,4 @@ def main(mbox_filename): if __name__ == "__main__": import sys - main(sys.argv[1]) + main(sys.argv) |