1.1 --- a/imiptools/__init__.py Wed Mar 09 21:38:56 2016 +0100
1.2 +++ b/imiptools/__init__.py Thu Mar 10 01:43:31 2016 +0100
1.3 @@ -25,7 +25,7 @@
1.4 from imiptools.content import handle_itip_part
1.5 from imiptools.data import get_address, get_addresses, get_uri
1.6 from imiptools.mail import Messenger
1.7 -import imiptools.stores.file
1.8 +from imiptools.stores import get_store, get_publisher, get_journal
1.9 import sys, os
1.10
1.11 # Postfix exit codes.
1.12 @@ -56,6 +56,7 @@
1.13 self.outgoing_only = outgoing_only
1.14 self.messenger = None
1.15 self.lmtp_socket = None
1.16 + self.store_type = None
1.17 self.store_dir = None
1.18 self.publishing_dir = None
1.19 self.journal_dir = None
1.20 @@ -63,13 +64,13 @@
1.21 self.debug = False
1.22
1.23 def get_store(self):
1.24 - return imiptools.stores.file.FileStore(self.store_dir)
1.25 + return get_store(self.store_type, self.store_dir)
1.26
1.27 def get_publisher(self):
1.28 - return self.publishing_dir and imiptools.stores.file.FilePublisher(self.publishing_dir) or None
1.29 + return self.publishing_dir and get_publisher(self.publishing_dir) or None
1.30
1.31 def get_journal(self):
1.32 - return imiptools.stores.file.FileJournal(self.journal_dir)
1.33 + return get_journal(self.store_type, self.journal_dir)
1.34
1.35 def process(self, f, original_recipients):
1.36
1.37 @@ -122,6 +123,7 @@
1.38 recipients = []
1.39 senders = []
1.40 lmtp = []
1.41 + store_type = []
1.42 store_dir = []
1.43 publishing_dir = []
1.44 preferences_dir = []
1.45 @@ -152,6 +154,11 @@
1.46 elif arg == "-L":
1.47 local_smtp = True
1.48
1.49 + # Switch to getting the store type.
1.50 +
1.51 + elif arg == "-T":
1.52 + l = store_type
1.53 +
1.54 # Switch to getting the store directory.
1.55
1.56 elif arg == "-S":
1.57 @@ -179,11 +186,14 @@
1.58 else:
1.59 l.append(arg)
1.60
1.61 - self.messenger = Messenger(lmtp_socket=lmtp and lmtp[0] or None, local_smtp=local_smtp, sender=senders and senders[0] or None)
1.62 - self.store_dir = store_dir and store_dir[0] or None
1.63 - self.publishing_dir = publishing_dir and publishing_dir[0] or None
1.64 - self.preferences_dir = preferences_dir and preferences_dir[0] or None
1.65 - self.journal_dir = journal_dir and journal_dir[0] or None
1.66 + getvalue = lambda value, default=None: value and value[0] or default
1.67 +
1.68 + self.messenger = Messenger(lmtp_socket=getvalue(lmtp), local_smtp=local_smtp, sender=getvalue(senders))
1.69 + self.store_type = getvalue(store_type, config.STORE_TYPE)
1.70 + self.store_dir = getvalue(store_dir)
1.71 + self.publishing_dir = getvalue(publishing_dir)
1.72 + self.preferences_dir = getvalue(preferences_dir)
1.73 + self.journal_dir = getvalue(journal_dir)
1.74 self.process(stream, original_recipients)
1.75
1.76 def __call__(self):
1.77 @@ -198,6 +208,7 @@
1.78 if "--help" in args:
1.79 print >>sys.stderr, """\
1.80 Usage: %s [ -o <recipient> ... ] [-s <sender> ... ] [ -l <socket> | -L ] \\
1.81 + [ -T <store type ] \\
1.82 [ -S <store directory> ] [ -P <publishing directory> ] \\
1.83 [ -p <preferences directory> ] [ -j <journal directory> ] [ -d ]
1.84
1.85 @@ -225,6 +236,7 @@
1.86 -p Indicates the location of user preference directories
1.87 -S Indicates the location of the calendar data store containing user storage
1.88 directories
1.89 +-T Indicates the store and journal type (the configured value if omitted)
1.90
1.91 Output options:
1.92