diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/luac.cc | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/luac.cc b/src/luac.cc new file mode 100644 index 0000000..882d41a --- /dev/null +++ b/src/luac.cc @@ -0,0 +1,69 @@ +#include <getopt.h> + +#include <BLua.h> +#include <Main.h> +#include <Input.h> +#include <Output.h> + +struct option long_options[] = { + {"help", 0, NULL, 'h'}, + {"verbose", 0, NULL, 'v'}, + {"output", 1, NULL, 'o'}, + {"debug", 0, NULL, 'd'}, + {0, 0, NULL, 0 } +}; + +CODE_BEGINS +void showhelp() { + printm(M_BARE, +"Usage:\n" +"%s [options] [lua-script1] [lua-script2] ...\n" +"\n" +"Options:\n" +" -v sets verbosity.\n" +" -d sets debug mode.\n" +" -o <file> set output filename.\n" +, argv[0]); + +} + +virtual int startup() throw (GeneralException) { + Lua * L = new Lua(); + bool strip = true; + char * output = "a.clua"; + bool todo; + + while ((c = getopt_long(argc, argv, "Hhvo:d", long_options, NULL)) != EOF) { + case 'h': + case 'H': + case '?': + showhelp(); + return 0; + case 'v': + verbosity = M_INFO; + break; + case 'o': + output = strdup(optarg); + break; + case 'd': + strip = false; + break; + } + + /* Loading all the scripts */ + while (optind < argc) { + todo = true; + L->load(&Input(argv[optind++]), false); + } + + /* Doh... */ + if (!todo) { + showhelp(); + return 0; + } + + L->dump(&Output(output), strip); + + return 0; +} +CODE_ENDS |