diff options
author | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2020-06-09 10:52:51 +0300 |
---|---|---|
committer | Arttu Tarkiainen <arttu.tarkiainen@qt.io> | 2020-08-21 10:56:00 +0300 |
commit | f2ab63396c1f101216b2c6ade37528492e464785 (patch) | |
tree | 6aeceb76196b453d8a999ddf2d4e8b0d1dc43aef /src/libs/installer/packagemanagercore_p.cpp | |
parent | 190b643736d7fa3270dca5926e018d6eef6d74cb (diff) |
CLI: Ask user confirmation before performing installer actions
Also add new option --confirm-command to skip the interactive query.
Task-number: QTIFW-1834
Change-Id: I1c63fd990431c792a523da7047637f54b193bee6
Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src/libs/installer/packagemanagercore_p.cpp')
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 89be5d907..6b5c4683f 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -222,6 +222,7 @@ PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core) , m_checkAvailableSpace(true) , m_autoAcceptLicenses(false) , m_disableWriteMaintenanceTool(false) + , m_autoConfirmCommand(false) { } @@ -259,6 +260,7 @@ PackageManagerCorePrivate::PackageManagerCorePrivate(PackageManagerCore *core, q , m_checkAvailableSpace(true) , m_autoAcceptLicenses(false) , m_disableWriteMaintenanceTool(false) + , m_autoConfirmCommand(false) { foreach (const OperationBlob &operation, performedOperations) { QScopedPointer<QInstaller::Operation> op(KDUpdater::UpdateOperationFactory::instance() @@ -2548,7 +2550,9 @@ bool PackageManagerCorePrivate::calculateComponentsAndRun() qCDebug(QInstaller::lcInstallerInstallLog) << "Installation canceled."; } else if (componentsOk && acceptLicenseAgreements()) { qCDebug(QInstaller::lcInstallerInstallLog).noquote() << htmlToString(htmlOutput); - if (m_core->run()) { + if (!(m_autoConfirmCommand || askUserConfirmCommand())) { + qCDebug(QInstaller::lcInstallerInstallLog) << "Installation aborted."; + } else if (m_core->run()) { // Write maintenance tool if required m_core->writeMaintenanceTool(); return true; @@ -2592,11 +2596,7 @@ bool PackageManagerCorePrivate::askUserAcceptLicense(const QString &name, const "before continuing with the installation:" << name; forever { - qCDebug(QInstaller::lcInstallerInstallLog) << "Accept|Reject|Show"; - - QTextStream stream(stdin); - QString input; - stream.readLineInto(&input); + const QString input = m_core->readConsoleLine(QLatin1String("Accept|Reject|Show")); if (QString::compare(input, QLatin1String("Accept"), Qt::CaseInsensitive) == 0 || QString::compare(input, QLatin1String("A"), Qt::CaseInsensitive) == 0) { @@ -2658,4 +2658,23 @@ void PackageManagerCorePrivate::printLocalPackageInformation(const KDUpdater::Lo qCDebug(QInstaller::lcPackageUpdateDate).noquote() << "\tLast updated:" << package.lastUpdateDate; } +bool PackageManagerCorePrivate::askUserConfirmCommand() const +{ + qCDebug(QInstaller::lcInstallerInstallLog) << "Do you want to continue?"; + + forever { + const QString input = m_core->readConsoleLine(QLatin1String("Yes|No")); + + if (QString::compare(input, QLatin1String("Yes"), Qt::CaseInsensitive) == 0 + || QString::compare(input, QLatin1String("Y"), Qt::CaseInsensitive) == 0) { + return true; + } else if (QString::compare(input, QLatin1String("No"), Qt::CaseInsensitive) == 0 + || QString::compare(input, QLatin1String("N"), Qt::CaseInsensitive) == 0) { + return false; + } else { + qCDebug(QInstaller::lcInstallerInstallLog) << "Unknown answer:" << input; + } + } +} + } // namespace QInstaller |