#!/usr/bin/env python
# -*- coding:utf-8 -*-
#
# Author: Pablo Saavedra
# Maintainer: Pablo Saavedra
# Contact: saavedra.pablo at gmail.com

import argparse
import traceback
import time

from matrixbot import utils
from matrixbot import matrix

## vars ########################################################################
conffile = ".matrixbot.cfg"

## command line options parser #################################################
parser = argparse.ArgumentParser()
parser.add_argument("-c", "--conffile", dest="conffile", default=conffile,
                    help="Conffile (default: %s)" % conffile)
args = parser.parse_args()
conffile = args.conffile

# setting up ###################################################################
settings = utils.get_default_settings()
utils.setup(conffile, settings)
logger = utils.create_logger(settings)

## main ########################################################################
if __name__ == '__main__':
    while True:
        try:
            m = matrix.MatrixBot(settings)
            m.join_rooms(silent=True)
            m.sync(ignore=True) # Ignoring pending old messages
            while True:
                m.sync()
        except Exception, e:
            logger.error("Unexpected error: %s" % e)
            logger.error("Unexpected error: %s" % traceback.print_exc())
            time.sleep(10)
