summaryrefslogtreecommitdiff
path: root/service/pixelated/maintenance.py
diff options
context:
space:
mode:
authorJefferson Stachelski <jstachel@thoughtworks.com>2015-04-28 12:00:56 -0300
committerJefferson Stachelski <jstachel@thoughtworks.com>2015-04-28 12:00:56 -0300
commit74a2462f89d21a3182c78511ce665c5ec337f200 (patch)
tree949f2176175c2f8100e476554bd232389e5d78b1 /service/pixelated/maintenance.py
parente07559eebcf2dca60d91b20dc901609f59156f82 (diff)
#337 Made some refactors to make the code more readable
Diffstat (limited to 'service/pixelated/maintenance.py')
-rw-r--r--service/pixelated/maintenance.py141
1 files changed, 77 insertions, 64 deletions
diff --git a/service/pixelated/maintenance.py b/service/pixelated/maintenance.py
index 2cb50dfe..9a2d615d 100644
--- a/service/pixelated/maintenance.py
+++ b/service/pixelated/maintenance.py
@@ -50,51 +50,26 @@ import pixelated.support.ext_keymanager_fetch_key
import pixelated.support.ext_requests_urllib3
-def delete_all_mails(args):
- leap_session, soledad = args
- generation, docs = soledad.get_all_docs()
-
- for doc in docs:
- if doc.content.get('type', None) in ['head', 'cnt', 'flags']:
- soledad.delete_doc(doc)
-
- return args
-
-
-@defer.inlineCallbacks
-def load_mails(args, mail_paths):
- leap_session, soledad = args
- account = leap_session.account
-
- for path in mail_paths:
- print 'Loading mails from %s' % path
- for root, dirs, files in os.walk(path):
- mbx = account.getMailbox('INBOX')
- for f in files:
- with open(join(root, f), 'r') as fp:
- m = email.message_from_file(fp)
- flags = ("\\RECENT",)
- r = yield mbx.addMessage(m.as_string(), flags=flags, notify_on_disk=False)
- print 'Added message %s' % m.get('subject')
- print m.as_string()
-
- defer.returnValue(args)
- return
-
+def initialize():
+ args = parse_args()
+ app = App()
-def dump_soledad(args):
- leap_session, soledad = args
+ init_logging(args)
+ init_leap_cert(args)
- generation, docs = soledad.get_all_docs()
+ if args.dispatcher or args.dispatcher_stdin:
+ config_dispatcher(app, args)
+ else:
+ config_user_agent(app, args)
- for doc in docs:
- print doc
- print '\n'
+ init_events_server()
+ execute_command = create_execute_command(args, app)
- return args
+ reactor.callWhenRunning(execute_command)
+ reactor.run()
-def initialize():
+def parse_args():
parser = argparse.ArgumentParser(description='pixelated maintenance')
parser_add_default_arguments(parser)
subparsers = parser.add_subparsers(help='commands', dest='command')
@@ -105,19 +80,10 @@ def initialize():
subparsers.add_parser('dump-soledad', help='dump the soledad database')
subparsers.add_parser('sync', help='sync the soledad database')
- args = parser.parse_args()
- app = App()
-
- init_logging(args)
- init_leap_cert(args)
-
- if args.dispatcher or args.dispatcher_stdin:
- config_dispatcher(app, args)
- else:
- config_user_agent(app, args)
+ return parser.parse_args()
- init_events_server()
+def create_execute_command(args, app):
def execute_command():
def init_soledad():
@@ -138,23 +104,70 @@ def initialize():
d = deferToThread(init_soledad)
d.addCallback(get_soledad_handle)
d.addCallback(soledad_sync)
- if args.command == 'reset':
- d.addCallback(delete_all_mails)
- elif args.command == 'load-mails':
- d.addCallback(load_mails, args.file)
- elif args.command == 'dump-soledad':
- d.addCallback(dump_soledad)
- elif args.command == 'sync':
- # nothing to do here, sync is already part of the chain
- pass
- else:
- print 'Unsupported command: %s' % args.command
+ add_command_callback(args, d)
d.addCallback(soledad_sync)
d.addCallback(shutdown)
d.addErrback(shutdown_on_error)
- reactor.callWhenRunning(execute_command)
- reactor.run()
+ return execute_command
+
+
+def add_callback(args, defer):
+ if args.command == 'reset':
+ defer.addCallback(delete_all_mails)
+ elif args.command == 'load-mails':
+ defer.addCallback(load_mails, args.file)
+ elif args.command == 'dump-soledad':
+ defer.addCallback(dump_soledad)
+ elif args.command == 'sync':
+ # nothing to do here, sync is already part of the chain
+ pass
+ else:
+ print 'Unsupported command: %s' % args.command
+
+
+def delete_all_mails(args):
+ leap_session, soledad = args
+ generation, docs = soledad.get_all_docs()
+
+ for doc in docs:
+ if doc.content.get('type', None) in ['head', 'cnt', 'flags']:
+ soledad.delete_doc(doc)
+
+ return args
+
+
+@defer.inlineCallbacks
+def load_mails(args, mail_paths):
+ leap_session, soledad = args
+ account = leap_session.account
+
+ for path in mail_paths:
+ print 'Loading mails from %s' % path
+ for root, dirs, files in os.walk(path):
+ mbx = account.getMailbox('INBOX')
+ for f in files:
+ with open(join(root, f), 'r') as fp:
+ m = email.message_from_file(fp)
+ flags = ("\\RECENT",)
+ r = yield mbx.addMessage(m.as_string(), flags=flags, notify_on_disk=False)
+ print 'Added message %s' % m.get('subject')
+ print m.as_string()
+
+ defer.returnValue(args)
+ return
+
+
+def dump_soledad(args):
+ leap_session, soledad = args
+
+ generation, docs = soledad.get_all_docs()
+
+ for doc in docs:
+ print doc
+ print '\n'
+
+ return args
def shutdown(args):
@@ -163,7 +176,7 @@ def shutdown(args):
def shutdown_on_error(error):
print error
- reactor.stop()
+ shutdown(None)
if __name__ == '__main__':
initialize()