#!/usr/bin/python3
#
#

""" PROJECT. """

## BOOTSTRAP

import os, sys, warnings
sys.path.insert(0, os.getcwd())
sys.path.insert(0, os.getcwd() + os.sep + "eggs")

warnings.simplefilter("ignore", UserWarning)

## IMPORTS

from core import shutdown, ConsoleBot, FileNotFoundError, RemoteDisconnect
from core import boot, hello, kernel, Object
from core.defines import opts_defs
from core.utils import error, make_opts, j
from core.completer import TheCompleter

# basic

import readline
import logging
import time
import sys
import os

## DEFINES

homedir = os.path.expanduser("~")
histfile = j(os.curdir, "project_history")
bot = None

try: 
    readline.read_history_file(histfile)
    readline.parse_and_bind("tab: complete")
except: pass

## MAIN

def main():
    global bot
    opts, args = make_opts(opts_defs)
    cfg = Object()
    cfg.update(vars(opts))
    cfg.runargs = args
    workdir = cfg.get("workdir", "")
    if not workdir: cfg.workdir = os.getcwd() + os.sep + "data"
    if cfg.shell:
        from project import __version__
        hello("PROJECT", __version__)
    kernel = boot(cfg)
    kernel.plugs.load_package("project.plugs")
    readline.set_completer(TheCompleter(list(kernel.cmnds.keys())).complete)
    bot = ConsoleBot()
    kernel.fleet.append(bot)
    bot.begin()

if __name__ == "__main__": 
    try: main()
    except KeyboardInterrupt: pass
    shutdown()
