aboutsummaryrefslogtreecommitdiff
path: root/src/frontend_common/update_checker.cpp
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2026-02-01 20:38:02 +0100
committercrueter <crueter@eden-emu.dev>2026-02-01 20:38:02 +0100
commit5113f503d140c1edd8670d03d44bcb79fb1a9518 (patch)
tree33d4dcac7c9b72b4000d216b65abedcd1701693d /src/frontend_common/update_checker.cpp
parenta5f1c2bcb043f4300c467db05981a531c0a9d9d0 (diff)
[frontend] Fix nightly update checker (#3444)
Splitting Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3444
Diffstat (limited to 'src/frontend_common/update_checker.cpp')
-rw-r--r--src/frontend_common/update_checker.cpp46
1 files changed, 44 insertions, 2 deletions
diff --git a/src/frontend_common/update_checker.cpp b/src/frontend_common/update_checker.cpp
index 53f3ca942d..1d7c8a4492 100644
--- a/src/frontend_common/update_checker.cpp
+++ b/src/frontend_common/update_checker.cpp
@@ -5,10 +5,13 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
-#include "update_checker.h"
+#include <boost/algorithm/string/classification.hpp>
+#include <boost/algorithm/string/split.hpp>
+
+#include <fmt/format.h>
#include "common/logging/log.h"
#include "common/scm_rev.h"
-#include <fmt/format.h>
+#include "update_checker.h"
#include <httplib.h>
@@ -137,3 +140,42 @@ std::optional<UpdateChecker::Update> UpdateChecker::GetLatestRelease(bool includ
return {};
}
}
+
+std::optional<UpdateChecker::Update> UpdateChecker::GetUpdate() {
+ const bool is_prerelease = ((strstr(Common::g_build_version, "pre-alpha") != NULL) ||
+ (strstr(Common::g_build_version, "alpha") != NULL) ||
+ (strstr(Common::g_build_version, "beta") != NULL) ||
+ (strstr(Common::g_build_version, "rc") != NULL));
+ const std::optional<UpdateChecker::Update> latest_release_tag =
+ UpdateChecker::GetLatestRelease(is_prerelease);
+
+ if (!latest_release_tag)
+ goto empty;
+
+ {
+ std::string tag, build;
+ if (Common::g_is_nightly_build) {
+ std::vector<std::string> result;
+
+ boost::split(result, latest_release_tag->tag, boost::is_any_of("."));
+ if (result.size() != 2)
+ goto empty;
+ tag = result[1];
+
+ boost::split(result, std::string{Common::g_build_version}, boost::is_any_of("-"));
+ if (result.empty())
+ goto empty;
+ build = result[0];
+ } else {
+ tag = latest_release_tag->tag;
+ build = Common::g_build_version;
+ }
+
+ if (tag != build)
+ return latest_release_tag.value();
+ }
+
+empty:
+ return UpdateChecker::Update{};
+
+}