]> code.delx.au - offlineimap/blobdiff - head/offlineimap.py
Step 1 of converting tree to Arch layout
[offlineimap] / head / offlineimap.py
index 1c22aa7300eb6f5b3d052ac7ae81d52652ac46a8..294e586808cb9e35e4c8c6e847cdff38dc10a99c 100644 (file)
@@ -1,6 +1,6 @@
-#!/usr/bin/python2.2
-
-# Copyright (C) 2002 John Goerzen
+#!/usr/bin/env python2.3
+# Startup from single-user installation
+# Copyright (C) 2002, 2003, 2004 John Goerzen
 # <jgoerzen@complete.org>
 #
 #    This program is free software; you can redistribute it and/or modify
 #    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-from offlineimap import imaplib, imaputil, imapserver, repository, folder, mbnames
-import re, os, os.path, offlineimap, sys
-from ConfigParser import ConfigParser
-
-ui = offlineimap.ui.TTY.TTYUI()
-ui.init_banner()
-
-config = ConfigParser()
-configfilename = os.path.expanduser("~/.offlineimaprc")
-if not os.path.exists(configfilename):
-    sys.stderr.write(" *** Config file %s does not exist; aborting!\n" % configfilename)
-    sys.exit(1)
-    
-config.read(configfilename)
-
-metadatadir = os.path.expanduser(config.get("general", "metadata"))
-if not os.path.exists(metadatadir):
-    os.mkdir(metadatadir, 0700)
-
-accounts = config.get("general", "accounts")
-accounts = accounts.replace(" ", "")
-accounts = accounts.split(",")
-
-server = None
-remoterepos = None
-localrepos = None
-mailboxes = []
-
-def syncitall():
-    for accountname in accounts:
-        ui.acct(accountname)
-        accountmetadata = os.path.join(metadatadir, accountname)
-        if not os.path.exists(accountmetadata):
-            os.mkdir(accountmetadata, 0700)
-        host = config.get(accountname, "remotehost")
-        user = config.get(accountname, "remoteuser")
-        port = None
-        if config.has_option(accountname, "remoteport"):
-            port = config.getint(accountname, "remoteport")
-        password = None
-        if config.has_option(accountname, "remotepass"):
-            password = config.get(accountname, "remotepass")
-        else:
-            password = ui.getpass(accountname, host, port, user)
-            # Save it for future reference.
-            config.set(accountname, "remotepass", password)
-        ssl = config.getboolean(accountname, "ssl")
-
-        # Connect to the remote server.
-        server = imapserver.IMAPServer(user, password, host, port, ssl)
-        remoterepos = repository.IMAP.IMAPRepository(config, accountname, server)
-
-        # Connect to the Maildirs.
-        localrepos = repository.Maildir.MaildirRepository(os.path.expanduser(config.get(accountname, "localfolders")))
-
-        # Connect to the local cache.
-        statusrepos = repository.LocalStatus.LocalStatusRepository(accountmetadata)
-
-        ui.syncfolders(remoterepos, localrepos)
-        remoterepos.syncfoldersto(localrepos)
-
-        for remotefolder in remoterepos.getfolders():
-            mailboxes.append({'accountname': accountname,
-                              'foldername': remotefolder.getvisiblename()})
-            # Load local folder.
-            localfolder = localrepos.getfolder(remotefolder.getvisiblename())
-            if not localfolder.isuidvalidityok(remotefolder):
-                ui.validityproblem(remotefolder)
-                continue
-            ui.syncingfolder(remoterepos, remotefolder, localrepos, localfolder)
-            ui.loadmessagelist(localrepos, localfolder)
-            localfolder.cachemessagelist()
-            ui.messagelistloaded(localrepos, localfolder, len(localfolder.getmessagelist().keys()))
-
-            # Load remote folder.
-            ui.loadmessagelist(remoterepos, remotefolder)
-            remotefolder.cachemessagelist()
-            ui.messagelistloaded(remoterepos, remotefolder,
-                                 len(remotefolder.getmessagelist().keys()))
-
-            # Load status folder.
-            statusfolder = statusrepos.getfolder(remotefolder.getvisiblename())
-            statusfolder.cachemessagelist()
-
-            if not statusfolder.isnewfolder():
-                ui.syncingmessages(localrepos, localfolder, remoterepos, remotefolder)
-                localfolder.syncmessagesto(statusfolder, [remotefolder, statusfolder])
-
-            # Synchronize remote changes.
-            ui.syncingmessages(remoterepos, remotefolder, localrepos, localfolder)
-            remotefolder.syncmessagesto(localfolder)
-
-            # Make sure the status folder is up-to-date.
-            ui.syncingmessages(localrepos, localfolder, statusrepos, statusfolder)
-            localfolder.syncmessagesto(statusfolder)
-            statusfolder.save()
-        server.close()
-
-
-    mbnames.genmbnames(config, mailboxes)
-
-syncitall()
-if config.has_option('general', 'autorefresh'):
-    refreshperiod = config.getint('general', 'autorefresh') * 60
-    while 1:
-        sleepamount = refreshperiod
-        abortsleep = 0
-        while sleepamount > 0 and not abortsleep:
-            abortsleep = ui.sleeping(1, sleepamount)
-            sleepamount -= 1
-        ui.sleeping(0, 0)        # Done sleeping.
-        syncitall()
-        
+from offlineimap import init
+init.startup('4.0.7')