summaryrefslogtreecommitdiffstats
path: root/src/sdk/installerbase.cpp
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2020-02-03 09:45:11 +0200
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2020-02-03 13:45:59 +0000
commit7daa9642fef7e77e1dd564ad22904032de0f89b3 (patch)
tree420cdbd9ee3632d969a4cd67d1c1f2fba9cfcb1b /src/sdk/installerbase.cpp
parentc7524d53054d6051e335b552a54f8ee9d0b16ce0 (diff)
Enable command line default components installation
Add --installDefault option to install components that are set to be checked by default and their respective dependencies. Do not do anything if the component tree does not have anything checked by default. Task-number: QTIFW-1583 Change-Id: I3825c7e797b102a8d6a65ae0e57bfe82fafef5e9 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src/sdk/installerbase.cpp')
-rw-r--r--src/sdk/installerbase.cpp43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/sdk/installerbase.cpp b/src/sdk/installerbase.cpp
index e32b4f127..320a247a2 100644
--- a/src/sdk/installerbase.cpp
+++ b/src/sdk/installerbase.cpp
@@ -345,22 +345,8 @@ int InstallerBase::run()
checkLicense();
m_core->autoRejectMessageBoxes();
if (m_core->isInstaller()) {
- if (parser.isSet(QLatin1String(CommandLineOptions::TargetDir))) {
- const QString &value = parser.value(QLatin1String(CommandLineOptions::TargetDir));
- if (m_core->checkTargetDir(value)) {
- QString targetDirWarning = m_core->targetDirWarning(value);
- if (!targetDirWarning.isEmpty()) {
- qDebug() << m_core->targetDirWarning(value);
- return EXIT_FAILURE;
- }
- m_core->setValue(QLatin1String("TargetDir"), value);
- } else {
- return EXIT_FAILURE;
- }
- } else {
- qWarning() << "Please specify target directory.";
+ if (!setTargetDirFromCommandLine(parser))
return EXIT_FAILURE;
- }
}
QStringList packages;
@@ -368,6 +354,14 @@ int InstallerBase::run()
if (!value.isEmpty())
packages = value.split(QLatin1Char(','), QString::SkipEmptyParts);
m_core->installSelectedComponentsSilently(packages);
+ } else if (parser.isSet(QLatin1String(CommandLineOptions::InstallDefault))) {
+ if (!m_core->isInstaller())
+ throw QInstaller::Error(QLatin1String("Cannot start installer binary as installer."));
+ checkLicense();
+ m_core->autoRejectMessageBoxes();
+ if (!setTargetDirFromCommandLine(parser))
+ return EXIT_FAILURE;
+ m_core->installDefaultComponentsSilently();
} else {
//create the wizard GUI
TabController controller(nullptr);
@@ -451,3 +445,22 @@ void InstallerBase::checkLicense()
throw QInstaller::Error(QLatin1String("No valid license found."));
}
}
+
+bool InstallerBase::setTargetDirFromCommandLine(CommandLineParser &parser)
+{
+ if (parser.isSet(QLatin1String(CommandLineOptions::TargetDir))) {
+ const QString &value = parser.value(QLatin1String(CommandLineOptions::TargetDir));
+ if (m_core->checkTargetDir(value)) {
+ QString targetDirWarning = m_core->targetDirWarning(value);
+ if (!targetDirWarning.isEmpty()) {
+ qDebug() << m_core->targetDirWarning(value);
+ } else {
+ m_core->setValue(QLatin1String("TargetDir"), value);
+ return true;
+ }
+ }
+ } else {
+ qWarning() << "Please specify target directory.";
+ }
+ return false;
+}