GH-952 flesh out {version,custom}.json upgrade step

This commit is contained in:
Petr Mrázek 2015-05-15 01:10:08 +02:00
parent 5bbe1c7132
commit 416e08f741
2 changed files with 53 additions and 21 deletions

View File

@ -274,7 +274,17 @@ QVariant MinecraftProfile::data(const QModelIndex &index, int role) const
case 0: case 0:
return VersionPatches.at(row)->getPatchName(); return VersionPatches.at(row)->getPatchName();
case 1: case 1:
return VersionPatches.at(row)->getPatchVersion(); {
auto patch = VersionPatches.at(row);
if(patch->isCustom())
{
return QString("%1 (Custom)").arg(patch->getPatchVersion());
}
else
{
return patch->getPatchVersion();
}
}
default: default:
return QVariant(); return QVariant();
} }

View File

@ -21,34 +21,57 @@ void OneSixProfileStrategy::upgradeDeprecatedFiles()
auto customJsonPath = PathCombine(m_instance->instanceRoot(), "custom.json"); auto customJsonPath = PathCombine(m_instance->instanceRoot(), "custom.json");
auto mcJson = PathCombine(m_instance->instanceRoot(), "patches" , "net.minecraft.json"); auto mcJson = PathCombine(m_instance->instanceRoot(), "patches" , "net.minecraft.json");
QString sourceFile;
QString deleteFile;
// convert old crap. // convert old crap.
if(QFile::exists(customJsonPath)) if(QFile::exists(customJsonPath))
{ {
if(!ensureFilePathExists(mcJson)) sourceFile = customJsonPath;
{ deleteFile = versionJsonPath;
// WHAT DO???
}
if(!QFile::rename(customJsonPath, mcJson))
{
// WHAT DO???
}
if(QFile::exists(versionJsonPath))
{
if(!QFile::remove(versionJsonPath))
{
// WHAT DO???
}
}
} }
else if(QFile::exists(versionJsonPath)) else if(QFile::exists(versionJsonPath))
{
sourceFile = versionJsonPath;
}
if(!sourceFile.isEmpty() && !QFile::exists(mcJson))
{ {
if(!ensureFilePathExists(mcJson)) if(!ensureFilePathExists(mcJson))
{ {
// WHAT DO??? qWarning() << "Couldn't create patches folder for" << m_instance->name();
return;
} }
if(!QFile::rename(versionJsonPath, mcJson)) if(!deleteFile.isEmpty() && QFile::exists(deleteFile))
{ {
// WHAT DO??? if(!QFile::remove(deleteFile))
{
qWarning() << "Couldn't remove" << deleteFile << "from" << m_instance->name();
return;
}
}
auto file = ProfileUtils::parseJsonFile(QFileInfo(sourceFile), false);
ProfileUtils::removeLwjglFromPatch(file);
file->fileId = "net.minecraft";
file->version = file->id;
file->name = "Minecraft";
auto data = file->toJson(false).toJson();
QSaveFile newPatchFile(mcJson);
if(!newPatchFile.open(QIODevice::WriteOnly))
{
newPatchFile.cancelWriting();
qWarning() << "Couldn't open main patch for writing in" << m_instance->name();
return;
}
newPatchFile.write(data);
if(!newPatchFile.commit())
{
qWarning() << "Couldn't save main patch in" << m_instance->name();
return;
}
if(!QFile::remove(sourceFile))
{
qWarning() << "Couldn't remove" << sourceFile << "from" << m_instance->name();
return;
} }
} }
} }
@ -62,12 +85,11 @@ void OneSixProfileStrategy::loadDefaultBuiltinPatches()
if(QFile::exists(mcJson)) if(QFile::exists(mcJson))
{ {
auto file = ProfileUtils::parseJsonFile(QFileInfo(mcJson), false); auto file = ProfileUtils::parseJsonFile(QFileInfo(mcJson), false);
file->fileId = "net.minecraft";
file->name = "Minecraft";
if(file->version.isEmpty()) if(file->version.isEmpty())
{ {
file->version = m_instance->intendedVersionId(); file->version = m_instance->intendedVersionId();
} }
file->setVanilla(false);
minecraftPatch = std::dynamic_pointer_cast<ProfilePatch>(file); minecraftPatch = std::dynamic_pointer_cast<ProfilePatch>(file);
} }
else else