summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/installerfw.qdoc3
-rw-r--r--doc/scripting-api/packagemanagercore.qdoc6
-rw-r--r--src/libs/installer/commandlineparser.cpp4
-rw-r--r--src/libs/installer/constants.h2
-rw-r--r--src/libs/installer/packagemanagercore.cpp14
-rw-r--r--src/libs/installer/packagemanagercore.h4
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp1
-rw-r--r--src/sdk/sdkapp.h10
8 files changed, 34 insertions, 10 deletions
diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc
index e1ade5a13..3d251fbc7 100644
--- a/doc/installerfw.qdoc
+++ b/doc/installerfw.qdoc
@@ -252,6 +252,9 @@
search command. The keys can be any of the possible package information elements, like
\c DisplayName and \c Description.
\row
+ \li --cp, --cache-path <path>
+ \li Sets the path used for local metadata cache. The path must be writable by the current user.
+ \row
\li --am, --accept-messages
\li [CLI] Accepts all message queries without user input.
\row
diff --git a/doc/scripting-api/packagemanagercore.qdoc b/doc/scripting-api/packagemanagercore.qdoc
index cd2253890..b14fd957f 100644
--- a/doc/scripting-api/packagemanagercore.qdoc
+++ b/doc/scripting-api/packagemanagercore.qdoc
@@ -325,12 +325,6 @@
*/
/*!
- \qmlmethod void installer::clearLocalCache()
-
- Clears the contents of the cache used to store downloaded metadata.
-*/
-
-/*!
\qmlmethod void installer::componentsToInstallNeedsRecalculation()
Ensures that component dependencies are re-calculated.
diff --git a/src/libs/installer/commandlineparser.cpp b/src/libs/installer/commandlineparser.cpp
index fd870da2d..3b5b46e0e 100644
--- a/src/libs/installer/commandlineparser.cpp
+++ b/src/libs/installer/commandlineparser.cpp
@@ -173,6 +173,10 @@ CommandLineParser::CommandLineParser()
"search command. The keys can be any of the possible package information elements, like "
"\"DisplayName\" and \"Description\"."),
QLatin1String("element=regex,...")), CommandLineOnly);
+ addOption(QCommandLineOption(QStringList()
+ << CommandLineOptions::scLocalCachePathShort << CommandLineOptions::scLocalCachePathLong,
+ QLatin1String("Sets the path used for local metadata cache. The path must be writable by the current user."),
+ QLatin1String("path")));
// Message query options
addOptionWithContext(QCommandLineOption(QStringList() << CommandLineOptions::scAcceptMessageQueryShort
diff --git a/src/libs/installer/constants.h b/src/libs/installer/constants.h
index 77fc0237f..485982672 100644
--- a/src/libs/installer/constants.h
+++ b/src/libs/installer/constants.h
@@ -213,6 +213,8 @@ static const QLatin1String scNoDefaultInstallationShort("nd");
static const QLatin1String scNoDefaultInstallationLong("no-default-installations");
static const QLatin1String scFilterPackagesShort("fp");
static const QLatin1String scFilterPackagesLong("filter-packages");
+static const QLatin1String scLocalCachePathShort("cp");
+static const QLatin1String scLocalCachePathLong("cache-path");
// Developer options
static const QLatin1String scScriptShort("s");
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index 48d071321..d5f830903 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -574,11 +574,21 @@ void PackageManagerCore::cancelMetaInfoJob()
}
/*!
+ Resets the cache used to store downloaded metadata, if one was previously
+ initialized. If \a init is set to \c true, the cache is reinitialized for
+ the path configured in installer's settings.
+
+ Returns \c true on success, \c false otherwise.
+*/
+bool PackageManagerCore::resetLocalCache(bool init)
+{
+ return d->m_metadataJob.resetCache(init);
+}
+
+/*!
Clears the contents of the cache used to store downloaded metadata.
Returns \c true on success, \c false otherwise. An error string can
be retrieved with \a error.
-
- \sa {installer::clearLocalCache}{installer.clearLocalCache}
*/
bool PackageManagerCore::clearLocalCache(QString *error)
{
diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h
index db1c0765f..2c307971a 100644
--- a/src/libs/installer/packagemanagercore.h
+++ b/src/libs/installer/packagemanagercore.h
@@ -345,6 +345,9 @@ public:
void createLocalDependencyHash(const QString &component, const QString &dependencies) const;
void createAutoDependencyHash(const QString &component, const QString &oldDependencies, const QString &newDependencies) const;
+ bool resetLocalCache(bool init = false);
+ bool clearLocalCache(QString *error = nullptr);
+
public Q_SLOTS:
bool runInstaller();
bool runUninstaller();
@@ -355,7 +358,6 @@ public Q_SLOTS:
void languageChanged();
void setCompleteUninstallation(bool complete);
void cancelMetaInfoJob();
- bool clearLocalCache(QString *error = nullptr);
void componentsToInstallNeedsRecalculation();
void calculateUserSelectedComponentsToInstall(const QList<QModelIndex> &indexes);
void clearComponentsToInstallCalculated();
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index c61c6bc99..64af77a98 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -664,7 +664,6 @@ void PackageManagerCorePrivate::initialize(const QHash<QString, QString> &params
m_metadataJob.disconnect();
m_metadataJob.setAutoDelete(false);
m_metadataJob.setPackageManagerCore(m_core);
- m_metadataJob.resetCache(true);
connect(&m_metadataJob, &Job::infoMessage, this, &PackageManagerCorePrivate::infoMessage);
connect(&m_metadataJob, &Job::progress, this, &PackageManagerCorePrivate::infoProgress);
diff --git a/src/sdk/sdkapp.h b/src/sdk/sdkapp.h
index d5d126f26..7d39ee3cf 100644
--- a/src/sdk/sdkapp.h
+++ b/src/sdk/sdkapp.h
@@ -266,6 +266,16 @@ public:
KDUpdater::FileDownloaderFactory::instance().setProxyFactory(m_core->proxyFactory());
}
+ if (m_parser.isSet(CommandLineOptions::scLocalCachePathLong)) {
+ const QString cachePath = m_parser.value(CommandLineOptions::scLocalCachePathLong);
+ if (cachePath.isEmpty()) {
+ errorMessage = QObject::tr("Empty value for option 'cache-path'.");
+ return false;
+ }
+ m_core->settings().setLocalCachePath(cachePath);
+ }
+ m_core->resetLocalCache(true);
+
if (m_parser.isSet(CommandLineOptions::scShowVirtualComponentsLong))
QInstaller::PackageManagerCore::setVirtualComponentsVisible(true);