aboutsummaryrefslogtreecommitdiffstats
path: root/archive_folder.py
diff options
context:
space:
mode:
Diffstat (limited to 'archive_folder.py')
-rwxr-xr-xarchive_folder.py18
1 files changed, 16 insertions, 2 deletions
diff --git a/archive_folder.py b/archive_folder.py
index 4b86707..3d52918 100755
--- a/archive_folder.py
+++ b/archive_folder.py
@@ -31,6 +31,7 @@ class MessageError(IOError):
Capas = collections.namedtuple('Capas', ['MOVE', 'UIDPLUS'])
SEP_RE = re.compile(r'\s+"([/.])"\s+')
+FOLDER_RE = re.compile(r'\s+"[/.]"\s+')
class Message(object):
@@ -231,6 +232,14 @@ class EmailServer(object):
dir = Folder(self.box, arch_dir, create=True)
# dir.move_messages(msg_ids)
+ def list_folders(self):
+ ok, data = self.box.list()
+ if ok != 'OK':
+ raise IOError('Cannot list folders!')
+
+ return sorted([FOLDER_RE.split(x.decode())[1] for x in data],
+ key=str.lower)
+
def __enter__(self):
return self
@@ -244,11 +253,12 @@ if __name__ == '__main__':
locale.setlocale(locale.LC_ALL, 'en_US')
argp = argparse.ArgumentParser()
subps = argp.add_subparsers(dest='cmd')
- subp_list = subps.add_parser('servers', help='List available servers (by keywords)')
+ subp_servers = subps.add_parser('servers', help='List available servers (by keywords)')
+ subp_list = subps.add_parser('list', help='List all folders')
subp_arc = subps.add_parser('archive', help='Archive folder[s]')
subp_arc.add_argument('-d', type=int, default=14, dest='days',
help='How old messages we should keep')
- subp_arc.add_argument('-s', '--server', default='localhost',
+ subp_arc.add_argument('-s', '--server',
help='Symbolic name of the server to be used')
subp_arc.add_argument('folder', help='Folder which should be archived')
subp_arc.add_argument('archive', help='Root folder to store annual archives to')
@@ -259,6 +269,10 @@ if __name__ == '__main__':
config = EmailServer.get_config()
sects = set(config.keys()) - {'DEFAULT', 'general'}
print('Available servers:\n%s' % tuple(sects))
+ elif args.cmd == 'list':
+ myStore = EmailServer()
+ folders = myStore.list_folders()
+ print('\n'.join(folders))
else:
before = date.today() - timedelta(days=args.days)
with EmailServer(args.server, args.archive) as myStore: