#!/usr/bin/env python3
#
#

## bootstrap

import warnings
warnings.simplefilter("ignore")

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

## options parser

from tl.utils.opts import do_opts

opts, cfg = do_opts("irc")

## tl imports

from tl.utils.exception import handle_exception
from tl.lib.partyline import partyline
from tl.drivers.irc.bot import IRCBot
from tl.lib.boot import plugin_packages, boot
from tl.utils.log import setloglevel
from tl.lib.errors import NoOwnerSet
from tl.lib.fleet import getfleet
from tl.utils.mainloop import mainloop
from tl.lib.threads import start_new_thread
from tl.lib.eventhandler import mainhandler
import tl.lib.users as users
import tl

## basic imports

import logging
import time
import os

## boot

boot(opts.datadir)

## resume or start the bot

if opts.doresume and os.path.isfile(opts.doresume):
    logging.warn("irc - resuming from %s" % opts.doresume)
    if True:
        fleet = getfleet()
        fleet.resume(opts.doresume)
        fleet.startok.wait()
    partyline.resume(opts.doresume)
    os.unlink(opts.doresume)
else:
    try:
        bot = IRCBot(cfg)
    except NoOwnerSet as ex:
        print("owner is not set in %s - use the -o option" % str(ex))
        os._exit(1)
    if opts.channel and not opts.channel in bot.cfg.channels:
        bot.cfg.channels.append(opts.channel)
        bot.cfg.save()
    start_new_thread(bot.boot, ())

if opts.api:
    from tl.api import server
    server.runapiserver(opts.apiport)
else: mainloop()
