From cdd8d32783040a7931f7194b61900e3ca291e8ec Mon Sep 17 00:00:00 2001 From: APTX Date: Tue, 31 Jul 2012 01:51:58 +0200 Subject: [PATCH] Allow scripts run by runscript to access cli arguments via the arg variable --- runscript/main.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/runscript/main.cpp b/runscript/main.cpp index 7b92a5e..da3d71c 100644 --- a/runscript/main.cpp +++ b/runscript/main.cpp @@ -19,8 +19,8 @@ int main(int argc, char *argv[]) QTextStream cout(stdout); if (a.arguments().count() < 2) { - cout << "Usage: " << a.arguments()[0] << " FILE" << endl; - cout << " " << a.arguments()[0] << " -e SCRIPT" << endl; + cout << "Usage: " << a.arguments()[0] << " FILE [ARGS...]" << endl; + cout << " " << a.arguments()[0] << " -e SCRIPT [-- ARGS...]" << endl; return 1; } @@ -39,7 +39,17 @@ int main(int argc, char *argv[]) if (args.first() == "-e") { args.removeFirst(); - script = args.join(QChar(' ')); + + QStringList scriptParts; + + while (!args.isEmpty()) + { + QString part = args.takeFirst(); + if (part == "--") + break; + scriptParts << part; + } + script = scriptParts.join(QChar(' ')); } else { @@ -52,6 +62,8 @@ int main(int argc, char *argv[]) } script = file.readAll(); file.close(); + args.removeFirst(); + } QScriptEngine engine; @@ -59,6 +71,7 @@ int main(int argc, char *argv[]) engine.globalObject().setProperty("mylist", engine.newQObject(MyList::instance())); engine.globalObject().setProperty("db", engine.newQObject(MyList::instance()->database())); + engine.globalObject().setProperty("arg", qScriptValueFromSequence(&engine, args)); QScriptValue result = engine.evaluate(script); if (engine.hasUncaughtException()) { -- 2.52.0