|
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