From: APTX Date: Sun, 15 Jul 2012 21:13:28 +0000 (+0200) Subject: Add new tool to run scripts X-Git-Url: https://gitweb.tyo.aptx.org/?a=commitdiff_plain;h=3aeba872a56807857134106fcb59f0940f921c7e;p=localmylist.git Add new tool to run scripts --- diff --git a/localmylist.pro b/localmylist.pro index 730cfab..b8fa943 100644 --- a/localmylist.pro +++ b/localmylist.pro @@ -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 index 0000000..7b92a5e --- /dev/null +++ b/runscript/main.cpp @@ -0,0 +1,71 @@ +#include + +#include +#include +#include +#include + +#include "mylist.h" +#include "database.h" +#include "scriptable.h" + +#include + +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 index 0000000..bd09e23 --- /dev/null +++ b/runscript/runscript.pro @@ -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