diff options
Diffstat (limited to 'src/sdk')
-rw-r--r-- | src/sdk/commandlineinterface.cpp | 17 | ||||
-rw-r--r-- | src/sdk/commandlineinterface.h | 1 | ||||
-rw-r--r-- | src/sdk/main.cpp | 3 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/sdk/commandlineinterface.cpp b/src/sdk/commandlineinterface.cpp index de9332b35..f64f41834 100644 --- a/src/sdk/commandlineinterface.cpp +++ b/src/sdk/commandlineinterface.cpp @@ -193,6 +193,23 @@ int CommandLineInterface::uninstallPackages() } } +int CommandLineInterface::removeInstallation() +{ + if (!initialize()) + return EXIT_FAILURE; + if (m_core->isInstaller()) { + qCWarning(QInstaller::lcInstallerInstallLog) << "Cannot uninstall packages with installer."; + return EXIT_FAILURE; + } + m_core->setUninstaller(); + try { + return m_core->removeInstallationSilently() ? EXIT_SUCCESS : EXIT_FAILURE; + } catch (const QInstaller::Error &err) { + qCCritical(QInstaller::lcInstallerInstallLog) << err.message(); + return EXIT_FAILURE; + } +} + bool CommandLineInterface::checkLicense() { const ProductKeyCheck *const productKeyCheck = ProductKeyCheck::instance(); diff --git a/src/sdk/commandlineinterface.h b/src/sdk/commandlineinterface.h index efdbb54c8..7b5053253 100644 --- a/src/sdk/commandlineinterface.h +++ b/src/sdk/commandlineinterface.h @@ -44,6 +44,7 @@ public: int updatePackages(); int installPackages(); int uninstallPackages(); + int removeInstallation(); private: bool initialize(); diff --git a/src/sdk/main.cpp b/src/sdk/main.cpp index b6f2209ed..70214a9c5 100644 --- a/src/sdk/main.cpp +++ b/src/sdk/main.cpp @@ -244,6 +244,9 @@ int main(int argc, char *argv[]) } else if (parser.positionalArguments().contains(CommandLineOptions::scRemoveShort) || parser.positionalArguments().contains(CommandLineOptions::scRemoveLong)){ return CommandLineInterface(argc, argv).uninstallPackages(); + } else if (parser.positionalArguments().contains(CommandLineOptions::scPurgeShort) + || parser.positionalArguments().contains(CommandLineOptions::scPurgeLong)){ + return CommandLineInterface(argc, argv).removeInstallation(); } if (QInstaller::isVerbose()) std::cout << VERSION << std::endl << BUILDDATE << std::endl << SHA << std::endl; |