NOISSUE Add API models for Solder packs

This will be able to replace the ugly parsing/usage code that
currently exists in the Solder install task :)
This commit is contained in:
Jamie Mansfield 2022-04-01 23:40:20 +01:00
parent 2334a44221
commit 18f790953a
No known key found for this signature in database
GPG Key ID: 36F61598F39F67B0
3 changed files with 105 additions and 0 deletions

View File

@ -509,6 +509,8 @@ set(TECHNIC_SOURCES
modplatform/technic/SingleZipPackInstallTask.cpp
modplatform/technic/SolderPackInstallTask.h
modplatform/technic/SolderPackInstallTask.cpp
modplatform/technic/SolderPackManifest.h
modplatform/technic/SolderPackManifest.cpp
modplatform/technic/TechnicPackProcessor.h
modplatform/technic/TechnicPackProcessor.cpp
)

View File

@ -0,0 +1,56 @@
/*
* Copyright 2022 Jamie Mansfield <jmansfield@cadixdev.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "SolderPackManifest.h"
#include "Json.h"
namespace TechnicSolder {
void loadPack(Pack& v, QJsonObject& obj)
{
v.recommended = Json::requireString(obj, "recommended");
v.latest = Json::requireString(obj, "latest");
auto builds = Json::requireArray(obj, "builds");
for (const auto buildRaw : builds) {
auto build = Json::requireValueString(buildRaw);
v.builds.append(build);
}
}
static void loadPackBuildMod(PackBuildMod& b, QJsonObject& obj)
{
b.name = Json::requireString(obj, "name");
b.version = Json::requireString(obj, "version");
b.md5 = Json::requireString(obj, "md5");
b.url = Json::requireString(obj, "url");
}
void loadPackBuild(PackBuild& v, QJsonObject& obj)
{
v.minecraft = Json::requireString(obj, "minecraft");
auto mods = Json::requireArray(obj, "mods");
for (const auto modRaw : mods) {
auto modObj = Json::requireValueObject(modRaw);
PackBuildMod mod;
loadPackBuildMod(mod, modObj);
v.mods.append(mod);
}
}
}

View File

@ -0,0 +1,47 @@
/*
* Copyright 2022 Jamie Mansfield <jmansfield@cadixdev.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <QString>
#include <QVector>
#include <QJsonObject>
namespace TechnicSolder {
struct Pack {
QString recommended;
QString latest;
QVector<QString> builds;
};
void loadPack(Pack& v, QJsonObject& obj);
struct PackBuildMod {
QString name;
QString version;
QString md5;
QString url;
};
struct PackBuild {
QString minecraft;
QVector<PackBuildMod> mods;
};
void loadPackBuild(PackBuild& v, QJsonObject& obj);
}