X-Git-Url: https://git.armaanb.net/?p=gen-shell.git;a=blobdiff_plain;f=src%2Fmain.cpp;h=a7e95fe751bff9337248f4a3762fde2933c175f0;hp=703f46ace9cfc527e844feb5023a160beacbfb9a;hb=d8afd601de1f0d8afe6eff61d40ff52d21d90fd8;hpb=d6f43cecc51a1596669e7f082ec75167a2553555 diff --git a/src/main.cpp b/src/main.cpp index 703f46a..a7e95fe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #ifdef HAVE_READLINE @@ -33,6 +34,8 @@ #include #endif +//////////////////////////////////////////////////////////////////////////////// + using namespace std; std::string promptCompose(); @@ -67,44 +70,54 @@ const std::string getResponse(const std::string & prompt) { return response; } +//////////////////////////////////////////////////////////////////////////////// + int main(int argc, char** argv) { - int status = 0; - string root_cmd; - for (int i = 1; i < argc; ++i) { - root_cmd +=argv[i]; - root_cmd += " "; - } + // Command line arguments + Sarge sarge; + + sarge.setArgument("h", "help", "Get help.", false); + sarge.setArgument("c", "cmd", "Command to execute before entering the shell", true); + sarge.setDescription("Make a shell from any command"); + sarge.setUsage("gen-shell "); - while (status == 0) { + if (!sarge.parseArguments(argc, argv)) { + std::cerr << "Couldn't parse arguments..." << std::endl; + return 1; + } + + if (sarge.exists("help")) { + sarge.printHelp(); + return 0; + } + + string arg_cmd; + sarge.getFlag("cmd", arg_cmd); + arg_cmd += " "; + + // Main program + while (true) { // Compose the prompt. auto prompt = promptCompose(); // Display prompt, get input. auto command = getResponse(prompt); - int status = 0; if (command != "") { // Dispatch command. - if (command == "") status = 1; + if (command == "") + { + return 0; + } else if (command != "") { - if (argc == 0) { - string whole_command=command; - std::cout << "[" << command << "]\n"; - system (command.c_str ()); - } - else { - string whole_command = root_cmd + " " + command; - // std::cout << "[" << whole_command << "]\n"; - system (whole_command.c_str ()); - } + string whole_command = arg_cmd + command; + system (whole_command.c_str ()); } } - if (status == 1) - return 0; } }