in godot-editor-plugin/addons/rider-plugin/cpp/src/rider_path_locator_common.cpp [116:136]
void RiderPathLocator::parse_product_info_json(InstallInfo &info, const std::string &product_info_json_path) {
const std::string json = read_file_to_string(product_info_json_path);
if (json.empty()) return;
std::regex build_re("\\\"buildNumber\\\"\\s*:\\s*\\\"([0-9.]+)\\\"");
std::smatch m;
if (std::regex_search(json, m, build_re) && m.size() > 1) {
info.version = Version(m[1].str());
if (info.version.major() >= 221) {
info.support = InstallInfo::SupportUproject::Release;
return;
}
}
// Fallback: look for SupportUproject or SupportUprojectState in customProperties
std::regex state_re("\\\"(SupportUproject|SupportUprojectState)\\\".*?\\\"value\\\"\\s*:\\n?\\t?\\s*\\\"(Beta|Release)\\\"");
if (std::regex_search(json, m, state_re) && m.size() > 2) {
std::string val = m[2].str();
if (val == "Beta") info.support = InstallInfo::SupportUproject::Beta;
if (val == "Release") info.support = InstallInfo::SupportUproject::Release;
}
}