Skip to content

Commit e12134e

Browse files
committed
WIP
1 parent 6490d2e commit e12134e

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

fastlane/Fastfile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ end
3535

3636
lane :create_simulators do
3737
require 'json'
38+
require 'set'
3839

3940
# map Fastfile platform keys to display names used by CoreSimulator runtimes
4041
platforms_to_os = {
@@ -50,10 +51,16 @@ lane :create_simulators do
5051
list = JSON.parse(list_json)
5152
devtypes = list["devicetypes"] || []
5253
runtimes = list["runtimes"] || []
54+
55+
# Build a set of existing simulator names to prevent duplicates
56+
devices_json = sh("xcrun simctl list -j devices", log: false)
57+
devices_list = JSON.parse(devices_json)
58+
existing_names = (devices_list["devices"] || {}).values.flatten.map { |d| d["name"] }.compact.to_set
5359
rescue => e
5460
UI.message("Failed to read simctl lists: #{e}")
5561
devtypes = []
5662
runtimes = []
63+
existing_names = Set.new
5764
end
5865

5966
device_name_to_id = devtypes.each_with_object({}) do |dt, h|
@@ -103,7 +110,13 @@ lane :create_simulators do
103110

104111
sim_name = descriptor # keep the nice human-readable name
105112

113+
if existing_names.include?(sim_name)
114+
UI.message("Already exists: #{sim_name}, skipping")
115+
next
116+
end
117+
106118
sh(%(xcrun simctl create "#{sim_name}" "#{device_type_id}" "#{runtime_id}" || true))
119+
existing_names.add(sim_name)
107120
rescue => e
108121
UI.message("Skipping #{descriptor}: #{e}")
109122
end

0 commit comments

Comments
 (0)