summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/luac.cc69
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