-////////////////////////////////////////////////////////////////////////////////
-static int commandLoop (bool autoClear)
-{
- // Compose the prompt.
- auto prompt = promptCompose ();
-
- // Display prompt, get input.
- auto command = getResponse (prompt);
-
- // Obey Taskwarrior's rc.tasksh.autoclear.
- if (autoClear)
- std::cout << "\033[2J\033[0;0H";
-
- int status = 0;
- if (! isatty (fileno (stdin)) && command == "")
- {
- status = -1;
- }
- else if (command != "")
- {
- auto args = split (command, ' ');
-
- // Dispatch command.
- if (args[0] == "<EOF>") status = -1;
- else if (closeEnough ("exit", args[0], 3)) status = -1;
- else if (closeEnough ("quit", args[0], 3)) status = -1;
- else if (closeEnough ("help", args[0], 3)) status = cmdHelp ();
- else if (closeEnough ("diagnostics", args[0], 3)) status = cmdDiagnostics ();
- // else if (closeEnough ("review", args[0], 3)) status = cmdReview (args, autoClear);
- else if (closeEnough ("exec", args[0], 3) ||
- args[0][0] == '!') status = cmdShell (args);
- else if (command != "")
- {
- command = "task " + command;
- std::cout << "[" << command << "]\n";
- system (command.c_str ());
-
- // Deliberately ignoreѕ taskwarrior exit status, otherwise empty filters
- // cause the shell to terminate.
- }
- }
-
- return status;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-int main (int argc, const char** argv)