Compare commits

...

2 commits

Author SHA1 Message Date
tooomm
66d81e6f14 improve/add comments 2026-07-17 18:08:01 +02:00
tooomm
8c126cdf7e update regex 2026-07-17 17:08:26 +02:00

View file

@ -44,7 +44,7 @@ void ReleaseChannel::checkForUpdates()
connect(response, &QNetworkReply::finished, this, &ReleaseChannel::releaseListFinished);
}
// Different release channel checking functions for different operating systems
// Find compatible assets for host platform (Linux is not supported by in-client updater)
std::optional<int> ReleaseChannel::getTargetVersionForCurrentOS(const QString &fileName)
{
const QRegularExpression *regex = nullptr;
@ -60,13 +60,14 @@ std::optional<int> ReleaseChannel::getTargetVersionForCurrentOS(const QString &f
}
return false;
}();
static const QRegularExpression macIntelRegex(R"(macOS(\d+)_Intel\.[^.]+$)",
static const QRegularExpression macIntelRegex(R"(-macOS(\d+)_Intel\.[^.]+$)",
QRegularExpression::CaseInsensitiveOption);
static const QRegularExpression macArmRegex(R"(macOS(\d+)\.[^.]+$)", QRegularExpression::CaseInsensitiveOption);
static const QRegularExpression macArmRegex(R"(-macOS(\d+)\.[^.]+$)", QRegularExpression::CaseInsensitiveOption);
regex = isIntel ? &macIntelRegex : &macArmRegex;
#elif defined(Q_OS_WIN)
static const QRegularExpression winRegex(R"(Win(?:dows)?(\d+)\.[^.]+$)", QRegularExpression::CaseInsensitiveOption);
static const QRegularExpression winRegex(R"(-(?:Win|Windows)(\d+)\.[^.]+$)",
QRegularExpression::CaseInsensitiveOption);
regex = &winRegex;
#else // if the OS doesn't fit one of the above #defines, then it will never match
@ -74,6 +75,7 @@ std::optional<int> ReleaseChannel::getTargetVersionForCurrentOS(const QString &f
return std::nullopt;
#endif
// Any asset targeting an OS version smaller or equal to the current host works
const int systemVersion = QSysInfo::productVersion().split('.').first().toInt();
auto match = regex->match(fileName);
if (!match.hasMatch()) {
@ -86,6 +88,7 @@ std::optional<int> ReleaseChannel::getTargetVersionForCurrentOS(const QString &f
return targetVersion;
}
// Pick newest targeted version (highest number) amongst all compatible ones
QString ReleaseChannel::findBestDownloadUrl(const QVariantList &assets)
{
QString bestUrl;