]> code.delx.au - offlineimap/blobdiff - offlineimap/init.py
Add option '-k' for overriding config options
[offlineimap] / offlineimap / init.py
index 0cd6bfdf6952c137b2357ea986edca8309c226ee..d901864929f6c30e61f9f947c1ca2142bc7a1b55 100644 (file)
@@ -24,7 +24,7 @@ from offlineimap.ui import UIBase
 import re, os, os.path, offlineimap, sys
 from offlineimap.CustomConfig import CustomConfigParser
 from threading import *
-import threading
+import threading, socket
 from getopt import getopt
 
 try:
@@ -50,14 +50,14 @@ def startup(versionno):
     assert versionno == version.versionstr, "Revision of main program (%s) does not match that of library (%s).  Please double-check your PYTHONPATH and installation locations." % (versionno, version.versionstr)
     options = {}
     if '--help' in sys.argv[1:]:
-        sys.stdout.write(version.cmdhelp + "\n")
+        sys.stdout.write(version.getcmdhelp() + "\n")
         sys.exit(0)
 
-    for optlist in getopt(sys.argv[1:], 'P:1oa:c:d:l:u:h')[0]:
+    for optlist in getopt(sys.argv[1:], 'P:1oqa:c:d:l:u:hk:')[0]:
         options[optlist[0]] = optlist[1]
 
     if options.has_key('-h'):
-        sys.stdout.write(version.cmdhelp)
+        sys.stdout.write(version.getcmdhelp())
         sys.stdout.write("\n")
         sys.exit(0)
     configfilename = os.path.expanduser("~/.offlineimaprc")
@@ -79,6 +79,17 @@ def startup(versionno):
 
     config.read(configfilename)
 
+    # override config values with option '-k'
+    for option in options.keys():
+        if option == '-k':
+            (key, value) = options['-k'].split('=', 1)
+            if ':' in key:
+                (secname, key) = key.split(':', 1)
+                section = secname.replace("_", " ")
+            else:
+                section = "general"
+            config.set(section, key, value)
+
     ui = offlineimap.ui.detector.findUI(config, options.get('-u'))
     UIBase.setglobalui(ui)
 
@@ -100,12 +111,27 @@ def startup(versionno):
         for section in accounts.getaccountlist(config):
             config.remove_option('Account ' + section, "autorefresh")
 
+    if options.has_key('-q'):
+        for section in accounts.getaccountlist(config):
+            config.set('Account ' + section, "quick", '-1')
+
     lock(config, ui)
 
+    try:
+        pidfd = open(config.getmetadatadir() + "/pid", "w")
+        pidfd.write(os.getpid())
+        pidfd.close()
+    except:
+        pass
+
     try:
         if options.has_key('-l'):
             sys.stderr = ui.logfile
 
+        socktimeout = config.getdefaultint("general", "socktimeout", 0)
+        if socktimeout > 0:
+            socket.setdefaulttimeout(socktimeout)
+
         activeaccounts = config.get("general", "accounts")
         if options.has_key('-a'):
             activeaccounts = options['-a']