globaldata = GlobalData::getInstance();
globaldata->argv = path;
-
- system("clear");
}
/***********************************************************************/
-InteractEngine::~InteractEngine(){
- }
+InteractEngine::~InteractEngine(){}
/***********************************************************************/
//This function allows the user to input commands one line at a time until they quit.
mothurOutEndLine();
mothurOut("mothur > ");
+
+ //get input char by char so you can check for use of arrow keys
+ //if (_kbhit()){
+ // _getch(); // edit : if you want to check the arrow-keys you must call getch twice because special-keys have two values
+ // return _getch();
+ //}
+ //return 0; // if no key is pressed
+ //setbuf(stdin, NULL); //no buffering
+/*if(ch==0)
+{
+ch=getch();
+if(ch==72) cout<<"up";
+else if(ch==75) cout<<"left";
+else if(ch==77) cout<<"right";
+else if(ch==80) cout<<"down";
+cout<<endl;
+}
+else break;
+}
+delay(2000);
+return 0;
+}*/
+
+ //int letter = 0;
+ //while ((letter != 10) && (letter != 13)) {
+ // letter = getch();
+
+ // cout << "char code = " << letter << endl;
+
+ // input += char(letter);
+ //}
+ // input = input.substr(0, input.length()-1); //cut off newline char
+
+ //cout << input << endl;
+
getline(cin, input);
if (cin.eof()) { input = "quit()"; }
+ //save command
+ //previousInputs.push_back(input);
+
mothurOutJustToLog(input);
mothurOutEndLine();
CommandOptionParser parser(input);
commandName = parser.getCommandString();
+ //cout << " command = " << commandName << endl;
options = parser.getOptionString();
if (commandName != "") {
//executes valid command
- CommandFactory cFactory;
- Command* command = cFactory.getCommand(commandName, options);
+ Command* command = cFactory->getCommand(commandName, options);
quitCommandCalled = command->execute();
}else {
exit(1);
}
}
-
+/***********************************************************************/
+void Engine::terminateCommand(int dummy) {
+ try {
+ mothurOut("Stopping command."); mothurOutEndLine();
+ cFactory->getCommand(); //terminates command
+ }
+ catch(exception& e) {
+ errorOut(e, "InteractEngine", "terminateCommand");
+ exit(1);
+ }
+}
/***********************************************************************/
//This function opens the batchfile to be used by BatchEngine::getInput.
BatchEngine::BatchEngine(string path, string batchFileName){
openedBatch = openInputFile(batchFileName, inputBatchFile);
globaldata->argv = path;
- system("clear");
-
- // char buffer = ' ';
- // ifstream header("introtext.txt");
- // while(!header.eof()){
- // cout << buffer;
- // buffer = header.get();
- // }
}
catch(exception& e) {
errorOut(e, "BatchEngine", "BatchEngine");
/***********************************************************************/
-BatchEngine::~BatchEngine(){
- }
+BatchEngine::~BatchEngine(){ }
/***********************************************************************/
//This Function allows the user to run a batchfile containing several commands on Dotur
while(quitCommandCalled == 0){
if (inputBatchFile.eof()) { input = "quit()"; }
- else { getline(inputBatchFile, input); }
-
-
+ else { input = getline(inputBatchFile); }
if (input[0] != '#') {
if (commandName != "") {
//executes valid command
- CommandFactory cFactory;
- Command* command = cFactory.getCommand(commandName, options);
+ Command* command = cFactory->getCommand(commandName, options);
quitCommandCalled = command->execute();
}else {
mothurOut("Invalid.");
globaldata->argv = path;
- system("clear");
-
}
catch(exception& e) {
errorOut(e, "ScriptEngine", "ScriptEngine");
/***********************************************************************/
-ScriptEngine::~ScriptEngine(){
- }
+ScriptEngine::~ScriptEngine(){ }
/***********************************************************************/
//This Function allows the user to run a batchfile containing several commands on mothur
if (commandName != "") {
//executes valid command
- CommandFactory cFactory;
- Command* command = cFactory.getCommand(commandName, options);
+ Command* command = cFactory->getCommand(commandName, options);
quitCommandCalled = command->execute();
}else {
mothurOut("Invalid.");
string ScriptEngine::getNextCommand(string& commandString) {
try {
string nextcommand = "";
+ int count = 0;
- nextcommand = commandString.substr(0,commandString.find_first_of(';'));
-
+ //go through string until you reach ; or end
+ while (count < commandString.length()) {
+
+ if (commandString[count] == ';') { break; }
+ else { nextcommand += commandString[count]; }
+
+ count++;
+ }
+
+ //if you are not at the end
+ if (count != commandString.length()) { commandString = commandString.substr(count+1, commandString.length()); }
+ else { commandString = ""; }
- if ((commandString.find_first_of(';')+1) <= commandString.length()) {
- commandString = commandString.substr(commandString.find_first_of(';')+1, commandString.length());
- }else { commandString = ""; } //you have reached the last command.
//get rid of spaces in between commands if any
if (commandString.length() > 0) {