#!python
# This file is placed in the Public Domain.
# pylint: disable=R,C,W,C0302


"Assembly. Court. Prosecutor. Reconsider OTP-CR-117/19."


__version__ = "86"


import atexit
import importlib
import os
import readline
import rlcompleter
import signal
import sys
import termios
import threading
import time
import traceback


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


from genocide.handler import Callback, Command, Event, Handler, parse
from genocide.object import Class, Object, Wd, keys, last, printable, update
from genocide.object import find, fntime, items, save, update
from genocide.handler import command, scan, scandir
from genocide.util import elapsed, wait


from genocide import cmds, irc, model, rss


Wd.workdir = os.path.expanduser("/var/lib/genocide/")


starttime = time.time()


scan(cmds)
scan(irc)
scan(model)
scan(rss)


class CLI(Handler):

    @staticmethod
    def announce(txt):
        CLI.raw(txt)

    @staticmethod
    def raw(txt):
        cprint(txt)

    def say(self, channel, txt):
        self.raw(txt)


def daemon():
    pid = os.fork()
    if pid != 0:
        os._exit(0)
    os.setsid()
    os.umask(0)
    sis = open("/dev/null", 'r')
    sos = open("/dev/null", 'a+')
    ses = open("/dev/null", 'a+')
    os.dup2(sis.fileno(), sys.stdin.fileno())
    os.dup2(sos.fileno(), sys.stdout.fileno())
    os.dup2(ses.fileno(), sys.stderr.fileno())


def ver(event):
    event.reply("GENOCIDE %s" % __version__)


if __name__ == "__main__":
    daemon()
    Command.add(ver)
    irc.init()
    model.init()
    rss.init()
    wait()
