diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 00000000..3b47f2e4 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +3.3.9 diff --git a/Gemfile b/Gemfile index 7a118b49..1bc925f1 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,5 @@ source "https://rubygems.org" +ruby "3.3.9" + gem "fastlane" diff --git a/Gemfile.lock b/Gemfile.lock index d76974dd..4b84c268 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -234,5 +234,8 @@ PLATFORMS DEPENDENCIES fastlane +RUBY VERSION + ruby 3.3.9p170 + BUNDLED WITH 2.7.2 diff --git a/Projects/Presentation/Hifi/Sources/Reducer/HifiFeature.swift b/Projects/Presentation/Hifi/Sources/Reducer/HifiFeature.swift index 11eac7c9..a6e9100a 100644 --- a/Projects/Presentation/Hifi/Sources/Reducer/HifiFeature.swift +++ b/Projects/Presentation/Hifi/Sources/Reducer/HifiFeature.swift @@ -48,7 +48,7 @@ public struct HifiFeature { } public enum AsyncAction: Equatable { - case search(reset: Bool) + case searchRequested(reset: Bool) } public enum InnerAction: Equatable { @@ -91,21 +91,21 @@ extension HifiFeature { ) -> Effect { switch action { case .onAppear: - return .send(.async(.search(reset: true))) + return .send(.async(.searchRequested(reset: true))) case let .categoryTapped(category): state.selectedCategory = category - return .send(.async(.search(reset: true))) + return .send(.async(.searchRequested(reset: true))) case let .swipedCategory(forward): // 좌우 스와이프 → 인접 카테고리로 전환 (범위 벗어나면 무시) guard let next = adjacentCategory(in: state, forward: forward) else { return .none } state.selectedCategory = next - return .send(.async(.search(reset: true))) + return .send(.async(.searchRequested(reset: true))) case let .sortTapped(sort): state.selectedSort = sort - return .send(.async(.search(reset: true))) + return .send(.async(.searchRequested(reset: true))) case let .itemTapped(id): return .send(.delegate(.openBattle(battleId: id))) @@ -113,7 +113,7 @@ extension HifiFeature { case .reachedBottom: // 무한 스크롤: 다음 페이지가 있고 로딩 중이 아니면 추가 로드. guard state.hasNext, !state.isLoading else { return .none } - return .send(.async(.search(reset: false))) + return .send(.async(.searchRequested(reset: false))) } } @@ -131,7 +131,7 @@ extension HifiFeature { action: AsyncAction ) -> Effect { switch action { - case let .search(reset): + case let .searchRequested(reset): state.isLoading = true if reset { state.items = [] } let category = state.selectedCategory.queryValue diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 9e7a0a04..3949fc99 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,5 +1,4 @@ # Fastlane 기본 설정 -update_fastlane default_platform(:ios) ENV["FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT"] = "600" @@ -101,16 +100,21 @@ platform :ios do scheme: "Picke-Stage", configuration: "Release", export_method: "app-store", - output_directory: File.expand_path("../#{OUTPUT_DIR}"), + output_directory: File.expand_path(OUTPUT_DIR), output_name: IPA_FILENAME, clean: false, - silent: true, + silent: false, + build_timing_summary: true, + disable_package_automatic_updates: true, + skip_package_dependencies_resolution: true, + skip_package_repository_fetches: true, + use_system_scm: true, xcargs: "CODE_SIGN_IDENTITY='Apple Distribution' CODE_SIGN_STYLE=Manual DEVELOPMENT_TEAM=#{TEAM_ID} " + "COMPILER_INDEX_STORE_ENABLE=NO ENABLE_BITCODE=NO " + - "SWIFT_COMPILATION_MODE=wholemodule -parallelizeTargets " + + "SWIFT_COMPILATION_MODE=incremental -parallelizeTargets " + "ENABLE_PARALLEL_SIGNING=YES DISABLE_MANUAL_TARGET_ORDER_BUILD_WARNING=YES " + "FRAMEWORK_SEARCH_PATHS='$(inherited)' LIBRARY_SEARCH_PATHS='$(inherited)' " + - "-allowProvisioningUpdates -quiet", + "-allowProvisioningUpdates", export_options: { signingStyle: "manual", uploadBitcode: false, @@ -258,16 +262,21 @@ platform :ios do scheme: "Picke-Prod", configuration: "Release", export_method: "app-store", - output_directory: File.expand_path("../#{OUTPUT_DIR}"), + output_directory: File.expand_path(OUTPUT_DIR), output_name: IPA_FILENAME, clean: false, - silent: true, + silent: false, + build_timing_summary: true, + disable_package_automatic_updates: true, + skip_package_dependencies_resolution: true, + skip_package_repository_fetches: true, + use_system_scm: true, xcargs: "CODE_SIGN_IDENTITY='Apple Distribution: Wonji Suh (N94CS4N6VR)' CODE_SIGN_STYLE=Manual DEVELOPMENT_TEAM=#{TEAM_ID} " + "COMPILER_INDEX_STORE_ENABLE=NO ENABLE_BITCODE=NO " + - "SWIFT_COMPILATION_MODE=wholemodule -parallelizeTargets " + + "SWIFT_COMPILATION_MODE=incremental -parallelizeTargets " + "ENABLE_PARALLEL_SIGNING=YES DISABLE_MANUAL_TARGET_ORDER_BUILD_WARNING=YES " + "FRAMEWORK_SEARCH_PATHS='$(inherited)' LIBRARY_SEARCH_PATHS='$(inherited)' " + - "-allowProvisioningUpdates -quiet", + "-allowProvisioningUpdates", export_options: { signingStyle: "manual", uploadBitcode: false, @@ -356,6 +365,3 @@ platform :ios do end end end - - - diff --git a/fastlane/README.md b/fastlane/README.md new file mode 100644 index 00000000..6a379018 --- /dev/null +++ b/fastlane/README.md @@ -0,0 +1,48 @@ +fastlane documentation +---- + +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +```sh +xcode-select --install +``` + +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) + +# Available Actions + +## iOS + +### ios QA + +```sh +[bundle exec] fastlane ios QA +``` + +Upload to TestFlight (Debug) + +### ios release + +```sh +[bundle exec] fastlane ios release +``` + +Submit to App Store + +### ios submit_for_review + +```sh +[bundle exec] fastlane ios submit_for_review +``` + +Submit already uploaded version for review + +---- + +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).