--- /dev/null
+#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;
+}