summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libs/installer/utils.cpp21
-rw-r--r--src/libs/installer/utils.h5
-rw-r--r--src/sdk/main.cpp34
3 files changed, 45 insertions, 15 deletions
diff --git a/src/libs/installer/utils.cpp b/src/libs/installer/utils.cpp
index d47caea89..e3a18100b 100644
--- a/src/libs/installer/utils.cpp
+++ b/src/libs/installer/utils.cpp
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -183,6 +183,23 @@ uint QInstaller::verboseLevel()
}
/*!
+ Returns a list of mutually exclusive options passed to the \a parser, if there is
+ at least one mutually exclusive pair of options set. Otherwise returns an empty
+ \c QStringList. The options considered mutual are provided with \a options.
+*/
+QStringList QInstaller::checkMutualOptions(CommandLineParser &parser, const QStringList &options)
+{
+ QStringList mutual;
+ foreach (const QString &option, options) {
+ if (parser.isSet(option))
+ mutual << option;
+ }
+ return mutual.count() > 1
+ ? mutual
+ : QStringList();
+}
+
+/*!
\internal
*/
std::ostream &QInstaller::operator<<(std::ostream &os, const QString &string)
@@ -512,5 +529,3 @@ QString QInstaller::windowsErrorString(int errorCode)
}
#endif
-
-
diff --git a/src/libs/installer/utils.h b/src/libs/installer/utils.h
index 74cc4917c..055f5cc0f 100644
--- a/src/libs/installer/utils.h
+++ b/src/libs/installer/utils.h
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -30,6 +30,7 @@
#define QINSTALLER_UTILS_H
#include "installer_global.h"
+#include "commandlineparser.h"
#include <QtCore/QBuffer>
#include <QtCore/QCryptographicHash>
@@ -66,6 +67,8 @@ namespace QInstaller {
bool INSTALLER_EXPORT isVerbose();
uint INSTALLER_EXPORT verboseLevel();
+ QStringList INSTALLER_EXPORT checkMutualOptions(CommandLineParser &parser, const QStringList &options);
+
INSTALLER_EXPORT std::ostream& operator<<(std::ostream &os, const QString &string);
class INSTALLER_EXPORT VerboseWriterOutput
diff --git a/src/sdk/main.cpp b/src/sdk/main.cpp
index ee4f9d74a..9b425bc98 100644
--- a/src/sdk/main.cpp
+++ b/src/sdk/main.cpp
@@ -85,17 +85,29 @@ int main(int argc, char *argv[])
QString sanityMessage;
QStringList mutually;
- if (parser.isSet(CommandLineOptions::scStartUpdaterLong))
- mutually << CommandLineOptions::scStartUpdaterLong;
- if (parser.isSet(CommandLineOptions::scStartPackageManagerLong))
- mutually << CommandLineOptions::scStartPackageManagerLong;
- if (parser.isSet(CommandLineOptions::scStartUninstallerLong))
- mutually << CommandLineOptions::scStartUninstallerLong;
- // IFW 3.x.x style --updater option support provided for backward compatibility
- if (parser.isSet(CommandLineOptions::scDeprecatedUpdater))
- mutually << CommandLineOptions::scDeprecatedUpdater;
-
- if (mutually.count() > 1) {
+ mutually = QInstaller::checkMutualOptions(parser, QStringList()
+ << CommandLineOptions::scStartUpdaterLong
+ << CommandLineOptions::scStartPackageManagerLong
+ << CommandLineOptions::scStartUninstallerLong
+ << CommandLineOptions::scDeprecatedUpdater);
+
+ if (mutually.isEmpty()) {
+ mutually = QInstaller::checkMutualOptions(parser, QStringList()
+ << CommandLineOptions::scSystemProxyLong
+ << CommandLineOptions::scNoProxyLong);
+ }
+ if (mutually.isEmpty()) {
+ mutually = QInstaller::checkMutualOptions(parser, QStringList()
+ << CommandLineOptions::scAcceptMessageQuery
+ << CommandLineOptions::scRejectMessageQuery
+ << CommandLineOptions::scMessageDefaultAnswer);
+ }
+ if (mutually.isEmpty()) {
+ mutually = QInstaller::checkMutualOptions(parser, QStringList()
+ << CommandLineOptions::scStartServerLong
+ << CommandLineOptions::scStartClientLong);
+ }
+ if (!mutually.isEmpty()) {
sanityMessage = QString::fromLatin1("The following options are mutually exclusive: %1.")
.arg(mutually.join(QLatin1String(", ")));
sanityCheck = false;