summaryrefslogtreecommitdiffstats
path: root/src/sdk
diff options
context:
space:
mode:
Diffstat (limited to 'src/sdk')
-rw-r--r--src/sdk/commandlineinterface.cpp31
-rw-r--r--src/sdk/commandlineinterface.h1
-rw-r--r--src/sdk/main.cpp3
3 files changed, 35 insertions, 0 deletions
diff --git a/src/sdk/commandlineinterface.cpp b/src/sdk/commandlineinterface.cpp
index f522f7df6..7bb76d2af 100644
--- a/src/sdk/commandlineinterface.cpp
+++ b/src/sdk/commandlineinterface.cpp
@@ -210,6 +210,37 @@ int CommandLineInterface::removeInstallation()
}
}
+int CommandLineInterface::createOfflineInstaller()
+{
+ if (!initialize())
+ return EXIT_FAILURE;
+ if (!m_core->isInstaller() || m_core->isOfflineOnly()) {
+ qCWarning(QInstaller::lcInstallerInstallLog)
+ << "Offline installer can only be created with an online installer.";
+ return EXIT_FAILURE;
+ }
+ if (m_positionalArguments.isEmpty()) {
+ qCWarning(QInstaller::lcInstallerInstallLog) << "Missing components argument.";
+ return EXIT_FAILURE;
+ }
+ if (!(setTargetDir() && checkLicense()))
+ return EXIT_FAILURE;
+
+ if (m_parser.isSet(CommandLineOptions::scOfflineInstallerNameLong)) {
+ m_core->setOfflineBinaryName(m_parser.value(CommandLineOptions::scOfflineInstallerNameLong));
+ } else {
+ const QString offlineName = m_core->offlineBinaryName();
+ qCDebug(QInstaller::lcInstallerInstallLog) << "No filename specified for "
+ "the generated installer, using default name:" << offlineName;
+ }
+ try {
+ return m_core->createOfflineInstaller(m_positionalArguments);
+ } 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 9833ad871..2627bc6f8 100644
--- a/src/sdk/commandlineinterface.h
+++ b/src/sdk/commandlineinterface.h
@@ -48,6 +48,7 @@ public:
int installPackages();
int uninstallPackages();
int removeInstallation();
+ int createOfflineInstaller();
private:
bool initialize();
diff --git a/src/sdk/main.cpp b/src/sdk/main.cpp
index 8c21cc39a..076458173 100644
--- a/src/sdk/main.cpp
+++ b/src/sdk/main.cpp
@@ -263,6 +263,9 @@ int main(int argc, char *argv[])
} else if (parser.positionalArguments().contains(CommandLineOptions::scPurgeShort)
|| parser.positionalArguments().contains(CommandLineOptions::scPurgeLong)){
return CommandLineInterface(argc, argv).removeInstallation();
+ } else if (parser.positionalArguments().contains(CommandLineOptions::scCreateOfflineShort)
+ || parser.positionalArguments().contains(CommandLineOptions::scCreateOfflineLong)) {
+ return CommandLineInterface(argc, argv).createOfflineInstaller();
}
if (QInstaller::isVerbose()) {
std::cout << VERSION << std::endl << BUILDDATE << std::endl << SHA << std::endl;