#!/usr/bin/env python3
# This file is placed in the Public Domain.
# pylint: disable=C,I,R,W0611,W0212,E0401
# ruff: noqa: E402


"prompt"


import os
import readline
import sys
import termios


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


from nixt.face import Console
from nixt.face import cmnd, config, enable, forever, modnames, parse
from nixt.face import errors, scan


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


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


def main():
    "main"
    cfg = config()
    parse(cfg, " ".join(sys.argv[1:]))
    cfg.dis = cfg.sets.dis
    enable(print)
    from nixt.modules import all as modules
    mods = modnames(modules, MODS)
    cfg.mod = ",".join(mods)
    if cfg.dis:
        cfg.mod = ",".join(set(modules) - set(spl(cfg.dis)))
    scan(cfg.mod, modules, MODS)
    csl = Console(print, input)
    if "i" in cfg.opts:
        init(cfg.mod, modules, MODS)
    if cfg.otxt:
        return cmnd(cfg.otxt, print)
    csl.start()
    cmnd(cfg.otxt, print)
    forever()


if __name__ == "__main__":
    wrap(main)
    errors()
    os._exit(0)
