From e6ba24780086c2863a59204a200f2280deea66f6 Mon Sep 17 00:00:00 2001 From: Toni Rico Date: Fri, 12 Jan 2024 09:04:32 +0100 Subject: [PATCH] Fix update hybrid versions file job with new PHC android architecture (#57) --- .../update_hybrids_versions_file_helper.rb | 4 +-- ...pdate_hybrids_versions_file_helper_spec.rb | 10 +++--- spec/test_files/get_contents_phc_android.json | 34 +++++++++---------- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/lib/fastlane/plugin/revenuecat_internal/helper/update_hybrids_versions_file_helper.rb b/lib/fastlane/plugin/revenuecat_internal/helper/update_hybrids_versions_file_helper.rb index 972ed8c..a61cdfa 100644 --- a/lib/fastlane/plugin/revenuecat_internal/helper/update_hybrids_versions_file_helper.rb +++ b/lib/fastlane/plugin/revenuecat_internal/helper/update_hybrids_versions_file_helper.rb @@ -9,10 +9,10 @@ module Fastlane module Helper class UpdateHybridsVersionsFileHelper def self.get_android_version_for_hybrid_common_version(hybrid_common_version) - path = 'android/build.gradle' + path = 'android/gradle/libs.versions.toml' repo_name = 'purchases-hybrid-common' contents = get_contents_file_github(path, repo_name, hybrid_common_version) - matches = contents.match("ext.purchases_version = '(.*)'").captures + matches = contents.match('purchases = "(.*)"').captures UI.user_error!("Could not find android version in #{repo_name} in file '#{path}'") if matches.length != 1 matches[0] end diff --git a/spec/helper/update_hybrids_versions_file_helper_spec.rb b/spec/helper/update_hybrids_versions_file_helper_spec.rb index a09e3f9..c5bea2c 100644 --- a/spec/helper/update_hybrids_versions_file_helper_spec.rb +++ b/spec/helper/update_hybrids_versions_file_helper_spec.rb @@ -1,6 +1,6 @@ describe Fastlane::Helper::UpdateHybridsVersionsFileHelper do describe '.get_android_version_for_hybrid_common_version' do - let(:get_contents_android_build_gradle_3_3_0_response) do + let(:get_contents_android_build_gradle_response) do { json: JSON.parse(File.read("#{File.dirname(__FILE__)}/../test_files/get_contents_phc_android.json")) } end @@ -8,11 +8,11 @@ expect(Fastlane::Actions::GithubApiAction).to receive(:run).with( server_url: "https://api.github.com", http_method: 'GET', - path: "/repos/revenuecat/purchases-hybrid-common/contents/android/build.gradle?ref=3.3.0", + path: "/repos/revenuecat/purchases-hybrid-common/contents/android/gradle/libs.versions.toml?ref=8.10.0-beta.8", body: {} - ).and_return(get_contents_android_build_gradle_3_3_0_response).once - version = Fastlane::Helper::UpdateHybridsVersionsFileHelper.get_android_version_for_hybrid_common_version('3.3.0') - expect(version).to eq('5.3.0') + ).and_return(get_contents_android_build_gradle_response).once + version = Fastlane::Helper::UpdateHybridsVersionsFileHelper.get_android_version_for_hybrid_common_version('8.10.0-beta.8') + expect(version).to eq('7.3.1') end end diff --git a/spec/test_files/get_contents_phc_android.json b/spec/test_files/get_contents_phc_android.json index a592a4e..fe0fe6f 100644 --- a/spec/test_files/get_contents_phc_android.json +++ b/spec/test_files/get_contents_phc_android.json @@ -1,18 +1,18 @@ { - "name": "build.gradle", - "path": "android/build.gradle", - "sha": "bf01d3e549033338419b37ad3413c57cbfebdec5", - "size": 4325, - "url": "https://api.github.com/repos/RevenueCat/purchases-hybrid-common/contents/android/build.gradle?ref=3.3.0", - "html_url": "https://github.com/RevenueCat/purchases-hybrid-common/blob/3.3.0/android/build.gradle", - "git_url": "https://api.github.com/repos/RevenueCat/purchases-hybrid-common/git/blobs/bf01d3e549033338419b37ad3413c57cbfebdec5", - "download_url": "https://raw.githubusercontent.com/RevenueCat/purchases-hybrid-common/3.3.0/android/build.gradle", - "type": "file", - "content": "Ly8gVG9wLWxldmVsIGJ1aWxkIGZpbGUgd2hlcmUgeW91IGNhbiBhZGQgY29u\nZmlndXJhdGlvbiBvcHRpb25zIGNvbW1vbiB0byBhbGwgc3ViLXByb2plY3Rz\nL21vZHVsZXMuCgpidWlsZHNjcmlwdCB7CiAgICBleHQuYW5kcm9pZF90b29s\ncyA9ICc3LjEuMCcKICAgIGV4dC5rb3RsaW5fdmVyc2lvbiA9ICcxLjYuMjAn\nCiAgICBleHQuYW5kcm9pZF9qdW5pdDVfdmVyc2lvbiA9ICcxLjguMi4wJwog\nICAgZXh0Lmp1bml0NSA9ICc1LjguMicKICAgIGV4dC5hc3NlcnRqX3ZlcnNp\nb24gPSAnMy4yMi4wJwogICAgZXh0Lm1vY2trX3ZlcnNpb24gPSAnMS4xMi4z\nJwogICAgZXh0LmdyYWRsZV9tYXZlbl9wdWJsaXNoID0gJzAuMTkuMCcKICAg\nIGV4dC5wdXJjaGFzZXNfdmVyc2lvbiA9ICc1LjMuMCcKICAgIGV4dC5iaWxs\naW5nX3VuaXR5aWFwX3B1cmNoYXNlc192ZXJzaW9uID0gJzMuMC4zJwoKICAg\nIHJlcG9zaXRvcmllcyB7CiAgICAgICAgZ29vZ2xlKCkKICAgICAgICBtYXZl\nbkNlbnRyYWwoKQogICAgfQogICAgZGVwZW5kZW5jaWVzIHsKICAgICAgICBj\nbGFzc3BhdGggImNvbS5hbmRyb2lkLnRvb2xzLmJ1aWxkOmdyYWRsZTokYW5k\ncm9pZF90b29scyIKICAgICAgICBjbGFzc3BhdGggIm9yZy5qZXRicmFpbnMu\na290bGluOmtvdGxpbi1ncmFkbGUtcGx1Z2luOiRrb3RsaW5fdmVyc2lvbiIK\nICAgICAgICBjbGFzc3BhdGggImRlLm1hbm5vZGVybWF1cy5ncmFkbGUucGx1\nZ2luczphbmRyb2lkLWp1bml0NTokYW5kcm9pZF9qdW5pdDVfdmVyc2lvbiIK\nICAgICAgICBjbGFzc3BhdGggImNvbS52YW5uaWt0ZWNoOmdyYWRsZS1tYXZl\nbi1wdWJsaXNoLXBsdWdpbjokZ3JhZGxlX21hdmVuX3B1Ymxpc2giCiAgICB9\nCn0KCmFwcGx5IHBsdWdpbjogJ2NvbS5hbmRyb2lkLmxpYnJhcnknCmFwcGx5\nIHBsdWdpbjogJ2tvdGxpbi1hbmRyb2lkJwphcHBseSBwbHVnaW46ICJkZS5t\nYW5ub2Rlcm1hdXMuYW5kcm9pZC1qdW5pdDUiCgpkZWYgYXJ0aWZhY3RJZCA9\nIHByb2plY3QucHJvcGVydHkoIlBPTV9BUlRJRkFDVF9JRCIpCmRlZiBwdWJs\naXNoVmFyaWFudCA9IHByb2plY3QucHJvcGVydHkoIlBVQkxJU0hfVkFSSUFO\nVCIpCmlmIChwdWJsaXNoVmFyaWFudCA9PSAidW5pdHlJQVBSZWxlYXNlIikg\newogICAgcHJvamVjdC5leHQuUE9NX0FSVElGQUNUX0lEID0gYXJ0aWZhY3RJ\nZCArICItdW5pdHlpYXAiCn0KCmFwcGx5IHBsdWdpbjogImNvbS52YW5uaWt0\nZWNoLm1hdmVuLnB1Ymxpc2giCgptYXZlblB1Ymxpc2ggewogICAgYW5kcm9p\nZFZhcmlhbnRUb1B1Ymxpc2ggPSBwcm9qZWN0LnByb3BlcnR5KCJQVUJMSVNI\nX1ZBUklBTlQiKQp9CgphbmRyb2lkIHsKICAgIGNvbXBpbGVTZGtWZXJzaW9u\nIDMyCiAgICBidWlsZFRvb2xzVmVyc2lvbiAiMzIuMC4wIgoKICAgIGRlZmF1\nbHRDb25maWcgewogICAgICAgIG1pblNka1ZlcnNpb24gMTQKICAgICAgICB0\nYXJnZXRTZGtWZXJzaW9uIDMyCiAgICAgICAgdmVyc2lvbkNvZGUgMQogICAg\nICAgIHZlcnNpb25OYW1lICIzLjMuMCIKCiAgICAgICAgY29uc3VtZXJQcm9n\ndWFyZEZpbGVzICdjb25zdW1lci1ydWxlcy5wcm8nCiAgICB9CgogICAgYnVp\nbGRUeXBlcyB7CiAgICAgICAgcmVsZWFzZSB7CiAgICAgICAgICAgIG1pbmlm\neUVuYWJsZWQgZmFsc2UKICAgICAgICAgICAgcHJvZ3VhcmRGaWxlcyBnZXRE\nZWZhdWx0UHJvZ3VhcmRGaWxlKCdwcm9ndWFyZC1hbmRyb2lkLW9wdGltaXpl\nLnR4dCcpLCAncHJvZ3VhcmQtcnVsZXMucHJvJwogICAgICAgIH0KICAgIH0K\nCiAgICAvLyBBZGQgS290bGluIHNvdXJjZSBkaXJlY3RvcnkgdG8gYWxsIHNv\ndXJjZSBzZXRzCiAgICBzb3VyY2VTZXRzLmVhY2ggewogICAgICAgIGl0Lmph\ndmEuc3JjRGlycyArPSAic3JjLyRpdC5uYW1lL2tvdGxpbiIKICAgIH0KICAg\nIGNvbXBpbGVPcHRpb25zIHsKICAgICAgICBzb3VyY2VDb21wYXRpYmlsaXR5\nIEphdmFWZXJzaW9uLlZFUlNJT05fMV84CiAgICAgICAgdGFyZ2V0Q29tcGF0\naWJpbGl0eSBKYXZhVmVyc2lvbi5WRVJTSU9OXzFfOAogICAgfQogICAga290\nbGluT3B0aW9ucyB7CiAgICAgICAganZtVGFyZ2V0ID0gJzEuOCcKICAgIH0K\nICAgIGZsYXZvckRpbWVuc2lvbnMgImRlcGVuZGVuY3lWZXJzaW9ucyIKICAg\nIHByb2R1Y3RGbGF2b3JzIHsKICAgICAgICB1bml0eUlBUCB7CiAgICAgICAg\nICAgIGRpbWVuc2lvbiAiZGVwZW5kZW5jeVZlcnNpb25zIgogICAgICAgIH0K\nICAgICAgICBsYXRlc3REZXBlbmRlbmNpZXMgewogICAgICAgICAgICBkaW1l\nbnNpb24gImRlcGVuZGVuY3lWZXJzaW9ucyIKICAgICAgICB9CiAgICB9Cn0K\nCgpkZXBlbmRlbmNpZXMgewogICAgaW1wbGVtZW50YXRpb24gZmlsZVRyZWUo\nZGlyOiAnbGlicycsIGluY2x1ZGU6IFsnKi5qYXInXSkKICAgIGltcGxlbWVu\ndGF0aW9uICJvcmcuamV0YnJhaW5zLmtvdGxpbjprb3RsaW4tc3RkbGliLWpk\nazc6JGtvdGxpbl92ZXJzaW9uIgogICAgaW1wbGVtZW50YXRpb24gJ2FuZHJv\naWR4LmFubm90YXRpb246YW5ub3RhdGlvbjoxLjMuMCcKCiAgICBsYXRlc3RE\nZXBlbmRlbmNpZXNBcGkgImNvbS5yZXZlbnVlY2F0LnB1cmNoYXNlczpwdXJj\naGFzZXM6JHB1cmNoYXNlc192ZXJzaW9uIgogICAgbGF0ZXN0RGVwZW5kZW5j\naWVzQXBpICJjb20ucmV2ZW51ZWNhdC5wdXJjaGFzZXM6cHVyY2hhc2VzLWNv\ncmUtY29tbW9uOiRwdXJjaGFzZXNfdmVyc2lvbiIKICAgIGxhdGVzdERlcGVu\nZGVuY2llc0FwaSAiY29tLnJldmVudWVjYXQucHVyY2hhc2VzOnB1cmNoYXNl\ncy1jb3JlLXV0aWxzOiRwdXJjaGFzZXNfdmVyc2lvbiIKICAgIGxhdGVzdERl\ncGVuZGVuY2llc0FwaSAiY29tLnJldmVudWVjYXQucHVyY2hhc2VzOnB1cmNo\nYXNlcy1zdG9yZS1hbWF6b246JHB1cmNoYXNlc192ZXJzaW9uIgoKICAgIHVu\naXR5SUFQQXBpICJjb20ucmV2ZW51ZWNhdC5wdXJjaGFzZXM6cHVyY2hhc2Vz\nLXVuaXR5aWFwOiRwdXJjaGFzZXNfdmVyc2lvbiIKICAgIHVuaXR5SUFQQXBp\nICJjb20ucmV2ZW51ZWNhdC5wdXJjaGFzZXM6cHVyY2hhc2VzLWNvcmUtY29t\nbW9uLXVuaXR5aWFwOiRwdXJjaGFzZXNfdmVyc2lvbiIKICAgIHVuaXR5SUFQ\nQXBpICJjb20ucmV2ZW51ZWNhdC5wdXJjaGFzZXM6cHVyY2hhc2VzLWNvcmUt\ndXRpbHMtdW5pdHlpYXA6JHB1cmNoYXNlc192ZXJzaW9uIgogICAgdW5pdHlJ\nQVBBcGkgImNvbS5yZXZlbnVlY2F0LnB1cmNoYXNlczpwdXJjaGFzZXMtc3Rv\ncmUtYW1hem9uLXVuaXR5aWFwOiRwdXJjaGFzZXNfdmVyc2lvbiIKICAgIHRl\nc3RVbml0eUlBUEltcGxlbWVudGF0aW9uICJjb20uYW5kcm9pZC5iaWxsaW5n\nY2xpZW50OmJpbGxpbmc6JGJpbGxpbmdfdW5pdHlpYXBfcHVyY2hhc2VzX3Zl\ncnNpb24iCgogICAgLy8gYXNzZXJ0aW9uCiAgICB0ZXN0SW1wbGVtZW50YXRp\nb24gIm9yZy5qZXRicmFpbnMua290bGluOmtvdGxpbi10ZXN0OiRrb3RsaW5f\ndmVyc2lvbiIKCiAgICB0ZXN0SW1wbGVtZW50YXRpb24gIm9yZy5hc3NlcnRq\nOmFzc2VydGotY29yZTokYXNzZXJ0al92ZXJzaW9uIgoKICAgIHRlc3RJbXBs\nZW1lbnRhdGlvbiAiaW8ubW9ja2s6bW9ja2s6JG1vY2trX3ZlcnNpb24iCiAg\nICB0ZXN0SW1wbGVtZW50YXRpb24gImNvbS5yZXZlbnVlY2F0LnB1cmNoYXNl\nczpwdXJjaGFzZXMtc3RvcmUtZ29vZ2xlOiRwdXJjaGFzZXNfdmVyc2lvbiIK\nCiAgICAvLyBqdW5pdCA1CiAgICB0ZXN0SW1wbGVtZW50YXRpb24oIm9yZy5q\ndW5pdC5qdXBpdGVyOmp1bml0LWp1cGl0ZXItYXBpOjUuOC4yIikKICAgIHRl\nc3RSdW50aW1lT25seSgib3JnLmp1bml0Lmp1cGl0ZXI6anVuaXQtanVwaXRl\nci1lbmdpbmU6NS44LjIiKQp9CgpyZXBvc2l0b3JpZXMgewogICAgZ29vZ2xl\nKCkKICAgIG1hdmVuQ2VudHJhbCgpCn0KCi8vIENhbGwgcGFzc2luZyBwYXJh\nbWV0ZXIgLVBwdXJjaGFzZXNQYXRoPSIkSE9NRS9EZXZlbG9wbWVudC9yZXBv\ncy9wdXJjaGFzZXMtYW5kcm9pZCIKdGFzayBlbmFibGVMb2NhbEJ1aWxkIHsK\nICAgIGdyb3VwID0gJ1Rvb2xzJwogICAgZGVzY3JpcHRpb24gPSAnRW5hYmxl\nIGNvbXBvc2l0ZSBidWlsZCcKICAgIGRvTGFzdCB7CiAgICAgICAgbmV3IEZp\nbGUoIi5jb21wb3NpdGUtZW5hYmxlIikudGV4dCA9IHB1cmNoYXNlc1BhdGgK\nICAgIH0KfQoKdGFzayBkaXNhYmxlTG9jYWxCdWlsZCB7CiAgICBncm91cCA9\nICdUb29scycKICAgIGRlc2NyaXB0aW9uID0gJ0Rpc2FibGUgY29tcG9zaXRl\nIGJ1aWxkJwogICAgZG9MYXN0IHsKICAgICAgICBGaWxlIGZpbGUgPSBmaWxl\nKCIuY29tcG9zaXRlLWVuYWJsZSIpCiAgICAgICAgaWYgKGZpbGUuZXhpc3Rz\nKCkpIHsKICAgICAgICAgICAgZmlsZS5kZWxldGUoKQogICAgICAgIH0KICAg\nIH0KfQo=\n", - "encoding": "base64", - "_links": { - "self": "https://api.github.com/repos/RevenueCat/purchases-hybrid-common/contents/android/build.gradle?ref=3.3.0", - "git": "https://api.github.com/repos/RevenueCat/purchases-hybrid-common/git/blobs/bf01d3e549033338419b37ad3413c57cbfebdec5", - "html": "https://github.com/RevenueCat/purchases-hybrid-common/blob/3.3.0/android/build.gradle" - } -} \ No newline at end of file + "name": "libs.versions.toml", + "path": "android/gradle/libs.versions.toml", + "sha": "a2dbe5435b773f27f505c9d70e32b25f86e34fdf", + "size": 1669, + "url": "https://api.github.com/repos/RevenueCat/purchases-hybrid-common/contents/android/gradle/libs.versions.toml?ref=8.10.0-beta.8", + "html_url": "https://github.com/RevenueCat/purchases-hybrid-common/blob/8.10.0-beta.8/android/gradle/libs.versions.toml", + "git_url": "https://api.github.com/repos/RevenueCat/purchases-hybrid-common/git/blobs/a2dbe5435b773f27f505c9d70e32b25f86e34fdf", + "download_url": "https://raw.githubusercontent.com/RevenueCat/purchases-hybrid-common/8.10.0-beta.8/android/gradle/libs.versions.toml", + "type": "file", + "content": "W3ZlcnNpb25zXQphZ3AgPSAiOC4yLjAiCmFzc2VydGotY29yZSA9ICIzLjIy\nLjAiCmZyYWdtZW50S3R4ID0gIjEuNi4yIgpqdW5pdC1qdXBpdGVyID0gIjUu\nOC4yIgprb3RsaW4gPSAiMS43LjIxIgpqdW5pdCA9ICI0LjEzLjIiCm1vY2tr\nID0gIjEuMTIuOCIKcHVyY2hhc2VzID0gIjcuMy4xIgpkZXRla3QgPSAiMS4y\nMy4wIgphbmRyb2lkLWp1bml0NS12ZXJzaW9uID0gIjEuOC4yLjAiCm1hdmVu\nUHVibGlzaCA9ICIwLjIyLjAiCgpbbGlicmFyaWVzXQphc3NlcnRqLWNvcmUg\nPSB7IG1vZHVsZSA9ICJvcmcuYXNzZXJ0ajphc3NlcnRqLWNvcmUiLCB2ZXJz\naW9uLnJlZiA9ICJhc3NlcnRqLWNvcmUiIH0KZnJhZ21lbnQta3R4ID0geyBt\nb2R1bGUgPSAiYW5kcm9pZHguZnJhZ21lbnQ6ZnJhZ21lbnQta3R4IiwgdmVy\nc2lvbi5yZWYgPSAiZnJhZ21lbnRLdHgiIH0KanVuaXQgPSB7IGdyb3VwID0g\nImp1bml0IiwgbmFtZSA9ICJqdW5pdCIsIHZlcnNpb24ucmVmID0gImp1bml0\nIiB9Cmp1bml0LWp1cGl0ZXItYXBpID0geyBtb2R1bGUgPSAib3JnLmp1bml0\nLmp1cGl0ZXI6anVuaXQtanVwaXRlci1hcGkiLCB2ZXJzaW9uLnJlZiA9ICJq\ndW5pdC1qdXBpdGVyIiB9Cmp1bml0LWp1cGl0ZXItZW5naW5lID0geyBtb2R1\nbGUgPSAib3JnLmp1bml0Lmp1cGl0ZXI6anVuaXQtanVwaXRlci1lbmdpbmUi\nLCB2ZXJzaW9uLnJlZiA9ICJqdW5pdC1qdXBpdGVyIiB9CmtvdGxpbi10ZXN0\nID0geyBtb2R1bGUgPSAib3JnLmpldGJyYWlucy5rb3RsaW46a290bGluLXRl\nc3QiLCB2ZXJzaW9uLnJlZiA9ICJrb3RsaW4iIH0KbW9ja2sgPSB7IG1vZHVs\nZSA9ICJpby5tb2Nrazptb2NrayIsIHZlcnNpb24ucmVmID0gIm1vY2trIiB9\nCnB1cmNoYXNlcyA9IHsgbW9kdWxlID0gImNvbS5yZXZlbnVlY2F0LnB1cmNo\nYXNlczpwdXJjaGFzZXMiLCB2ZXJzaW9uLnJlZiA9ICJwdXJjaGFzZXMiIH0K\ncHVyY2hhc2VzLXVpID0geyBtb2R1bGUgPSAiY29tLnJldmVudWVjYXQucHVy\nY2hhc2VzOnB1cmNoYXNlcy11aSIsIHZlcnNpb24ucmVmID0gInB1cmNoYXNl\ncyIgfQpwdXJjaGFzZXMtYW1hem9uID0geyBtb2R1bGUgPSAiY29tLnJldmVu\ndWVjYXQucHVyY2hhc2VzOnB1cmNoYXNlcy1zdG9yZS1hbWF6b24iLCB2ZXJz\naW9uLnJlZiA9ICJwdXJjaGFzZXMiIH0KZGV0ZWt0LWZvcm1hdHRpbmcgPSB7\nIG1vZHVsZSA9ICJpby5naXRsYWIuYXJ0dXJib3NjaC5kZXRla3Q6ZGV0ZWt0\nLWZvcm1hdHRpbmciLCB2ZXJzaW9uLnJlZiA9ICJkZXRla3QiIH0KCltwbHVn\naW5zXQprb3RsaW5BbmRyb2lkID0geyBpZCA9ICJvcmcuamV0YnJhaW5zLmtv\ndGxpbi5hbmRyb2lkIiwgdmVyc2lvbi5yZWYgPSAia290bGluIiB9CmFuZHJv\naWRMaWJyYXJ5ID0geyBpZCA9ICJjb20uYW5kcm9pZC5saWJyYXJ5IiwgdmVy\nc2lvbi5yZWYgPSAiYWdwIiB9CmRldGVrdCA9IHsgaWQgPSAiaW8uZ2l0bGFi\nLmFydHVyYm9zY2guZGV0ZWt0IiwgdmVyc2lvbi5yZWYgPSAiZGV0ZWt0IiB9\nCmFuZHJvaWRKdW5pdDUgPSB7IGlkID0gImRlLm1hbm5vZGVybWF1cy5hbmRy\nb2lkLWp1bml0NSIsIHZlcnNpb24ucmVmID0gImFuZHJvaWQtanVuaXQ1LXZl\ncnNpb24iIH0KbWF2ZW5QdWJsaXNoID0geyBpZCA9ICJjb20udmFubmlrdGVj\naC5tYXZlbi5wdWJsaXNoIiwgdmVyc2lvbi5yZWYgPSAibWF2ZW5QdWJsaXNo\nIiB9Cg==\n", + "encoding": "base64", + "_links": { + "self": "https://api.github.com/repos/RevenueCat/purchases-hybrid-common/contents/android/gradle/libs.versions.toml?ref=8.10.0-beta.8", + "git": "https://api.github.com/repos/RevenueCat/purchases-hybrid-common/git/blobs/a2dbe5435b773f27f505c9d70e32b25f86e34fdf", + "html": "https://github.com/RevenueCat/purchases-hybrid-common/blob/8.10.0-beta.8/android/gradle/libs.versions.toml" + } +}