summaryrefslogtreecommitdiffstats
path: root/api/logic/minecraft/Library.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'api/logic/minecraft/Library.cpp')
-rw-r--r--api/logic/minecraft/Library.cpp77
1 files changed, 40 insertions, 37 deletions
diff --git a/api/logic/minecraft/Library.cpp b/api/logic/minecraft/Library.cpp
index 4c032ef3..a56e8110 100644
--- a/api/logic/minecraft/Library.cpp
+++ b/api/logic/minecraft/Library.cpp
@@ -45,58 +45,50 @@ void Library::getApplicableFiles(OpSys system, QStringList& jar, QStringList& na
}
}
-QList< std::shared_ptr< NetAction > > Library::getDownloads(OpSys system, class HttpMetaCache* cache,
- QStringList& failedFiles, const QString & overridePath) const
+QList< std::shared_ptr< NetAction > > Library::getDownloads(
+ OpSys system,
+ class HttpMetaCache* cache,
+ QStringList& failedLocalFiles,
+ const QString & overridePath
+) const
{
QList<NetActionPtr> out;
- bool isAlwaysStale = (hint() == "always-stale");
+ bool stale = isAlwaysStale();
bool local = isLocal();
- bool isForge = (hint() == "forge-pack-xz");
+
+ auto check_local_file = [&](QString storage)
+ {
+ QFileInfo fileinfo(storage);
+ QString fileName = fileinfo.fileName();
+ auto fullPath = FS::PathCombine(overridePath, fileName);
+ QFileInfo localFileInfo(fullPath);
+ if(!localFileInfo.exists())
+ {
+ failedLocalFiles.append(localFileInfo.filePath());
+ return false;
+ }
+ return true;
+ };
auto add_download = [&](QString storage, QString url, QString sha1)
{
+ if(local)
+ {
+ return check_local_file(storage);
+ }
auto entry = cache->resolveEntry("libraries", storage);
- if(isAlwaysStale)
+ if(stale)
{
entry->setStale(true);
}
if (!entry->isStale())
return true;
- if(local)
- {
- if(!overridePath.isEmpty())
- {
- QString fileName;
- int position = storage.lastIndexOf('/');
- if(position == -1)
- {
- fileName = storage;
- }
- else
- {
- fileName = storage.mid(position);
- }
- auto fullPath = FS::PathCombine(overridePath, fileName);
- QFileInfo fileinfo(fullPath);
- if(fileinfo.exists())
- {
- return true;
- }
- }
- QFileInfo fileinfo(entry->getFullPath());
- if(!fileinfo.exists())
- {
- failedFiles.append(entry->getFullPath());
- return false;
- }
- return true;
- }
Net::Download::Options options;
- if(isAlwaysStale)
+ if(stale)
{
options |= Net::Download::Option::AcceptLocalFiles;
}
- if (isForge)
+ if (isForge())
{
qDebug() << "XzDownload for:" << rawName() << "storage:" << storage << "url:" << url;
out.append(ForgeXzDownload::make(url, storage, entry));
@@ -178,7 +170,8 @@ QList< std::shared_ptr< NetAction > > Library::getDownloads(OpSys system, class
}
else
{
- auto raw_dl = [&](){
+ auto raw_dl = [&]()
+ {
if (!m_absoluteURL.isEmpty())
{
return m_absoluteURL;
@@ -245,6 +238,16 @@ bool Library::isLocal() const
return m_hint == "local";
}
+bool Library::isAlwaysStale() const
+{
+ return m_hint == "always-stale";
+}
+
+bool Library::isForge() const
+{
+ return m_hint == "forge-pack-xz";
+}
+
void Library::setStoragePrefix(QString prefix)
{
m_storagePrefix = prefix;