#!/usr/bin/env python3
# This file is placed in the Public Domain.
# pylint: disable=C0413,W0212,E0401


"main"


import os
import readline
import sys
import termios
import time


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


from rssbot.cfg   import Config
from rssbot.defer import errors
from rssbot.disk  import Persist, skel
from rssbot.main  import cmnd, enable, init, scan
from rssbot.parse import parse
from rssbot.term  import Console
from rssbot.utils import forever, modnames


from rssbot import modules
from rssbot import user


if os.path.exists("mods"):
    import mods as MODS
else:
    MODS = None


Cfg         = Config()
Cfg.dis     = ""
Cfg.mod     = "cmd,mod,thr,err"
Cfg.opts    = ""
Cfg.name    = "rssbot"
Cfg.wdr     = os.path.expanduser(f"~/.{Cfg.name}")
Cfg.pidfile = os.path.join(Cfg.wdr, f"{Cfg.name}.pid")


Persist.workdir = Cfg.wdr


def wrap(func):
    "reset terminal."
    old3 = None
    try:
        old3 = termios.tcgetattr(sys.stdin.fileno())
    except termios.error:
        pass
    try:
        func()
    except (KeyboardInterrupt, EOFError):
        print("")
    finally:
        if old3:
            termios.tcsetattr(sys.stdin.fileno(), termios.TCSADRAIN, old3)
    errors()


def main():
    "main"
    parse(Cfg, " ".join(sys.argv[1:]))
    Cfg.dis = Cfg.sets.dis
    Cfg.mod += "," + ",".join(modnames(modules, user, MODS))
    readline.redisplay()
    enable(print)
    skel()
    if "v" in Cfg.opts:
        dte = " ".join(time.ctime(time.time()).replace("  ", " ").split()[1:])
        modiess = ",".join([x.upper() for x in modnames(modules, user, MODS)])
        print(f'{dte} {Cfg.name.upper()} {Cfg.opts.upper()} {modiess}'.replace("  ", " "))
    scan(Cfg.mod, modules, user, MODS)
    csl = Console(print, input)
    if "i" in Cfg.opts:
        init(Cfg.mod, modules, user, MODS)
    csl.start()
    cmnd(Cfg.otxt, print)
    forever()


if __name__ == "__main__":
    wrap(main)
