From 27f4904b5b8632a9811f61f5d3250087c06bed5a Mon Sep 17 00:00:00 2001 From: Mo Gharari Date: Sat, 9 Dec 2023 17:11:53 +0100 Subject: [PATCH 01/16] Add simulator flag to spm action for swift compiler --- fastlane/lib/fastlane/actions/spm.rb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index 414e7010deb..dae834124c2 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -10,6 +10,15 @@ def self.run(params) cmd << "--configuration #{params[:configuration]}" if params[:configuration] cmd << "--disable-sandbox" if params[:disable_sandbox] cmd << "--verbose" if params[:verbose] + if params[:simulator] + simulator_flags = [ + "-Xswiftc", "-sdk", + "-Xswiftc", "$(xcrun --sdk #{params[:simulator]} --show-sdk-path)", + "-Xswiftc", "-target", + "-Xswiftc", "x86_64-apple-ios$(xcrun --sdk #{params[:simulator]} --show-sdk-version)-simulator" + ] + cmd += simulator_flags + end cmd << params[:command] if package_commands.include?(params[:command]) cmd << "--enable-code-coverage" if params[:enable_code_coverage] && (params[:command] == 'generate-xcodeproj' || params[:command] == 'test') if params[:xcconfig] @@ -93,7 +102,12 @@ def self.available_options env_name: "FL_SPM_VERBOSE", description: "Increase verbosity of informational output", type: Boolean, - default_value: false) + default_value: false), + FastlaneCore::ConfigItem.new(key: :simulator, + env_name: "FL_SPM_SIMULATOR", + description: "Specifies the simulator to pass for Swift Compiler", + type: String, + optional: true) ] end From 50e3f57e9bf583b3d8a7bbc81327d47c97972d72 Mon Sep 17 00:00:00 2001 From: Mo Gharari Date: Sun, 10 Dec 2023 16:15:37 +0100 Subject: [PATCH 02/16] add user entry syntax check --- fastlane/lib/fastlane/actions/spm.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index dae834124c2..04785ee9f1a 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -11,11 +11,16 @@ def self.run(params) cmd << "--disable-sandbox" if params[:disable_sandbox] cmd << "--verbose" if params[:verbose] if params[:simulator] + # Check if the simulator syntax is correct using a regular expression + unless params[:simulator] =~ /^(iphone|ipad|macos)simulator(\d+\.\d+)?$/ + UI.error("Invalid simulator syntax. Please use 'iphonesimulator', 'ipadsimulator', or 'macossimulator'.") + return + end simulator_flags = [ "-Xswiftc", "-sdk", "-Xswiftc", "$(xcrun --sdk #{params[:simulator]} --show-sdk-path)", "-Xswiftc", "-target", - "-Xswiftc", "x86_64-apple-ios$(xcrun --sdk #{params[:simulator]} --show-sdk-version)-simulator" + "-Xswiftc", "x86_64-apple-ios$(xcrun --sdk #{params[:simulator]} --show-sdk-version | cut -d '.' -f 1)-simulator" ] cmd += simulator_flags end From 52c9b0567f144249d334e750e252b95b993c9399 Mon Sep 17 00:00:00 2001 From: Mo Gharari Date: Mon, 11 Dec 2023 09:14:49 +0100 Subject: [PATCH 03/16] removing ipadsimulator from syntax check --- fastlane/lib/fastlane/actions/spm.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index 04785ee9f1a..fb1529f0e9f 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -12,8 +12,8 @@ def self.run(params) cmd << "--verbose" if params[:verbose] if params[:simulator] # Check if the simulator syntax is correct using a regular expression - unless params[:simulator] =~ /^(iphone|ipad|macos)simulator(\d+\.\d+)?$/ - UI.error("Invalid simulator syntax. Please use 'iphonesimulator', 'ipadsimulator', or 'macossimulator'.") + unless params[:simulator] =~ /^(iphone|macos)simulator(\d+\.\d+)?$/ + UI.error("Invalid simulator syntax. Please use 'iphonesimulator', or 'macossimulator'.") return end simulator_flags = [ From 9b88cd9ea2861763ac77125764810c338ea7a39f Mon Sep 17 00:00:00 2001 From: Mo Gharari Date: Mon, 11 Dec 2023 21:08:35 +0100 Subject: [PATCH 04/16] Adding verify_block for flag check --- fastlane/lib/fastlane/actions/spm.rb | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index fb1529f0e9f..24d559d56ee 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -11,11 +11,6 @@ def self.run(params) cmd << "--disable-sandbox" if params[:disable_sandbox] cmd << "--verbose" if params[:verbose] if params[:simulator] - # Check if the simulator syntax is correct using a regular expression - unless params[:simulator] =~ /^(iphone|macos)simulator(\d+\.\d+)?$/ - UI.error("Invalid simulator syntax. Please use 'iphonesimulator', or 'macossimulator'.") - return - end simulator_flags = [ "-Xswiftc", "-sdk", "-Xswiftc", "$(xcrun --sdk #{params[:simulator]} --show-sdk-path)", @@ -112,7 +107,10 @@ def self.available_options env_name: "FL_SPM_SIMULATOR", description: "Specifies the simulator to pass for Swift Compiler", type: String, - optional: true) + optional: true, + verify_block: proc do |value| + UI.user_error!("Please pass a valid simulator: (iphonesimulator|macossimulator)") unless valid_simulators.include?(value) + end) ] end @@ -158,6 +156,10 @@ def self.valid_configurations def self.xcpretty_output_types %w(simple test knock tap) end + + def self.valid_simulators + %w(iphonesimulator macossimulator) + end end end end From a066d0f4810f215c6907ff5a4e78b821fe0e6f4c Mon Sep 17 00:00:00 2001 From: Mo Gharari Date: Tue, 12 Dec 2023 07:02:31 +0100 Subject: [PATCH 05/16] adding simulators list to user_error --- fastlane/lib/fastlane/actions/spm.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index 24d559d56ee..e6890ee3fd8 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -109,7 +109,7 @@ def self.available_options type: String, optional: true, verify_block: proc do |value| - UI.user_error!("Please pass a valid simulator: (iphonesimulator|macossimulator)") unless valid_simulators.include?(value) + UI.user_error!("Please pass a valid simulator: (#{valid_simulators.join('|')})") unless valid_simulators.include?(value) end) ] end From f61944a067ae256cf0f462204f4e965429f8eb8a Mon Sep 17 00:00:00 2001 From: Mohammad Gharari Date: Wed, 13 Dec 2023 18:35:05 +0100 Subject: [PATCH 06/16] Update fastlane/lib/fastlane/actions/spm.rb Co-authored-by: Roger Oba --- fastlane/lib/fastlane/actions/spm.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index e6890ee3fd8..9db3fdb7d9a 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -105,7 +105,7 @@ def self.available_options default_value: false), FastlaneCore::ConfigItem.new(key: :simulator, env_name: "FL_SPM_SIMULATOR", - description: "Specifies the simulator to pass for Swift Compiler", + description: "Specifies the simulator to pass for Swift Compiler (one of: #{valid_simulators.join(', ')})", type: String, optional: true, verify_block: proc do |value| From d83f680dcb664a4c36e13e93e363b6828823b1d7 Mon Sep 17 00:00:00 2001 From: Mohammad Gharari Date: Wed, 13 Dec 2023 18:35:11 +0100 Subject: [PATCH 07/16] Update fastlane/lib/fastlane/actions/spm.rb Co-authored-by: Roger Oba --- fastlane/lib/fastlane/actions/spm.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index 9db3fdb7d9a..da42561a26c 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -109,7 +109,7 @@ def self.available_options type: String, optional: true, verify_block: proc do |value| - UI.user_error!("Please pass a valid simulator: (#{valid_simulators.join('|')})") unless valid_simulators.include?(value) + UI.user_error!("Please pass a valid simulator. Use one of the following: #{valid_simulators.join(', ')}") unless valid_simulators.include?(value) end) ] end From b07b167440238c6af5dbf5e2652c4d62835d2fca Mon Sep 17 00:00:00 2001 From: Mo Gharari Date: Wed, 13 Dec 2023 19:37:19 +0100 Subject: [PATCH 08/16] Adding unit tests for simulator --- fastlane/spec/actions_specs/spm_spec.rb | 37 +++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/fastlane/spec/actions_specs/spm_spec.rb b/fastlane/spec/actions_specs/spm_spec.rb index 498b600d2d2..57487fa6b6b 100644 --- a/fastlane/spec/actions_specs/spm_spec.rb +++ b/fastlane/spec/actions_specs/spm_spec.rb @@ -339,6 +339,43 @@ expect(result).to eq("set -o pipefail && swift package --verbose generate-xcodeproj --xcconfig-overrides Package.xcconfig 2>&1 | xcpretty --simple") end end + + context "when simulator is specified" do + it "adds simulator flags to the build command" do + result = Fastlane::FastFile.new.parse("lane :test do + spm( + command: 'build', + simulator: 'iphonesimulator' + ) + end").runner.execute(:test) + + expect(result).to eq("swift build -Xswiftc -sdk -Xswiftc $(xcrun --sdk iphonesimulator --show-sdk-path) -Xswiftc -target -Xswiftc x86_64-apple-ios$(xcrun --sdk iphonesimulator --show-sdk-version | cut -d '.' -f 1)-simulator") + end + + it "raises an error if simulator syntax is invalid" do + expect do + Fastlane::FastFile.new.parse("lane :test do + spm( + command: 'build', + simulator: 'invalid_simulator' + ) + end").runner.execute(:test) + end.to raise_error("Invalid simulator syntax. Please use 'iphonesimulator', 'ipadsimulator', or 'macossimulator'.") + end + end + + context "when simulator is specified for non-package commands" do + it "raises an error" do + expect do + Fastlane::FastFile.new.parse("lane :test do + spm( + command: 'clean', + simulator: 'iphonesimulator' + ) + end").runner.execute(:test) + end.to raise_error("Simulator is only applicable to package-related commands.") + end + end end end end From a26bcb124e9100b8229fa8867f9063a355894ebf Mon Sep 17 00:00:00 2001 From: Mo Gharari Date: Wed, 13 Dec 2023 20:59:37 +0100 Subject: [PATCH 09/16] Fix simulator typo --- fastlane/spec/actions_specs/spm_spec.rb | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/fastlane/spec/actions_specs/spm_spec.rb b/fastlane/spec/actions_specs/spm_spec.rb index 57487fa6b6b..d14f31a6d4b 100644 --- a/fastlane/spec/actions_specs/spm_spec.rb +++ b/fastlane/spec/actions_specs/spm_spec.rb @@ -360,20 +360,7 @@ simulator: 'invalid_simulator' ) end").runner.execute(:test) - end.to raise_error("Invalid simulator syntax. Please use 'iphonesimulator', 'ipadsimulator', or 'macossimulator'.") - end - end - - context "when simulator is specified for non-package commands" do - it "raises an error" do - expect do - Fastlane::FastFile.new.parse("lane :test do - spm( - command: 'clean', - simulator: 'iphonesimulator' - ) - end").runner.execute(:test) - end.to raise_error("Simulator is only applicable to package-related commands.") + end.to raise_error("Invalid simulator syntax. Please use 'iphonesimulator', or 'macossimulator'.") end end end From a31086b17ad2072572075b0ce8e32068f86637ef Mon Sep 17 00:00:00 2001 From: Mohammad Gharari Date: Wed, 13 Dec 2023 22:21:13 +0100 Subject: [PATCH 10/16] Update fastlane/spec/actions_specs/spm_spec.rb Co-authored-by: Roger Oba --- fastlane/spec/actions_specs/spm_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/spec/actions_specs/spm_spec.rb b/fastlane/spec/actions_specs/spm_spec.rb index d14f31a6d4b..6aa7870b955 100644 --- a/fastlane/spec/actions_specs/spm_spec.rb +++ b/fastlane/spec/actions_specs/spm_spec.rb @@ -360,7 +360,7 @@ simulator: 'invalid_simulator' ) end").runner.execute(:test) - end.to raise_error("Invalid simulator syntax. Please use 'iphonesimulator', or 'macossimulator'.") + end.to raise_error("Please pass a valid simulator. Use one of the following: iphonesimulator, macossimulator")) end end end From 39447f1a57915a0081c99382e9d25404d6eef06b Mon Sep 17 00:00:00 2001 From: Roger Oba Date: Wed, 13 Dec 2023 20:57:33 -0300 Subject: [PATCH 11/16] Fix typo. --- fastlane/spec/actions_specs/spm_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/spec/actions_specs/spm_spec.rb b/fastlane/spec/actions_specs/spm_spec.rb index 6aa7870b955..1330fe64e93 100644 --- a/fastlane/spec/actions_specs/spm_spec.rb +++ b/fastlane/spec/actions_specs/spm_spec.rb @@ -360,7 +360,7 @@ simulator: 'invalid_simulator' ) end").runner.execute(:test) - end.to raise_error("Please pass a valid simulator. Use one of the following: iphonesimulator, macossimulator")) + end.to raise_error("Please pass a valid simulator. Use one of the following: iphonesimulator, macossimulator") end end end From ce01c52becf661c16c5baf6cb9da3acdef25d4b9 Mon Sep 17 00:00:00 2001 From: Mo Gharari Date: Sat, 16 Dec 2023 00:00:20 +0100 Subject: [PATCH 12/16] Adding support for different simulator architecture --- fastlane/lib/fastlane/actions/spm.rb | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index da42561a26c..97824680bdd 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -15,7 +15,7 @@ def self.run(params) "-Xswiftc", "-sdk", "-Xswiftc", "$(xcrun --sdk #{params[:simulator]} --show-sdk-path)", "-Xswiftc", "-target", - "-Xswiftc", "x86_64-apple-ios$(xcrun --sdk #{params[:simulator]} --show-sdk-version | cut -d '.' -f 1)-simulator" + "-Xswiftc", "#{params[:simulator_arch] || "arm64"}-apple-#{params[:simulator] == "iphonesimulator" ? 'ios' : 'macosx'}$(xcrun --sdk #{params[:simulator]} --show-sdk-version | cut -d '.' -f 1)#{"-simulator" if params[:simulator] == "iphonesimulator"}" ] cmd += simulator_flags end @@ -110,6 +110,14 @@ def self.available_options optional: true, verify_block: proc do |value| UI.user_error!("Please pass a valid simulator. Use one of the following: #{valid_simulators.join(', ')}") unless valid_simulators.include?(value) + end), + FastlaneCore::ConfigItem.new(key: :simulator_arch, + env_name: "FL_SPM_SIMULATOR_ARCH", + description: "Specifies the architecture of the simulator to pass for Swift Compiler (one of: #{valid_architectures.join(', ')}), requires simulator to be specified also", + type: String, + optional: true, + verify_block: proc do |value| + UI.user_error!("Please pass a valid simulator architecrure. Use one of the following: #{valid_architectures.join(', ')}") unless valid_architectures.include?(value) end) ] end @@ -158,7 +166,11 @@ def self.xcpretty_output_types end def self.valid_simulators - %w(iphonesimulator macossimulator) + %w(iphonesimulator macosx) + end + + def self.valid_architectures + %w(x86_64 arm64) end end end From dfdb19ba41a28f5da3f58a495b6e747ab3cae019 Mon Sep 17 00:00:00 2001 From: Mo Gharari Date: Sat, 16 Dec 2023 00:00:51 +0100 Subject: [PATCH 13/16] Adding unit tests for simulator architecture --- fastlane/spec/actions_specs/spm_spec.rb | 46 +++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/fastlane/spec/actions_specs/spm_spec.rb b/fastlane/spec/actions_specs/spm_spec.rb index 1330fe64e93..c23f785d33d 100644 --- a/fastlane/spec/actions_specs/spm_spec.rb +++ b/fastlane/spec/actions_specs/spm_spec.rb @@ -349,7 +349,7 @@ ) end").runner.execute(:test) - expect(result).to eq("swift build -Xswiftc -sdk -Xswiftc $(xcrun --sdk iphonesimulator --show-sdk-path) -Xswiftc -target -Xswiftc x86_64-apple-ios$(xcrun --sdk iphonesimulator --show-sdk-version | cut -d '.' -f 1)-simulator") + expect(result).to eq("swift build -Xswiftc -sdk -Xswiftc $(xcrun --sdk iphonesimulator --show-sdk-path) -Xswiftc -target -Xswiftc arm64-apple-ios$(xcrun --sdk iphonesimulator --show-sdk-version | cut -d '.' -f 1)-simulator") end it "raises an error if simulator syntax is invalid" do @@ -360,7 +360,49 @@ simulator: 'invalid_simulator' ) end").runner.execute(:test) - end.to raise_error("Please pass a valid simulator. Use one of the following: iphonesimulator, macossimulator") + end.to raise_error("Please pass a valid simulator. Use one of the following: iphonesimulator, macosx") + end + + it "sets arm64 as the default architecture when simulator is specified without architecture" do + result = Fastlane::FastFile.new.parse("lane :test do + spm( + command: 'build', + simulator: 'iphonesimulator' + ) + end").runner.execute(:test) + expect(result).to eq("swift build -Xswiftc -sdk -Xswiftc $(xcrun --sdk iphonesimulator --show-sdk-path) -Xswiftc -target -Xswiftc arm64-apple-ios$(xcrun --sdk iphonesimulator --show-sdk-version | cut -d '.' -f 1)-simulator") + end + + it "sets x86-64 as the architecture parameter when simulator is specified" do + result = Fastlane::FastFile.new.parse("lane :test do + spm( + command: 'build', + simulator: 'iphonesimulator', + simulator_arch: 'x86_64' + ) + end").runner.execute(:test) + expect(result).to eq("swift build -Xswiftc -sdk -Xswiftc $(xcrun --sdk iphonesimulator --show-sdk-path) -Xswiftc -target -Xswiftc x86_64-apple-ios$(xcrun --sdk iphonesimulator --show-sdk-version | cut -d '.' -f 1)-simulator") + end + + it "sets macosx as the simulator parameter without architecture being specified" do + result = Fastlane::FastFile.new.parse("lane :test do + spm( + command: 'build', + simulator: 'macosx' + ) + end").runner.execute(:test) + expect(result).to eq("swift build -Xswiftc -sdk -Xswiftc $(xcrun --sdk macosx --show-sdk-path) -Xswiftc -target -Xswiftc arm64-apple-macosx$(xcrun --sdk macosx --show-sdk-version | cut -d '.' -f 1)") + end + + it "sets macosx as the simulator parameter with x86_64 passed as architecture" do + result = Fastlane::FastFile.new.parse("lane :test do + spm( + command: 'build', + simulator: 'macosx', + simulator_arch: 'x86_64' + ) + end").runner.execute(:test) + expect(result).to eq("swift build -Xswiftc -sdk -Xswiftc $(xcrun --sdk macosx --show-sdk-path) -Xswiftc -target -Xswiftc x86_64-apple-macosx$(xcrun --sdk macosx --show-sdk-version | cut -d '.' -f 1)") end end end From 38334a8ef65800205b332726f0ee0b730346d99c Mon Sep 17 00:00:00 2001 From: Mo Gharari Date: Sun, 17 Dec 2023 15:10:42 +0100 Subject: [PATCH 14/16] Modify code by extracting the logic into methods --- fastlane/lib/fastlane/actions/spm.rb | 33 ++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index 97824680bdd..337d5614764 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -11,11 +11,14 @@ def self.run(params) cmd << "--disable-sandbox" if params[:disable_sandbox] cmd << "--verbose" if params[:verbose] if params[:simulator] + _simulator_platform = simulator_platform(simulator: params[:simulator], simulator_arch: params[:simulator_arch]) + _simulator_sdk = simulator_sdk(simulator: params[:simulator]) + _simulator_sdk_suffix = simulator_sdk_suffix(simulator: params[:simulator]) simulator_flags = [ "-Xswiftc", "-sdk", "-Xswiftc", "$(xcrun --sdk #{params[:simulator]} --show-sdk-path)", "-Xswiftc", "-target", - "-Xswiftc", "#{params[:simulator_arch] || "arm64"}-apple-#{params[:simulator] == "iphonesimulator" ? 'ios' : 'macosx'}$(xcrun --sdk #{params[:simulator]} --show-sdk-version | cut -d '.' -f 1)#{"-simulator" if params[:simulator] == "iphonesimulator"}" + "-Xswiftc", "#{_simulator_platform}#{_simulator_sdk}#{_simulator_sdk_suffix}" ] cmd += simulator_flags end @@ -113,11 +116,12 @@ def self.available_options end), FastlaneCore::ConfigItem.new(key: :simulator_arch, env_name: "FL_SPM_SIMULATOR_ARCH", - description: "Specifies the architecture of the simulator to pass for Swift Compiler (one of: #{valid_architectures.join(', ')}), requires simulator to be specified also", + description: "Specifies the architecture of the simulator to pass for Swift Compiler (one of: #{valid_architectures.join(', ')}). Requires the simulator option to be specified also, otherwise, it's ignored", type: String, - optional: true, + optional: false, + default_value: "arm64", verify_block: proc do |value| - UI.user_error!("Please pass a valid simulator architecrure. Use one of the following: #{valid_architectures.join(', ')}") unless valid_architectures.include?(value) + UI.user_error!("Please pass a valid simulator architecture. Use one of the following: #{valid_architectures.join(', ')}") unless valid_architectures.include?(value) end) ] end @@ -141,6 +145,13 @@ def self.example_code 'spm( command: "generate-xcodeproj", xcconfig: "Package.xcconfig" + )', + 'spm( + simulator: "iphonesimulator" + )', + 'spm( + simulator: "macosx", + simulator_arch: "arm64" )' ] end @@ -172,6 +183,20 @@ def self.valid_simulators def self.valid_architectures %w(x86_64 arm64) end + + def self.simulator_platform(params) + platform_suffix = "#{params[:simulator] == "iphonesimulator" ? 'ios' : 'macosx'}" + "#{params[:simulator_arch]}-apple-#{platform_suffix}" + end + + def self.simulator_sdk(params) + "$(xcrun --sdk #{params[:simulator]} --show-sdk-version | cut -d '.' -f 1)" + end + + def self.simulator_sdk_suffix(params) + return "" unless params[:simulator] == "iphonesimulator" + "-simulator" + end end end end From 810b4bfb23a8077a3f776b02f7c97b6374b7e233 Mon Sep 17 00:00:00 2001 From: Mohammad Gharari Date: Mon, 18 Dec 2023 19:05:10 +0100 Subject: [PATCH 15/16] Update fastlane/lib/fastlane/actions/spm.rb Co-authored-by: Roger Oba --- fastlane/lib/fastlane/actions/spm.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index c08d77b6226..817fd32d0e5 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -201,7 +201,7 @@ def self.valid_architectures end def self.simulator_platform(params) - platform_suffix = "#{params[:simulator] == "iphonesimulator" ? 'ios' : 'macosx'}" + platform_suffix = "#{params[:simulator] == "iphonesimulator" ? "ios" : "macosx"}" "#{params[:simulator_arch]}-apple-#{platform_suffix}" end From 013fc34189f414c2e2fa6bd77a5cab11450f7186 Mon Sep 17 00:00:00 2001 From: Mohammad Gharari Date: Mon, 18 Dec 2023 19:05:21 +0100 Subject: [PATCH 16/16] Update fastlane/lib/fastlane/actions/spm.rb Co-authored-by: Roger Oba --- fastlane/lib/fastlane/actions/spm.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fastlane/lib/fastlane/actions/spm.rb b/fastlane/lib/fastlane/actions/spm.rb index 817fd32d0e5..c607d3e3298 100644 --- a/fastlane/lib/fastlane/actions/spm.rb +++ b/fastlane/lib/fastlane/actions/spm.rb @@ -12,14 +12,14 @@ def self.run(params) cmd << "--disable-sandbox" if params[:disable_sandbox] cmd << "--verbose" if params[:verbose] if params[:simulator] - _simulator_platform = simulator_platform(simulator: params[:simulator], simulator_arch: params[:simulator_arch]) - _simulator_sdk = simulator_sdk(simulator: params[:simulator]) - _simulator_sdk_suffix = simulator_sdk_suffix(simulator: params[:simulator]) + simulator_platform = simulator_platform(simulator: params[:simulator], simulator_arch: params[:simulator_arch]) + simulator_sdk = simulator_sdk(simulator: params[:simulator]) + simulator_sdk_suffix = simulator_sdk_suffix(simulator: params[:simulator]) simulator_flags = [ "-Xswiftc", "-sdk", "-Xswiftc", "$(xcrun --sdk #{params[:simulator]} --show-sdk-path)", "-Xswiftc", "-target", - "-Xswiftc", "#{_simulator_platform}#{_simulator_sdk}#{_simulator_sdk_suffix}" + "-Xswiftc", "#{simulator_platform}#{simulator_sdk}#{simulator_sdk_suffix}" ] cmd += simulator_flags end