From 5c9a9c22ba235d8d4187c5dacf5e2d265863647e Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 17 Dec 2025 15:52:34 +0300 Subject: [PATCH] feat(ios): read and set Flutter build number in Fastfile for app store deployment --- ios/fastlane/Fastfile | 29 +++++++++++++++++-- .../oauth_verification_confirm_response.dart | 1 + .../models/oauth_verification_request.dart | 1 + .../oauth_verification_request_response.dart | 1 + test/core/constants/app_constants_test.dart | 1 + test/core/cubit/state_utils_test.dart | 1 + .../core/data/selection_popup_model_test.dart | 1 + test/core/enums/prefs_keys_test.dart | 1 + .../internet_connection_state_test.dart | 1 + test/core/prefs_keys_test.dart | 1 + .../routing/main_navigation_routes_test.dart | 1 + test/core/routing/other_routes_test.dart | 1 + test/core/routing/route_constants_test.dart | 1 + test/core/routing/settings_routes_test.dart | 1 + test/core/views/cubit/views_state_test.dart | 1 + test/core/widgets/add_item_button_test.dart | 1 + .../widgets/animated_option_button_test.dart | 1 + test/core/widgets/base_button_test.dart | 1 + .../widgets/bottom_sheet_with_blur_test.dart | 1 + test/core/widgets/cpfc_container_test.dart | 1 + test/core/widgets/custom_search_bar_test.dart | 1 + test/core/widgets/item_widget_test.dart | 1 + test/core/widgets/loader_test.dart | 1 + .../widgets/main_background_bouble_test.dart | 1 + .../widgets/marketing_bottom_sheet_test.dart | 1 + test/core/widgets/option_widget_test.dart | 1 + .../widgets/error_widget_test.dart | 1 + .../chosen_diet_widget_content_test.dart | 1 + .../widgets/comment_container_test.dart | 1 + .../finish_day_button_widget_test.dart | 1 + .../widgets/meal_summary_widget_test.dart | 1 + .../widgets/product_loader_widget_test.dart | 1 + .../widgets/info_bouble_test.dart | 1 + .../widgets/choice_chip_widget_test.dart | 1 + .../widgets/filter_badge_test.dart | 1 + .../widgets/status_widget_test.dart | 1 + .../glossary_repository_test.dart | 1 + .../widgets/notification_widget_test.dart | 1 + .../service/notifications_service_test.dart | 1 + 39 files changed, 65 insertions(+), 2 deletions(-) diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index 3a74adf3..52aa7ae8 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -48,8 +48,33 @@ platform :ios do UI.message "Configuring Flutter for release mode..." sh("cd .. && flutter build ios --config-only --release") + # Read build number from Flutter Generated.xcconfig + generated_xcconfig_path = File.join("..", "Flutter", "Generated.xcconfig") + flutter_build_number = nil + + if File.exist?(generated_xcconfig_path) + File.foreach(generated_xcconfig_path) do |line| + matches = line.match(/FLUTTER_BUILD_NUMBER=(.*)/) + if matches + flutter_build_number = matches[1].strip + break + end + end + end + + if flutter_build_number.nil? + UI.user_error!("Could not find FLUTTER_BUILD_NUMBER in #{generated_xcconfig_path}") + end + + UI.message "Flutter build number: #{flutter_build_number}" + match(type: "appstore", readonly: true) - increment_build_number(xcodeproj: "Runner.xcodeproj") + + # Set build number explicitly instead of incrementing + increment_build_number( + xcodeproj: "Runner.xcodeproj", + build_number: flutter_build_number + ) build_app( workspace: "Runner.xcworkspace", @@ -74,7 +99,7 @@ platform :ios do skip_submission: true, distribute_external: false, notify_external_testers: false, - changelog: "TestFlight build #{get_build_number(xcodeproj: 'Runner.xcodeproj')}", + changelog: "TestFlight build #{flutter_build_number}", verbose: true ) rescue => ex diff --git a/lib/features/auth/models/oauth_verification_confirm_response.dart b/lib/features/auth/models/oauth_verification_confirm_response.dart index 9333a03d..bbd3e9bc 100644 --- a/lib/features/auth/models/oauth_verification_confirm_response.dart +++ b/lib/features/auth/models/oauth_verification_confirm_response.dart @@ -16,3 +16,4 @@ abstract class OAuthVerificationConfirmResponse with _$OAuthVerificationConfirmR factory OAuthVerificationConfirmResponse.fromJson(Map json) => _$OAuthVerificationConfirmResponseFromJson(json); } + diff --git a/lib/features/auth/models/oauth_verification_request.dart b/lib/features/auth/models/oauth_verification_request.dart index 5d9c8408..b802bd88 100644 --- a/lib/features/auth/models/oauth_verification_request.dart +++ b/lib/features/auth/models/oauth_verification_request.dart @@ -10,3 +10,4 @@ abstract class OAuthVerificationRequest with _$OAuthVerificationRequest { factory OAuthVerificationRequest.fromJson(Map json) => _$OAuthVerificationRequestFromJson(json); } + diff --git a/lib/features/auth/models/oauth_verification_request_response.dart b/lib/features/auth/models/oauth_verification_request_response.dart index 32787602..6815ed73 100644 --- a/lib/features/auth/models/oauth_verification_request_response.dart +++ b/lib/features/auth/models/oauth_verification_request_response.dart @@ -10,3 +10,4 @@ abstract class OAuthVerificationRequestResponse with _$OAuthVerificationRequestR factory OAuthVerificationRequestResponse.fromJson(Map json) => _$OAuthVerificationRequestResponseFromJson(json); } + diff --git a/test/core/constants/app_constants_test.dart b/test/core/constants/app_constants_test.dart index 8c10cae7..18be5251 100644 --- a/test/core/constants/app_constants_test.dart +++ b/test/core/constants/app_constants_test.dart @@ -140,3 +140,4 @@ void main() { + diff --git a/test/core/cubit/state_utils_test.dart b/test/core/cubit/state_utils_test.dart index 63c632ca..db75a44b 100644 --- a/test/core/cubit/state_utils_test.dart +++ b/test/core/cubit/state_utils_test.dart @@ -75,3 +75,4 @@ void main() { + diff --git a/test/core/data/selection_popup_model_test.dart b/test/core/data/selection_popup_model_test.dart index 72b9e03d..a3d38aff 100644 --- a/test/core/data/selection_popup_model_test.dart +++ b/test/core/data/selection_popup_model_test.dart @@ -89,3 +89,4 @@ void main() { + diff --git a/test/core/enums/prefs_keys_test.dart b/test/core/enums/prefs_keys_test.dart index d9394d38..b2656a5d 100644 --- a/test/core/enums/prefs_keys_test.dart +++ b/test/core/enums/prefs_keys_test.dart @@ -38,3 +38,4 @@ void main() { + diff --git a/test/core/internet_connection_cubit/internet_connection_state_test.dart b/test/core/internet_connection_cubit/internet_connection_state_test.dart index 68dac160..034f43e7 100644 --- a/test/core/internet_connection_cubit/internet_connection_state_test.dart +++ b/test/core/internet_connection_cubit/internet_connection_state_test.dart @@ -64,3 +64,4 @@ void main() { + diff --git a/test/core/prefs_keys_test.dart b/test/core/prefs_keys_test.dart index e1962106..08907955 100644 --- a/test/core/prefs_keys_test.dart +++ b/test/core/prefs_keys_test.dart @@ -34,3 +34,4 @@ void main() { + diff --git a/test/core/routing/main_navigation_routes_test.dart b/test/core/routing/main_navigation_routes_test.dart index fd115acb..905d808c 100644 --- a/test/core/routing/main_navigation_routes_test.dart +++ b/test/core/routing/main_navigation_routes_test.dart @@ -31,3 +31,4 @@ void main() { + diff --git a/test/core/routing/other_routes_test.dart b/test/core/routing/other_routes_test.dart index 19b4747a..b5304fca 100644 --- a/test/core/routing/other_routes_test.dart +++ b/test/core/routing/other_routes_test.dart @@ -35,3 +35,4 @@ void main() { + diff --git a/test/core/routing/route_constants_test.dart b/test/core/routing/route_constants_test.dart index 66b3306b..7e6824ad 100644 --- a/test/core/routing/route_constants_test.dart +++ b/test/core/routing/route_constants_test.dart @@ -114,3 +114,4 @@ void main() { + diff --git a/test/core/routing/settings_routes_test.dart b/test/core/routing/settings_routes_test.dart index 70e0af0e..b0faed74 100644 --- a/test/core/routing/settings_routes_test.dart +++ b/test/core/routing/settings_routes_test.dart @@ -38,3 +38,4 @@ void main() { + diff --git a/test/core/views/cubit/views_state_test.dart b/test/core/views/cubit/views_state_test.dart index 7214e4fd..24f1dbc1 100644 --- a/test/core/views/cubit/views_state_test.dart +++ b/test/core/views/cubit/views_state_test.dart @@ -32,3 +32,4 @@ void main() { + diff --git a/test/core/widgets/add_item_button_test.dart b/test/core/widgets/add_item_button_test.dart index f5235cb7..dc61a768 100644 --- a/test/core/widgets/add_item_button_test.dart +++ b/test/core/widgets/add_item_button_test.dart @@ -68,3 +68,4 @@ void main() { + diff --git a/test/core/widgets/animated_option_button_test.dart b/test/core/widgets/animated_option_button_test.dart index 62809f4d..b539804d 100644 --- a/test/core/widgets/animated_option_button_test.dart +++ b/test/core/widgets/animated_option_button_test.dart @@ -120,3 +120,4 @@ void main() { + diff --git a/test/core/widgets/base_button_test.dart b/test/core/widgets/base_button_test.dart index b0d3a80a..4313348b 100644 --- a/test/core/widgets/base_button_test.dart +++ b/test/core/widgets/base_button_test.dart @@ -57,3 +57,4 @@ void main() { + diff --git a/test/core/widgets/bottom_sheet_with_blur_test.dart b/test/core/widgets/bottom_sheet_with_blur_test.dart index bcd64961..6f50a641 100644 --- a/test/core/widgets/bottom_sheet_with_blur_test.dart +++ b/test/core/widgets/bottom_sheet_with_blur_test.dart @@ -139,3 +139,4 @@ void main() { + diff --git a/test/core/widgets/cpfc_container_test.dart b/test/core/widgets/cpfc_container_test.dart index cf80ae48..bcd2e51a 100644 --- a/test/core/widgets/cpfc_container_test.dart +++ b/test/core/widgets/cpfc_container_test.dart @@ -100,3 +100,4 @@ void main() { + diff --git a/test/core/widgets/custom_search_bar_test.dart b/test/core/widgets/custom_search_bar_test.dart index 3e7ea5a7..932204c9 100644 --- a/test/core/widgets/custom_search_bar_test.dart +++ b/test/core/widgets/custom_search_bar_test.dart @@ -168,3 +168,4 @@ void main() { + diff --git a/test/core/widgets/item_widget_test.dart b/test/core/widgets/item_widget_test.dart index e827b8f6..a016d981 100644 --- a/test/core/widgets/item_widget_test.dart +++ b/test/core/widgets/item_widget_test.dart @@ -61,3 +61,4 @@ void main() { + diff --git a/test/core/widgets/loader_test.dart b/test/core/widgets/loader_test.dart index 5d5bf3a6..5371c6c3 100644 --- a/test/core/widgets/loader_test.dart +++ b/test/core/widgets/loader_test.dart @@ -46,3 +46,4 @@ void main() { + diff --git a/test/core/widgets/main_background_bouble_test.dart b/test/core/widgets/main_background_bouble_test.dart index 60df496e..8c531f72 100644 --- a/test/core/widgets/main_background_bouble_test.dart +++ b/test/core/widgets/main_background_bouble_test.dart @@ -100,3 +100,4 @@ void main() { + diff --git a/test/core/widgets/marketing_bottom_sheet_test.dart b/test/core/widgets/marketing_bottom_sheet_test.dart index 3f79c376..c5c0b4c7 100644 --- a/test/core/widgets/marketing_bottom_sheet_test.dart +++ b/test/core/widgets/marketing_bottom_sheet_test.dart @@ -80,3 +80,4 @@ void main() { + diff --git a/test/core/widgets/option_widget_test.dart b/test/core/widgets/option_widget_test.dart index fdaf84db..e5083c2d 100644 --- a/test/core/widgets/option_widget_test.dart +++ b/test/core/widgets/option_widget_test.dart @@ -69,3 +69,4 @@ void main() { + diff --git a/test/features/create_diet/presentation/widgets/error_widget_test.dart b/test/features/create_diet/presentation/widgets/error_widget_test.dart index 36d0a184..16eb0937 100644 --- a/test/features/create_diet/presentation/widgets/error_widget_test.dart +++ b/test/features/create_diet/presentation/widgets/error_widget_test.dart @@ -75,3 +75,4 @@ void main() { + diff --git a/test/features/diary/presentation/widgets/chosen_diet_widget_content_test.dart b/test/features/diary/presentation/widgets/chosen_diet_widget_content_test.dart index 15ef7bd4..6947feaf 100644 --- a/test/features/diary/presentation/widgets/chosen_diet_widget_content_test.dart +++ b/test/features/diary/presentation/widgets/chosen_diet_widget_content_test.dart @@ -84,3 +84,4 @@ void main() { + diff --git a/test/features/diary/presentation/widgets/comment_container_test.dart b/test/features/diary/presentation/widgets/comment_container_test.dart index dd6296da..1e5056dc 100644 --- a/test/features/diary/presentation/widgets/comment_container_test.dart +++ b/test/features/diary/presentation/widgets/comment_container_test.dart @@ -62,3 +62,4 @@ void main() { + diff --git a/test/features/diary/presentation/widgets/finish_day_button_widget_test.dart b/test/features/diary/presentation/widgets/finish_day_button_widget_test.dart index 52a1d8ba..41aff0e0 100644 --- a/test/features/diary/presentation/widgets/finish_day_button_widget_test.dart +++ b/test/features/diary/presentation/widgets/finish_day_button_widget_test.dart @@ -57,3 +57,4 @@ void main() { + diff --git a/test/features/diary/presentation/widgets/meal_summary_widget_test.dart b/test/features/diary/presentation/widgets/meal_summary_widget_test.dart index 2625403e..37a5e3be 100644 --- a/test/features/diary/presentation/widgets/meal_summary_widget_test.dart +++ b/test/features/diary/presentation/widgets/meal_summary_widget_test.dart @@ -94,3 +94,4 @@ void main() { + diff --git a/test/features/diary/presentation/widgets/product_loader_widget_test.dart b/test/features/diary/presentation/widgets/product_loader_widget_test.dart index 0dc02252..3419c3c3 100644 --- a/test/features/diary/presentation/widgets/product_loader_widget_test.dart +++ b/test/features/diary/presentation/widgets/product_loader_widget_test.dart @@ -46,3 +46,4 @@ void main() { + diff --git a/test/features/diets/presentation/widgets/info_bouble_test.dart b/test/features/diets/presentation/widgets/info_bouble_test.dart index 1c5889ef..2f324249 100644 --- a/test/features/diets/presentation/widgets/info_bouble_test.dart +++ b/test/features/diets/presentation/widgets/info_bouble_test.dart @@ -112,3 +112,4 @@ void main() { + diff --git a/test/features/feed/presentation/widgets/choice_chip_widget_test.dart b/test/features/feed/presentation/widgets/choice_chip_widget_test.dart index 0c54328f..0a8ada5f 100644 --- a/test/features/feed/presentation/widgets/choice_chip_widget_test.dart +++ b/test/features/feed/presentation/widgets/choice_chip_widget_test.dart @@ -142,3 +142,4 @@ void main() { + diff --git a/test/features/feed/presentation/widgets/filter_badge_test.dart b/test/features/feed/presentation/widgets/filter_badge_test.dart index e0023ab4..53115814 100644 --- a/test/features/feed/presentation/widgets/filter_badge_test.dart +++ b/test/features/feed/presentation/widgets/filter_badge_test.dart @@ -54,3 +54,4 @@ void main() { + diff --git a/test/features/finances_and_consultations_archive/presentation/widgets/status_widget_test.dart b/test/features/finances_and_consultations_archive/presentation/widgets/status_widget_test.dart index ca12ebef..4bf14506 100644 --- a/test/features/finances_and_consultations_archive/presentation/widgets/status_widget_test.dart +++ b/test/features/finances_and_consultations_archive/presentation/widgets/status_widget_test.dart @@ -62,3 +62,4 @@ void main() { + diff --git a/test/features/glossary/repositories/glossary_repository_test.dart b/test/features/glossary/repositories/glossary_repository_test.dart index 5cb09ffb..31144e30 100644 --- a/test/features/glossary/repositories/glossary_repository_test.dart +++ b/test/features/glossary/repositories/glossary_repository_test.dart @@ -55,3 +55,4 @@ void main() { + diff --git a/test/features/notifications/presentation/widgets/notification_widget_test.dart b/test/features/notifications/presentation/widgets/notification_widget_test.dart index 11b00faa..e6781201 100644 --- a/test/features/notifications/presentation/widgets/notification_widget_test.dart +++ b/test/features/notifications/presentation/widgets/notification_widget_test.dart @@ -1032,3 +1032,4 @@ void main() { + diff --git a/test/features/notifications/service/notifications_service_test.dart b/test/features/notifications/service/notifications_service_test.dart index a05cf8f0..f90e2956 100644 --- a/test/features/notifications/service/notifications_service_test.dart +++ b/test/features/notifications/service/notifications_service_test.dart @@ -64,3 +64,4 @@ void main() { +