summaryrefslogtreecommitdiffstats
path: root/src/sdk
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdk')
-rw-r--r--src/sdk/commandlineinterface.cpp17
-rw-r--r--src/sdk/commandlineinterface.h1
-rw-r--r--src/sdk/main.cpp3
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;