feat: add very early mod.toml packwiz support

Also use it as a on-disk format for storing mod metadata. This will be
used later on to make better mod managment.
This commit is contained in:
flow
2022-04-13 19:16:36 -03:00
committed by flow
parent dca4ea5cea
commit b30b88716e
8 changed files with 202 additions and 0 deletions

View File

@ -0,0 +1,43 @@
#pragma once
#include <QString>
#include <QUrl>
#include <QVariant>
namespace ModPlatform {
enum class Provider;
class IndexedPack;
class IndexedVersion;
} // namespace ModPlatform
class QDir;
class Packwiz {
public:
struct Mod {
QString name;
QString filename;
// FIXME: make side an enum
QString side = "both";
// [download]
QUrl url;
// FIXME: make hash-format an enum
QString hash_format;
QString hash;
// [update]
ModPlatform::Provider provider;
QVariant file_id;
QVariant project_id;
};
/* Generates the object representing the information in a mod.toml file via its common representation in the launcher */
static auto createModFormat(QDir& index_dir, ModPlatform::IndexedPack& mod_pack, ModPlatform::IndexedVersion& mod_version) -> Mod;
/* Updates the mod index for the provided mod.
* This creates a new index if one does not exist already
* TODO: Ask the user if they want to override, and delete the old mod's files, or keep the old one.
* */
static void updateModIndex(QDir& index_dir, Mod& mod);
};