]> code.delx.au - offlineimap/commitdiff
Add option '-f' for sync'ing only selected folders
authorRiccardo Murri <riccardo.murri@gmail.com>
Thu, 3 Jan 2008 03:15:11 +0000 (04:15 +0100)
committerRiccardo Murri <riccardo.murri@gmail.com>
Thu, 3 Jan 2008 03:15:11 +0000 (04:15 +0100)
offlineimap.sgml
offlineimap/init.py
offlineimap/version.py

index 1fc5bd61f21e5abb482478ccf937bb09dda763b0..c0498d1fecb6595d45614a1fe1d9ab182ed68bb6 100644 (file)
@@ -373,6 +373,15 @@ cd offlineimap-x.y.z</ProgramListing>
              will debug the threading model.
            </para></listitem>
          </varlistentry>
+        <varlistentry><term>-f <replaceable>foldername</replaceable>[,<replaceable>foldername</replaceable>]</term>
+          <listitem><para> Only sync the specified folders.  The
+              <replaceable>foldername</replaceable>s are the
+              untranslated foldernames.  This command-line option
+              overrides any <property>folderfilter</property>
+              and <property>folderincludes</property> options in the
+              configuration file.
+          </para></listitem>
+        </varlistentry>
         <varlistentry><term>-k [<replaceable>section</replaceable>:]<replaceable>option</replaceable>=<replaceable>value</replaceable>
           </term>
           <listitem><para> Override configuration file option.  If
index d901864929f6c30e61f9f947c1ca2142bc7a1b55..ca0991943f033fcf3995d05ddf9d98ee794ba6ea 100644 (file)
@@ -53,7 +53,7 @@ def startup(versionno):
         sys.stdout.write(version.getcmdhelp() + "\n")
         sys.exit(0)
 
-    for optlist in getopt(sys.argv[1:], 'P:1oqa:c:d:l:u:hk:')[0]:
+    for optlist in getopt(sys.argv[1:], 'P:1oqa:c:d:l:u:hk:f:')[0]:
         options[optlist[0]] = optlist[1]
 
     if options.has_key('-h'):
@@ -115,6 +115,20 @@ def startup(versionno):
         for section in accounts.getaccountlist(config):
             config.set('Account ' + section, "quick", '-1')
 
+    if options.has_key('-f'):
+        foldernames = options['-f'].replace(" ", "").split(",")
+        folderfilter = "lambda f: f in %s" % foldernames
+        folderincludes = "[]"
+        for accountname in accounts.getaccountlist(config):
+            account_section = 'Account ' + accountname
+            remote_repo_section = 'Repository ' + \
+                                  config.get(account_section, 'remoterepository')
+            local_repo_section = 'Repository ' + \
+                                 config.get(account_section, 'localrepository')
+            for section in [remote_repo_section, local_repo_section]:
+                config.set(section, "folderfilter", folderfilter)
+                config.set(section, "folderincludes", folderincludes)
+
     lock(config, ui)
 
     try:
index 0a46dec015f326e7a82a0d5cfc040dc674d6e02c..0713fad70ec0e09a287993ffef035494642cd781 100644 (file)
@@ -94,6 +94,13 @@ def getcmdhelp():
               one else.  The maildir option will enable debugging
               for certain Maildir operations.
 
+       -f foldername[,foldername...]
+              Only sync the specified folders.  The "foldername"s
+              are    the   *untranslated*    foldernames.    This
+              command-line  option  overrides any  "folderfilter"
+              and "folderincludes" options  in the  configuration 
+              file.
+
        -k [section:]option=value
               Override configuration file option.  If"section" is
               omitted, it defaults to "general".  Any underscores