Merge pull request #333 from flowln/fix_atl_packs_post_modpack_update
This commit is contained in:
parent
7f6515dbe4
commit
32b526b729
@ -183,6 +183,21 @@ bool copy::operator()(const QString& offset)
|
|||||||
if (!m_followSymlinks)
|
if (!m_followSymlinks)
|
||||||
opt |= copy_opts::copy_symlinks;
|
opt |= copy_opts::copy_symlinks;
|
||||||
|
|
||||||
|
// Function that'll do the actual copying
|
||||||
|
auto copy_file = [&](QString src_path, QString relative_dst_path) {
|
||||||
|
if (m_blacklist && m_blacklist->matches(relative_dst_path))
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto dst_path = PathCombine(dst, relative_dst_path);
|
||||||
|
ensureFilePathExists(dst_path);
|
||||||
|
|
||||||
|
fs::copy(toStdString(src_path), toStdString(dst_path), opt, err);
|
||||||
|
if (err) {
|
||||||
|
qWarning() << "Failed to copy files:" << QString::fromStdString(err.message());
|
||||||
|
qDebug() << "Source file:" << src_path;
|
||||||
|
qDebug() << "Destination file:" << dst_path;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// We can't use copy_opts::recursive because we need to take into account the
|
// We can't use copy_opts::recursive because we need to take into account the
|
||||||
// blacklisted paths, so we iterate over the source directory, and if there's no blacklist
|
// blacklisted paths, so we iterate over the source directory, and if there's no blacklist
|
||||||
@ -194,20 +209,13 @@ bool copy::operator()(const QString& offset)
|
|||||||
auto src_path = source_it.next();
|
auto src_path = source_it.next();
|
||||||
auto relative_path = src_dir.relativeFilePath(src_path);
|
auto relative_path = src_dir.relativeFilePath(src_path);
|
||||||
|
|
||||||
if (m_blacklist && m_blacklist->matches(relative_path))
|
copy_file(src_path, relative_path);
|
||||||
continue;
|
|
||||||
|
|
||||||
auto dst_path = PathCombine(dst, relative_path);
|
|
||||||
ensureFilePathExists(dst_path);
|
|
||||||
|
|
||||||
fs::copy(toStdString(src_path), toStdString(dst_path), opt, err);
|
|
||||||
if (err) {
|
|
||||||
qWarning() << "Failed to copy files:" << QString::fromStdString(err.message());
|
|
||||||
qDebug() << "Source file:" << src_path;
|
|
||||||
qDebug() << "Destination file:" << dst_path;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the root src is not a directory, the previous iterator won't run.
|
||||||
|
if (!fs::is_directory(toStdString(src)))
|
||||||
|
copy_file(src, "");
|
||||||
|
|
||||||
return err.value() == 0;
|
return err.value() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,6 +183,32 @@ slots:
|
|||||||
f();
|
f();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_copy_single_file()
|
||||||
|
{
|
||||||
|
QTemporaryDir tempDir;
|
||||||
|
tempDir.setAutoRemove(true);
|
||||||
|
|
||||||
|
{
|
||||||
|
QString file = QFINDTESTDATA("testdata/FileSystem/test_folder/pack.mcmeta");
|
||||||
|
|
||||||
|
qDebug() << "From:" << file << "To:" << tempDir.path();
|
||||||
|
|
||||||
|
QDir target_dir(FS::PathCombine(tempDir.path(), "pack.mcmeta"));
|
||||||
|
qDebug() << tempDir.path();
|
||||||
|
qDebug() << target_dir.path();
|
||||||
|
FS::copy c(file, target_dir.filePath("pack.mcmeta"));
|
||||||
|
c();
|
||||||
|
|
||||||
|
auto filter = QDir::Filter::Files;
|
||||||
|
|
||||||
|
for (auto entry: target_dir.entryList(filter)) {
|
||||||
|
qDebug() << entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVERIFY(target_dir.entryList(filter).contains("pack.mcmeta"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void test_getDesktop()
|
void test_getDesktop()
|
||||||
{
|
{
|
||||||
QCOMPARE(FS::getDesktopDir(), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));
|
QCOMPARE(FS::getDesktopDir(), QStandardPaths::writableLocation(QStandardPaths::DesktopLocation));
|
||||||
|
Loading…
Reference in New Issue
Block a user