diff options
author | Martin Kampas <martin.kampas@jolla.com> | 2016-10-03 08:23:36 +0200 |
---|---|---|
committer | Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com> | 2016-10-07 07:01:53 +0000 |
commit | 7d748075a5dbf1fef4a8867820012229e94f1e44 (patch) | |
tree | 8d646b1bee4cbbc2de1e4b20b09e11e6a4888614 | |
parent | 6acad43474d2010a724c59a9005a165ee70302cf (diff) |
Bench: Add --noremote option
Change-Id: I460d3257780c0b3230d01c41971628edc6e0f399
Reviewed-by: Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>
-rw-r--r-- | src/bench/main.cpp | 17 | ||||
-rw-r--r-- | src/bench/options.cpp | 11 | ||||
-rw-r--r-- | src/bench/options.h | 4 |
3 files changed, 30 insertions, 2 deletions
diff --git a/src/bench/main.cpp b/src/bench/main.cpp index 438b438..651b83b 100644 --- a/src/bench/main.cpp +++ b/src/bench/main.cpp @@ -86,7 +86,10 @@ Application *Application::create(int &argc, char **argv) setOrganizationDomain(QLatin1String(QMLLIVE_ORGANIZATION_DOMAIN)); setOrganizationName(QLatin1String(QMLLIVE_ORGANIZATION_NAME)); - if (isMaster()) + // Workaround: Cannot use QCoreApplication::arguments before app is instantiated + const bool hasNoRemoteOption = argc >= 2 && QString::fromLocal8Bit(argv[1]) == QLatin1String("--noremote"); + + if (hasNoRemoteOption || isMaster()) return new MasterApplication(argc, argv); else return new SlaveApplication(argc, argv); @@ -187,12 +190,21 @@ void Application::parseArguments(const QStringList &arguments, Options *options) parser.addOption(addHostOption); QCommandLineOption rmHostOption("rmhost", "remove remote host configuration and exit", "name"); parser.addOption(rmHostOption); + QCommandLineOption noRemoteOption("noremote", "do not try to talk to a running bench, do not listen for remote " + "connections. It MUST BE the VERY FIRST argument on command line."); + parser.addOption(noRemoteOption); QCommandLineOption remoteOnlyOption("remoteonly", "talk to a running bench, do nothing if none is running."); parser.addOption(remoteOnlyOption); parser.process(arguments); + options->setNoRemote(parser.isSet(noRemoteOption)); options->setRemoteOnly(parser.isSet(remoteOnlyOption)); + if (options->noRemote() && options->remoteOnly()) { + qWarning() << "Options --noremote and --remoteonly cannot be used together"; + parser.showHelp(-1); + } + options->setPluginPath(parser.value(pluginPathOption)); options->setImportPaths(parser.values(importPathOption)); options->setStayOnTop(parser.isSet(stayOnTopOption)); @@ -284,7 +296,8 @@ MasterApplication::MasterApplication(int &argc, char **argv) } else { m_window->init(); m_window->show(); - listenForArguments(); + if (!options.noRemote()) + listenForArguments(); } } diff --git a/src/bench/options.cpp b/src/bench/options.cpp index d885497..054022f 100644 --- a/src/bench/options.cpp +++ b/src/bench/options.cpp @@ -33,6 +33,7 @@ Options::Options(QObject *parent) : QObject(parent) + , m_noRemote(false) , m_remoteOnly(false) , m_stayOnTop(false) { @@ -50,6 +51,16 @@ bool Options::hasNoninteractiveOptions() const return false; } +bool Options::noRemote() const +{ + return m_noRemote; +} + +void Options::setNoRemote(bool noRemote) +{ + m_noRemote = noRemote; +} + bool Options::remoteOnly() const { return m_remoteOnly; diff --git a/src/bench/options.h b/src/bench/options.h index f62a93d..781abb1 100644 --- a/src/bench/options.h +++ b/src/bench/options.h @@ -49,6 +49,9 @@ public: bool hasNoninteractiveOptions() const; + bool noRemote() const; + void setNoRemote(bool noRemote); + bool remoteOnly() const; void setRemoteOnly(bool remoteOnly); @@ -76,6 +79,7 @@ public: void setHostsToRemove(const QStringList &hostNames); private: + bool m_noRemote; bool m_remoteOnly; QString m_activeDocument; QString m_workspace; |