]> Some of my projects - localmylist.git/commitdiff
Add new tool to run scripts
authorAPTX <marek321@gmail.com>
Sun, 15 Jul 2012 21:13:28 +0000 (23:13 +0200)
committerAPTX <marek321@gmail.com>
Sun, 15 Jul 2012 21:13:28 +0000 (23:13 +0200)
localmylist.pro
runscript/main.cpp [new file with mode: 0644]
runscript/runscript.pro [new file with mode: 0644]

index 730cfab394758fa2ac9522ffe2c5231a3f595d80..b8fa94332b0cc7086da834e71731bcdb1ee165ab 100644 (file)
@@ -21,4 +21,8 @@ SUBDIRS += localmylist
        SUBDIRS += import-titles \
                import-mylist \
                play-next
+
+       !noscript {
+               SUBDIRS += runscript
+       }
 }
diff --git a/runscript/main.cpp b/runscript/main.cpp
new file mode 100644 (file)
index 0000000..7b92a5e
--- /dev/null
@@ -0,0 +1,71 @@
+#include <QtCore/QCoreApplication>
+
+#include <QFile>
+#include <QStringList>
+#include <QTextStream>
+#include <QProcess>
+
+#include "mylist.h"
+#include "database.h"
+#include "scriptable.h"
+
+#include <QDebug>
+
+using namespace LocalMyList;
+
+int main(int argc, char *argv[])
+{
+       QCoreApplication a(argc, argv);
+       QTextStream cout(stdout);
+       if (a.arguments().count() < 2)
+       {
+               cout << "Usage: " << a.arguments()[0] << " FILE" << endl;
+               cout << "       " << a.arguments()[0] << " -e SCRIPT" << endl;
+               return 1;
+       }
+
+       LocalMyList::instance()->loadLocalSettings();
+       if (!LocalMyList::instance()->database()->connect())
+       {
+               cout << "Could not connect to database.";
+               return 1;
+       }
+
+       QStringList args = a.arguments();
+       args.removeFirst();
+
+       QString script;
+
+       if (args.first() == "-e")
+       {
+               args.removeFirst();
+               script = args.join(QChar(' '));
+       }
+       else
+       {
+               QFile file(args.first());
+
+               if (!file.open(QIODevice::ReadOnly))
+               {
+                       cout << "Failed to open file for reading." << endl;
+                       return 1;
+               }
+               script = file.readAll();
+               file.close();
+       }
+
+       QScriptEngine engine;
+       LocalMyList::registerTypes(&engine);
+
+       engine.globalObject().setProperty("mylist", engine.newQObject(MyList::instance()));
+       engine.globalObject().setProperty("db", engine.newQObject(MyList::instance()->database()));
+
+       QScriptValue result = engine.evaluate(script);
+       if (engine.hasUncaughtException()) {
+               int lineNo = engine.uncaughtExceptionLineNumber();
+               qWarning() << "line" << lineNo << ":" << result.toString();
+               return 1;
+       }
+       cout << result.toString() << endl;
+       return 0;
+}
diff --git a/runscript/runscript.pro b/runscript/runscript.pro
new file mode 100644 (file)
index 0000000..bd09e23
--- /dev/null
@@ -0,0 +1,21 @@
+QT       += core script
+QT       -= gui
+
+include(../config.pri)
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = runscript
+DESTDIR = ../build
+CONFIG   += console
+CONFIG   -= app_bundle
+
+TEMPLATE = app
+
+
+SOURCES += main.cpp
+
+include(../localmylist.pri)
+
+target.path = $${PREFIX}/bin
+INSTALLS += target