#!/usr/bin/env python
#
#

## bootstrap

import warnings
warnings.simplefilter("ignore")

import os, sys
sys.path.insert(0, os.getcwd())


## jsb impors

from boty.drivers.xmpp.bot import BotyXMPPBot
from boty.lib.boot import boot
from jsb.utils.log import setloglevel
from jsb.lib.config import Config, getmainconfig
from jsb.lib.errors import NoOwnerSet
from jsb.lib.fleet import getfleet
from jsb.utils.mainloop import mainloop
from jsb.utils.opts import makesxmppopts, makesxmppconfig
from jsb.lib.datadir import setdatadir, getdatadir
from jsb.lib.exit import globalshutdown
from jsb.utils.exception import handle_exception
from jsb.lib.threads import start_new_thread
import jsb.lib.users as users
import jsb

## basic imports

import logging
import time
import os

## options parser


opts = makesxmppopts()
if opts.datadir: targetdir = opts.datadir or "boty-data"
else: targetdir = "boty-data"
 
from boty.version import getversion
print getversion('XMPP')


from jsb.utils.log import setloglevel
setloglevel(opts.loglevel or "warn", opts.colors)

## start bot

boot(opts.datadir or "boty-data")

cfg = makesxmppconfig(opts)
if opts.nick: cfg.nick = opts.nick ; cfg.save()
if opts.port: cfg.port = opts.port ; cfg.save()
if opts.user: cfg.user = opts.user ; cfg.save()
if opts.password: cfg.password = opts.password ; cfg.save()

## enable bot in config

mainconfig = getmainconfig()
if cfg.disabled: cfg.disabled = 0 ; cfg.save()


try:
    bot = BotyXMPPBot(cfg, name=opts.name or "boty-xmpp")
except NoOwnerSet, ex:
    print "owner is not set in %s - use the -o option" % str(ex)
    os._exit(1)

bot.start()
try: mainloop()
except KeyboardInterrupt: globalshutdown()
except: handle_exception() ; globalshutdown()
else: globalshutdown()
