module command.cli;

version(cli) {
    import command : gCommandInterpreter;
    import deimos.linenoise;
    import std..string;
    import std.stdio;
    import core.thread;

    /+ default parser +/
    class CommandReaderThread : Thread {
        __gshared bool terminate;
        this() {
            super(&run);
        }

    package:
        void run() {
            char* line;
            import core.stdc..string, core.stdc.stdlib;
            while (!terminate && (line = linenoise("> ")) !is null) {
                if (line[0] != '\0') {
                    linenoiseHistoryAdd(line);
                    gCommandInterpreter.interpret(line.fromStringz.idup);
                }
                free(line);
            }
        }
    }
}