|
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"
|
@@ -238,22 +239,12 @@ def resolve_url_redirects(url)
|
238 | 239 | # [macOS react-native-macos does not publish macos specific hermes artifacts
|
239 | 240 | # so we attempt to find the latest patch version of the iOS artifacts and use that
|
240 | 241 | def findLastestVersionWithArtifact(version)
|
241 |
| - versionWithoutPatch = version.match(/^(\d+\.\d+)/) |
242 |
| - xml_data, = Open3.capture3("curl -s https://repo1.maven.org/maven2/com/facebook/react/react-native-artifacts/maven-metadata.xml") |
243 |
| - |
244 |
| - metadata = REXML::Document.new(xml_data) |
245 |
| - versions = metadata.elements.to_a('//metadata/versioning/versions/version') |
246 |
| - |
247 |
| - # Extract version numbers and sort them |
248 |
| - filtered_versions = versions.select { |version| version.text.match?(/^#{versionWithoutPatch}\.\d+$/) } |
249 |
| - if filtered_versions.empty? |
250 |
| - return |
251 |
| - end |
252 |
| - |
253 |
| - version_numbers = filtered_versions.map { |version| version.text } |
254 |
| - sorted_versions = version_numbers.sort_by { |v| Gem::Version.new(v) } |
255 |
| - |
256 |
| - return sorted_versions.last |
| 242 | + # See https://central.sonatype.org/search/rest-api-guide/ for details on query params |
| 243 | + versionWithoutPatch = "#{version.match(/^(\d+\.\d+)/)}" |
| 244 | + 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") |
| 245 | + wt = JSON.parse(res) |
| 246 | + response = wt['response'] |
| 247 | + return response['docs'][0]['v'] unless response['numFound'] == 0 |
257 | 248 | end
|
258 | 249 | # macOS]
|
259 | 250 |
|
|
0 commit comments