X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=src%2Fmain.cpp;h=a7e95fe751bff9337248f4a3762fde2933c175f0;hb=d8afd601de1f0d8afe6eff61d40ff52d21d90fd8;hp=5849c28dbd17cc8cf132fb8606cc412420e288da;hpb=7e910e686c101122fbdf8a463e370d2bc703a5d6;p=gen-shell.git diff --git a/src/main.cpp b/src/main.cpp index 5849c28..a7e95fe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,18 +26,16 @@ #include #include -#include -#include -#include -#include +#include #include -#include #ifdef HAVE_READLINE #include #include #endif +//////////////////////////////////////////////////////////////////////////////// + using namespace std; std::string promptCompose(); @@ -72,43 +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]; - } + // 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; } }