From a91dfaa9ef73186d033ab9fffb59bc5ab9703757 Mon Sep 17 00:00:00 2001 From: Toni Rico Date: Mon, 17 Nov 2025 17:23:00 +0100 Subject: [PATCH 1/2] Add BC7 flavor of library --- .circleci/config.yml | 33 ++++++++++++ fastlane/Fastfile | 118 +++++++++++++++++++++++++++++++++++++++++++ fastlane/README.md | 16 ++++++ 3 files changed, 167 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index c3d5ceded..9540c2e68 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -459,6 +459,32 @@ jobs: name: release command: bundle exec fastlane release_purchases_ui_flutter + make-release-bc7: + description: "Publishes a new version of purchases_flutter with bc7 to pub.dev" + docker: + - image: ghcr.io/cirruslabs/flutter:stable + steps: + - checkout + - revenuecat/install-gem-unix-dependencies: + cache-version: v1 + - revenuecat/trust-github-key + - run: + name: release + command: bundle exec fastlane release_bc7 + + make-release-purchases-flutter-ui-bc7: + description: "Publishes a new version of purchases_ui_flutter with bc7 to pub.dev" + docker: + - image: ghcr.io/cirruslabs/flutter:stable + steps: + - checkout + - revenuecat/install-gem-unix-dependencies: + cache-version: v1 + - revenuecat/trust-github-key + - run: + name: release + command: bundle exec fastlane release_purchases_ui_bc7_flutter + github_release: description: "Creates a github release with the current version" docker: @@ -521,10 +547,17 @@ workflows: requires: - make-release <<: *release-tags + - make-release-bc7: *release-tags + - make-release-purchases-flutter-ui-bc7: + requires: + - make-release-bc7 + <<: *release-tags - github_release: requires: - make-release - make-release-purchases-flutter-ui + - make-release-bc7 + - make-release-purchases-flutter-ui-bc7 <<: *release-tags weekly-run-workflow: when: diff --git a/fastlane/Fastfile b/fastlane/Fastfile index e3cec9efe..61a71a9e9 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -60,6 +60,11 @@ lane :bump do |options| versions_file_path: versions_path, is_prerelease: options[:is_prerelease] ) + + # Update CHANGELOG.md to include BC7 version + update_changelog_with_bc7_version(changelog_path, current_version_number) + commit_current_changes(commit_message: 'Update CHANGELOG.md with BC7 version') + update_hybrids_versions_file( versions_file_path: versions_path, new_sdk_version: current_version_number, @@ -114,6 +119,72 @@ lane :release_purchases_ui_flutter do |options| end end +desc "Create BC7 variant release" +lane :release_bc7 do |options| + # Modify files in-place for BC7 variant + UI.message("Creating BC7 variant of purchases_flutter in-place...") + + # Apply BC7 modifications + apply_bc7_modifications('..', false) + + # Temporarily commit changes to satisfy git clean check + Dir.chdir('..') do + sh('git', 'add', 'pubspec.yaml', 'android/build.gradle') + sh('git', 'commit', '-m', '[TEMPORARY] BC7 modifications for publishing') + end + + # Dry run + Dir.chdir('..') do + sh('flutter', 'pub', 'publish', '--dry-run') + end + + # Setup credentials and publish +# setup_credentials_file +# Dir.chdir('..') do +# sh('flutter', 'pub', 'publish', '--force') +# end + + UI.success("✅ Successfully published purchases_bc7_flutter") + + # Undo the temporary commit + Dir.chdir('..') do + sh('git', 'reset', 'HEAD~1') + end +end + +desc "Create purchases_ui_bc7_flutter release" +lane :release_purchases_ui_bc7_flutter do |options| + # Modify files in-place for BC7 variant + UI.message("Creating BC7 variant of purchases_ui_flutter in-place...") + + # Apply BC7 modifications + apply_bc7_modifications('../purchases_ui_flutter', true) + + # Temporarily commit changes to satisfy git clean check + Dir.chdir('../purchases_ui_flutter') do + sh('git', 'add', 'pubspec.yaml', 'android/build.gradle') + sh('git', 'commit', '-m', '[TEMPORARY] BC7 modifications for publishing') + end + + # Dry run + Dir.chdir('../purchases_ui_flutter') do + sh('flutter', 'pub', 'publish', '--dry-run') + end + + # Setup credentials and publish +# setup_credentials_file +# Dir.chdir('../purchases_ui_flutter') do +# sh('flutter', 'pub', 'publish', '--force') +# end + + UI.success("✅ Successfully published purchases_ui_bc7_flutter") + + # Undo the temporary commit + Dir.chdir('../purchases_ui_flutter') do + sh('git', 'reset', 'HEAD~1') + end +end + desc "Make github release with current version number" lane :github_release_current_version do |options| github_release(version: current_version_number) @@ -304,3 +375,50 @@ def check_no_git_tag_exists(version_number) raise "git tag with version #{version_number} already exists!" end end + +def update_changelog_with_bc7_version(changelog_path, version) + changelog_file_path = File.join('..', changelog_path) + changelog_content = File.read(changelog_file_path) + + # Find the first occurrence of "## X.Y.Z" and replace with "## X.Y.Z & X.Y.Z+bc7" + changelog_content.sub!(/^## (#{Regexp.escape(version)})$/, "## \\1 & \\1+bc7") + + File.write(changelog_file_path, changelog_content) + UI.success("✅ Updated CHANGELOG.md to include BC7 version") +end + +def apply_bc7_modifications(source_dir, is_ui_library) + # Update pubspec.yaml - append -bc7 to version + pubspec_path = File.join(source_dir, 'pubspec.yaml') + pubspec_content = File.read(pubspec_path) + + UI.message("🔧 Updating pubspec.yaml for UI library BC7 variant...") + # Append -bc7 to version number + pubspec_content.gsub!(/^version:\s+(\S+)/, 'version: \1+bc7') + + File.write(pubspec_path, pubspec_content) + UI.success("✅ Updated pubspec.yaml with BC7 version") + + # Update Android build.gradle - change dependency to BC7 variant + build_gradle_path = File.join(source_dir, 'android', 'build.gradle') + build_gradle_content = File.read(build_gradle_path) + + if is_ui_library + UI.message("🔧 Updating Android build.gradle for UI library...") + # Change purchases-hybrid-common-ui to purchases-hybrid-common-ui-bc7 + build_gradle_content.gsub!( + 'com.revenuecat.purchases:purchases-hybrid-common-ui:', + 'com.revenuecat.purchases:purchases-hybrid-common-ui-bc7:' + ) + else + UI.message("🔧 Updating Android build.gradle for main library...") + # Change purchases-hybrid-common to purchases-hybrid-common-bc7 + build_gradle_content.gsub!( + 'com.revenuecat.purchases:purchases-hybrid-common:', + 'com.revenuecat.purchases:purchases-hybrid-common-bc7:' + ) + end + + File.write(build_gradle_path, build_gradle_content) + UI.success("✅ Updated Android build.gradle with BC7 dependency") +end diff --git a/fastlane/README.md b/fastlane/README.md index 1b8863200..7b3d3a724 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -45,6 +45,22 @@ Create release Create purchases_ui_flutter release +### release_bc7 + +```sh +[bundle exec] fastlane release_bc7 +``` + +Create BC7 variant release + +### release_purchases_ui_bc7_flutter + +```sh +[bundle exec] fastlane release_purchases_ui_bc7_flutter +``` + +Create purchases_ui_bc7_flutter release + ### github_release_current_version ```sh From fa075f21ceff2b4114ee8168c5b3daf60e3227e2 Mon Sep 17 00:00:00 2001 From: Toni Rico Date: Mon, 17 Nov 2025 17:52:23 +0100 Subject: [PATCH 2/2] Uncomment actual publish --- fastlane/Fastfile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 61a71a9e9..c1e834c51 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -139,10 +139,10 @@ lane :release_bc7 do |options| end # Setup credentials and publish -# setup_credentials_file -# Dir.chdir('..') do -# sh('flutter', 'pub', 'publish', '--force') -# end + setup_credentials_file + Dir.chdir('..') do + sh('flutter', 'pub', 'publish', '--force') + end UI.success("✅ Successfully published purchases_bc7_flutter") @@ -172,10 +172,10 @@ lane :release_purchases_ui_bc7_flutter do |options| end # Setup credentials and publish -# setup_credentials_file -# Dir.chdir('../purchases_ui_flutter') do -# sh('flutter', 'pub', 'publish', '--force') -# end + setup_credentials_file + Dir.chdir('../purchases_ui_flutter') do + sh('flutter', 'pub', 'publish', '--force') + end UI.success("✅ Successfully published purchases_ui_bc7_flutter")