Example #1
0
class doc:
    def __init__(self, username="******", plugin=False, live_debug=False):
        start = time.time()

        self.debug = debug(live_debug=live_debug)

        self.debug.addEvent("Starting DOC...", "SYSTEM")
        self.debug.addEvent("Create Variables...", "SYSTEM")

        # init names
        self.username = username
        self.user = "******" + self.username
        self.plugin = "PLUGIN"
        self.consoleGeneral = "CONSOLE"
        self.system = "SYSTEM"
        self.consoleGeneral = "CONSOLE"
        self.consoleInput = "CONSOLE IN"
        self.consoleOutput = "CONSOLE OUT"

        self.installed = []

        instance = self

        self.debug.addEvent("Create Variables...Finished", self.system)
        self.debug.addEvent("Listener Build...", self.system)

        self.Listener = Listener()
        self.Listener.ConsoleStart()

        self.debug.addEvent("Listener Build... Finished", self.system)
        self.debug.addEvent("Interpret Build...", self.system)
        self.interpret = interpret(instance)
        self.debug.addEvent("Interpret Build... Finished", self.system)

        self.pluginMode = plugin

        if self.pluginMode == True:
            self.sender = self.plugin

        elif __name__ == "system":
            self.sender = self.system

        else:
            self.sender = self.user

        self.debug.addEvent("Starting DOC... Finished", self.system)

        stop = time.time()

        starttime = round((stop - start) * 1000) / 1000

        if starttime < 1:
            starttime = "under 1"

        self.debug.addEvent("DOC started in " + str(starttime) + " second(s)", self.system)

    def getInstance(self):
        return self

    def docprint(self, text, consoleOutput=False):
        text = str(text)
        self.Listener.Print(text=text)
        if consoleOutput:
            self.debug.addEvent("Output: " + text, self.consoleOutput)

        if text == "None":
            pass

        else:
            print(text)

    def docinput(self, placeholder=""):
        # input
        userinput = input(placeholder + "")

        self.Listener.UserInput(self.username, userinput)

        return userinput

    def log(self, command="docinputevent"):
        self.interpret.update()
        self.Listener.ConsoleRun(command=command, sender=self.sender)
        self.debug.addEvent(f"{command}", self.consoleInput)

        if command == "docinputevent":
            line_in = self.docinput(placeholder="[DOC]>>> ")

        else:
            line_in = command

        self.docprint(text=self.interpret.log(line_in), consoleOutput=True)

    def interfaceclient(self):
        pass

    def terminalclient(self):
        self.Listener.TerminalClientStart()

        try:
            while True:
                line_in = self.docinput(placeholder=f"[DOC][{self.username}]>>> ")
                if line_in.lower() != "exit":
                    self.log(line_in.lower())
                    continue

                else:
                    self.Listener.TerminalClientStop(exitCode=200)
                    self.debug.addEvent("Console Exited", self.consoleGeneral)
                    break

        except KeyboardInterrupt as e:
            self.debug.addEvent("Console Exited", self.consoleGeneral)

    def installPackage(self, packageName):
        path = f"plugins/{packageName}"
        self.Listener.PluginInstall(packageName, path)
        self.debug.addEvent("Install Package " + packageName + " from " + path, self.plugin)
        exec(f"import plugins.{packageName}.Main as {packageName}")

    def getPluginCommands(self):
        return self.PluginCommands