#!/usr/bin/env python
#
#

""" run multiple bot instances in 1 program. """

## bootstrap

import warnings
warnings.simplefilter("ignore")

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


## basic imports

import logging
import time
import signal

## options parser

from me2.utils.opts import makefleetopts

opts = makefleetopts()


## me2 imports

from me2.lib.datadir import makedirs
from me2.lib.boot import boot
from me2.lib.exit import globalshutdown
from me2.utils.mainloop import mainloop
from me2.lib.users import users_boot
import me2


from me2.lib.fleet import getfleet
fleet = getfleet(opts.datadir)
if opts.all or opts.show:
    avail = fleet.avail()
    if avail: sys.stdout.write("available bots: " + ", ".join(avail) + ".")
    else: sys.stdout.write("no bots available.")

if opts.all: print "" ; os._exit(0)

# provide sigterm support
def dostop(a, b):
    """ sig handler """
    globalshutdown()

signal.signal(signal.SIGTERM, dostop)

## loglevel

from me2.utils.log import setloglevel
from me2.lib.version import getversion
setloglevel(opts.loglevel or "warning")
logging.warn(getversion('FLEET'))

if not fleet.avail(): logging.error("fleet - no bots found.") ; os._exit(1)

## start the fleet

boot(opts.datadir)

if opts.owner:
    users = users_boot()
    users.make_owner(opts.owner)

fleet.loadall(opts.args)

if opts.doresume:
    fleet.resume(opts.doresume)
    os.unlink(opts.doresume)
else: fleet.startall()

mainloop()
