]> Some of my projects - localmylist.git/commitdiff
Allow scripts run by runscript to access cli arguments via the arg variable
authorAPTX <marek321@gmail.com>
Mon, 30 Jul 2012 23:51:58 +0000 (01:51 +0200)
committerAPTX <marek321@gmail.com>
Mon, 30 Jul 2012 23:51:58 +0000 (01:51 +0200)
runscript/main.cpp

index 7b92a5ec75a99c0b9bfea21a0ba637db15626c89..da3d71cdb3eb3ea2b862062a57fda9bd9aea643b 100644 (file)
@@ -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()) {