|
6 | 6 | require 'net/http' |
7 | 7 | require 'rexml/document' |
8 | 8 | require 'open3' # [macOS] |
| 9 | +require 'json' # [macOS] |
9 | 10 |
|
10 | 11 | HERMES_GITHUB_URL = "https://github.com/facebook/hermes.git" |
11 | 12 | ENV_BUILD_FROM_SOURCE = "RCT_BUILD_HERMES_FROM_SOURCE" |
@@ -242,22 +243,12 @@ def resolve_url_redirects(url) |
242 | 243 | # [macOS react-native-macos does not publish macos specific hermes artifacts |
243 | 244 | # so we attempt to find the latest patch version of the iOS artifacts and use that |
244 | 245 | def findLastestVersionWithArtifact(version) |
245 | | - versionWithoutPatch = version.match(/^(\d+\.\d+)/) |
246 | | - xml_data, = Open3.capture3("curl -s https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/maven-metadata.xml") |
247 | | - |
248 | | - metadata = REXML::Document.new(xml_data) |
249 | | - versions = metadata.elements.to_a('//metadata/versioning/versions/version') |
250 | | - |
251 | | - # Extract version numbers and sort them |
252 | | - filtered_versions = versions.select { |version| version.text.match?(/^#{versionWithoutPatch}\.\d+$/) } |
253 | | - if filtered_versions.empty? |
254 | | - return |
255 | | - end |
256 | | - |
257 | | - version_numbers = filtered_versions.map { |version| version.text } |
258 | | - sorted_versions = version_numbers.sort_by { |v| Gem::Version.new(v) } |
259 | | - |
260 | | - return sorted_versions.last |
| 246 | + # See https://central.sonatype.org/search/rest-api-guide/ for details on query params |
| 247 | + versionWithoutPatch = "#{version.match(/^(\d+\.\d+)/)}" |
| 248 | + res, = Open3.capture3("curl -s https://search.maven.org/solrsearch/select?q=g:com.facebook.react+AND+a:react-native-artifacts+AND+v:#{versionWithoutPatch}.*&core=gav&rows=1&wt=json") |
| 249 | + wt = JSON.parse(res) |
| 250 | + response = wt['response'] |
| 251 | + return response['docs'][0]['v'] unless response['numFound'] == 0 |
261 | 252 | end |
262 | 253 | # macOS] |
263 | 254 |
|
|
0 commit comments