void RiderPathLocator::parse_product_info_json()

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;
    }
}