from offlineimap.threadutil import InstanceLimitedThread, ExitNotifyThread
from threading import Event
import os
+from subprocess import Popen, PIPE
def getaccountlist(customconfig):
return customconfig.getsectionlist('Account')
# We don't need an account lock because syncitall() goes through
# each account once, then waits for all to finish.
+ hook = self.getconf('presynchook', '')
+ self.callhook(hook)
+
quickconfig = self.getconfint('quick', 0)
if quickconfig < 0:
quick = True
remoterepos.holdordropconnections()
finally:
pass
+
+ hook = self.getconf('postsynchook', '')
+ self.callhook(hook)
+
+ def callhook(self, cmd):
+ if not cmd:
+ return
+ try:
+ self.ui.callhook("Calling hook: " + cmd)
+ p = Popen(cmd, shell=True,
+ stdin=PIPE, stdout=PIPE, stderr=PIPE,
+ close_fds=True)
+ r = p.communicate()
+ self.ui.callhook("Hook stdout: %s\nHook stderr:%s\n" % r)
+ self.ui.callhook("Hook return code: %d" % p.returncode)
+ except:
+ self.ui.warn("Exception occured while calling hook")
class SyncableAccount(Account, AccountSynchronizationMixin):
pass
s.delThreadDebugLog(thread)
s.unregisterthread(thread)
+ ################################################## Hooks
+
+ def callhook(s, msg):
+ if s.verbose >= 0:
+ s._msg(msg)
+
################################################## Other
def sleep(s, sleepsecs):