diff options
author | Katja Marttila <katja.marttila@qt.io> | 2024-03-11 09:00:20 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2024-03-11 14:52:16 +0200 |
commit | 85eb35bdcc702dec04f32f5ddb833de989918226 (patch) | |
tree | cc5acf5e5eb4c275d5ce0eb2d7e6de703ae3ddd0 /src/libs/installer | |
parent | 895855c02c466859ecd981cb1daec485d23b949b (diff) |
Add possibility to add additional license text to CLI
Developer can override productkeycheck, there can be cases that
developer wants to show some additional license text in CLI before accepting
the licenses. The license text can be accepted or rejected by CLI
command Accept/Reject, or by using --accept-licenses switch for
non-interactive acceptance.
Task-number: QTIFW-3319
Change-Id: I60e1ea36cf3f7f98af62c06c2535342003ceb9a6
Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
Diffstat (limited to 'src/libs/installer')
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 24 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.h | 1 | ||||
-rw-r--r-- | src/libs/installer/productkeycheck.cpp | 5 | ||||
-rw-r--r-- | src/libs/installer/productkeycheck.h | 1 |
4 files changed, 31 insertions, 0 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 463c7dd8a..52df38e3c 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -3295,6 +3295,13 @@ bool PackageManagerCorePrivate::acceptLicenseAgreements() const m_core->addLicenseItem(component->licenses()); } + const QString acceptanceText = ProductKeyCheck::instance()->licenseAcceptanceText(); + if (!acceptanceText.isEmpty()) { + qCDebug(QInstaller::lcInstallerInstallLog).noquote() << acceptanceText; + if (!m_autoAcceptLicenses && !acceptRejectCliQuery()) + return false; + } + QHash<QString, QMap<QString, QString>> priorityHash = m_core->sortedLicenses(); QStringList priorities = priorityHash.keys(); priorities.sort(); @@ -3343,6 +3350,23 @@ bool PackageManagerCorePrivate::askUserAcceptLicense(const QString &name, const } } +bool PackageManagerCorePrivate::acceptRejectCliQuery() const +{ + forever { + const QString input = m_core->readConsoleLine(QLatin1String("Accept|Reject")); + + if (QString::compare(input, QLatin1String("Accept"), Qt::CaseInsensitive) == 0 + || QString::compare(input, QLatin1String("A"), Qt::CaseInsensitive) == 0) { + return true; + } else if (QString::compare(input, QLatin1String("Reject"), Qt::CaseInsensitive) == 0 + || QString::compare(input, QLatin1String("R"), Qt::CaseInsensitive) == 0) { + return false; + } else { + qCDebug(QInstaller::lcInstallerInstallLog) << "Unknown answer:" << input; + } + } +} + bool PackageManagerCorePrivate::askUserConfirmCommand() const { qCDebug(QInstaller::lcInstallerInstallLog) << "Do you want to continue?"; diff --git a/src/libs/installer/packagemanagercore_p.h b/src/libs/installer/packagemanagercore_p.h index f10eb28c0..61a7013fd 100644 --- a/src/libs/installer/packagemanagercore_p.h +++ b/src/libs/installer/packagemanagercore_p.h @@ -276,6 +276,7 @@ private: bool calculateComponentsAndRun(); bool acceptLicenseAgreements() const; bool askUserAcceptLicense(const QString &name, const QString &content) const; + bool acceptRejectCliQuery() const; bool askUserConfirmCommand() const; bool packageNeedsUpdate(const LocalPackage &localPackage, const Package *update) const; void commitPendingUnstableComponents(); diff --git a/src/libs/installer/productkeycheck.cpp b/src/libs/installer/productkeycheck.cpp index fc4d18960..576acfde8 100644 --- a/src/libs/installer/productkeycheck.cpp +++ b/src/libs/installer/productkeycheck.cpp @@ -119,3 +119,8 @@ bool ProductKeyCheck::hasAcceptedAllLicenses() const { return true; } + +QString ProductKeyCheck::licenseAcceptanceText() const +{ + return QString(); +} diff --git a/src/libs/installer/productkeycheck.h b/src/libs/installer/productkeycheck.h index aea8d36ef..766eee6e9 100644 --- a/src/libs/installer/productkeycheck.h +++ b/src/libs/installer/productkeycheck.h @@ -71,6 +71,7 @@ public: QList<int> registeredPages() const; bool hasValidLicense() const; bool hasAcceptedAllLicenses() const; + QString licenseAcceptanceText() const; private: ProductKeyCheck(); |