diff options
author | Katja Marttila <katja.marttila@qt.io> | 2024-04-02 15:12:56 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2024-04-05 10:01:49 +0300 |
commit | 5f3ca7366889c6e4cd699df47a6479ce200d6523 (patch) | |
tree | 5fd064edd6fe4690e949a84b921fdd00a7f7c8a2 /src | |
parent | 048705b41d2b4126e318ae3d2955d8501227046b (diff) |
Save used CLI arguments for later usage
Qt Installer will send information to backend if unstable components are
found (e.g. dependency is missing), to better track for problems the CLI
arguments are needed as well. Options which are not defined in installer
are not saved, also option arguments which may contain confident
information are not saved either.
Task-number: QTIFW-3070
Change-Id: Iff5bfad725d1f56b7fb6c501138427ef4c58b5c3
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 16 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 4 | ||||
-rw-r--r-- | src/sdk/commandlineinterface.cpp | 6 | ||||
-rw-r--r-- | src/sdk/installerbase.cpp | 4 |
4 files changed, 27 insertions, 3 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index c9b8da788..509b8a757 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -609,6 +609,22 @@ template bool PackageManagerCore::loadComponentScripts<QList<Component *>>(const template bool PackageManagerCore::loadComponentScripts<QHash<QString, Component *>>(const QHash<QString, Component *> &, const bool); /*! + Saves the installer \a args user has given when running installer. Command and option arguments + are not saved. +*/ +void PackageManagerCore::saveGivenArguments(const QStringList &args) +{ + m_arguments = args; +} + +/*! + Returns the commands and options user has given when running installer. +*/ +QStringList PackageManagerCore::givenArguments() const +{ + return m_arguments; +} +/*! \deprecated [4.5] Use recalculateAllComponents() instead. \sa {installer::componentsToInstallNeedsRecalculation}{installer.componentsToInstallNeedsRecalculation} diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h index 5d093f875..a6d16add7 100644 --- a/src/libs/installer/packagemanagercore.h +++ b/src/libs/installer/packagemanagercore.h @@ -395,6 +395,9 @@ public: template <typename T> bool loadComponentScripts(const T &components, const bool postScript = false); + void saveGivenArguments(const QStringList &args); + QStringList givenArguments() const; + public Q_SLOTS: bool runInstaller(); bool runUninstaller(); @@ -490,6 +493,7 @@ private: QHash<QString, QString> m_fileDialogAutomaticAnswers; QHash<QString, QStringList> m_localVirtualWithDependants; QString m_availableSpaceMessage; + QStringList m_arguments; private: // remove once we deprecate isSelected, setSelected etc... diff --git a/src/sdk/commandlineinterface.cpp b/src/sdk/commandlineinterface.cpp index 673744c8e..f575a8bbe 100644 --- a/src/sdk/commandlineinterface.cpp +++ b/src/sdk/commandlineinterface.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2024 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -63,6 +63,7 @@ bool CommandLineInterface::initialize() return false; } // Filter the arguments list by removing any key=value pair occurrences. + QString command; m_positionalArguments = m_parser.positionalArguments(); foreach (const QString &argument, m_positionalArguments) { if (argument.contains(QLatin1Char('='))) @@ -76,9 +77,10 @@ bool CommandLineInterface::initialize() } else { // Sanity and order of arguments already checked in main(), we should be // quite safe to assume that command is the first positional argument. + command = m_positionalArguments.first(); m_positionalArguments.removeFirst(); } - + m_core->saveGivenArguments(QStringList() << command << m_parser.optionNames()); QString ctrlScript = controlScript(); if (!ctrlScript.isEmpty()) { m_core->controlScriptEngine()->loadInContext( diff --git a/src/sdk/installerbase.cpp b/src/sdk/installerbase.cpp index f9f535ee4..ac2c9d367 100644 --- a/src/sdk/installerbase.cpp +++ b/src/sdk/installerbase.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2023 The Qt Company Ltd. +** Copyright (C) 2024 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -97,6 +97,8 @@ int InstallerBase::run() if (status != QInstaller::PackageManagerCore::Success) return status; + m_core->saveGivenArguments(m_parser.optionNames()); + #ifdef ENABLE_SQUISH if (m_parser.isSet(CommandLineOptions::scSquishPortLong)) { const int maxSquishPortNumber = 65535; |