14 // ////////////////////////////////////////////////////////////////////////// //
15 void main (string
[] args
) {
16 bool dumpFileNames
= false;
17 bool doScripts
= true;
18 bool doActions
= true;
19 bool measureTime
= false;
25 foreach (string fname
; args
[1..$]) {
31 if (fname
.length
== 0) continue;
32 if (fname
== "--") { nomore
= true; continue; }
33 if (fname
== "-d") { dumpFileNames
= true; continue; }
34 if (fname
== "-S") { doScripts
= false; continue; }
35 if (fname
== "-A") { doActions
= false; continue; }
36 if (fname
== "--time") { measureTime
= true; continue; }
37 if (fname
[0] == '@') {
38 if (fname
.length
< 2) assert(0, "gmk file?");
39 auto gmk
= new Gmk(fname
[1..$]);
40 funcs
~= gmkLoadScripts(gmk
, doScripts
:doScripts
, doActions
:doActions
, warnings
:false, checkReturns
:false);
44 foreach (auto de; dirEntries(fname
, "*.gm[lx]", SpanMode
.breadth
)) {
46 foreach (auto pt
; pathSplitter(de.dirName
)) {
47 if (pt
.length
&& pt
[0] == '_') { doit
= false; break; }
50 if (dumpFileNames
) { import std
.stdio
; writeln("loading '", de.name
, "'..."); }
51 funcs
~= loadScript(de.name
, false);
55 if (dumpFileNames
) { import std
.stdio
; writeln("loading '", fname
, "'..."); }
56 funcs
~= loadScript(fname
, false);
61 if (funcs
.length
> 0) {
64 writeln(funcs
.length
, " function", (funcs
.length
> 1 ?
"s" : ""), " parsed");
65 foreach (auto fn
; funcs
) {
68 if (measureTime
) writeln("executing...");
69 auto stt
= MonoTime
.currTime
;
70 auto res
= vm
.exec("ack", 3, 7);
71 auto dur
= (MonoTime
.currTime
-stt
).total
!"msecs";
73 if (measureTime
) writeln("total execution took ", dur
, " milliseconds");