Files

61 lines
2.0 KiB
C++
Raw Permalink Normal View History

2026-08-27 19:35:11 +03:00
#pragma once
#include <QDateTime>
#include <QList>
#include <QString>
#include <QUrl>
#include <optional>
enum class JavaRuntimeKind {
2026-09-29 09:38:12 +03:00
Mojang,
Jdk,
Jre
2026-08-27 19:35:11 +03:00
};
2026-09-29 09:38:12 +03:00
QString javaKindKey(JavaRuntimeKind kind);
2026-08-27 19:35:11 +03:00
std::optional<JavaRuntimeKind> javaKindFromKey(const QString &key);
QString javaKindTitle(JavaRuntimeKind kind);
struct JavaRuntimeEntry
{
QString id; // temurin-jdk-21.0.12.1_1 | mojang-java-runtime-delta
JavaRuntimeKind kind = JavaRuntimeKind::Jdk;
int major = 0; // 8, 17, 21…
QString version; // 21.0.12.1+1 | 21.0.7
QString component; // java-runtime-delta — только у сборок Mojang
QDateTime released;
QUrl url; // архив Temurin либо manifest.json компонента
QString checksum; // sha256 архива Temurin, sha1 манифеста Mojang
qint64 size = 0; // размер загрузки, 0 — неизвестен
QString archive; // zip | tar.gz | mojang
QString architecture; // x64 | aarch64 — на macOS бывает и не родная
bool lts = false;
bool isValid() const { return !id.isEmpty() && major > 0 && url.isValid(); }
};
struct InstalledJavaRuntime
{
QString id;
QString kind; // java | jdk | jre
int major = 0;
QString version;
QString javaPath; // абсолютный путь к java/java.exe
qint64 size = 0; // сколько заняло на диске по итогам установки
};
namespace JavaRuntimeStore {
QString dirFor(const QString &id);
QList<InstalledJavaRuntime> installed();
std::optional<InstalledJavaRuntime> find(const QString &id);
QString locateBinary(const QString &rootDir);
bool writeMeta(const InstalledJavaRuntime &runtime, QString *error);
bool remove(const QString &id, QString *error);
QString sanitizeId(const QString &id);
2026-09-29 09:38:12 +03:00
}
2026-08-27 19:35:11 +03:00
namespace JavaRequirement {
int minimumFor(const QString &minecraftVersionId);
QString coverage(int javaMajor);
2026-09-29 09:38:12 +03:00
}