Skip to content

Instantly share code, notes, and snippets.

@cabeca
Created September 23, 2014 21:30
Show Gist options
  • Save cabeca/cbaacbeb6a1cc4683aa5 to your computer and use it in GitHub Desktop.
Save cabeca/cbaacbeb6a1cc4683aa5 to your computer and use it in GitHub Desktop.
This script removes and recreates all simulators in Xcode 6.
#!/usr/bin/env ruby
device_types_output = `xcrun simctl list devicetypes`
device_types = device_types_output.scan /(.*) \((.*)\)/
runtimes_output = `xcrun simctl list runtimes`
runtimes = runtimes_output.scan /(.*) \(.*\) \((com.apple[^)]+)\)$/
devices_output = `xcrun simctl list devices`
devices = devices_output.scan /\s\s\s\s(.*) \(([^)]+)\) (.*)/
devices.each do |device|
puts "Removing device #{device[0]} (#{device[1]})"
`xcrun simctl delete #{device[1]}`
end
device_types.each do |device_type|
runtimes.each do |runtime|
puts "Creating #{device_type} with #{runtime}"
command = "xcrun simctl create '#{device_type[0]} #{runtime[0]}' #{device_type[1]} #{runtime[1]}"
command_output = `#{command}`
sleep 0.5
end
end
@strobox
Copy link

strobox commented Jan 7, 2019

In 2019 (and maybe >2019) do:

device_types_output = `xcrun simctl list devicetypes`
device_types = device_types_output.scan /(.*) \((.*)\)/


runtimes_output = `xcrun simctl list runtimes`
runtimes = runtimes_output.scan /(.*) \(.*\) - (com.apple[^)]+)$/

runtimes.each do |runtime|
  puts " #{runtime}"
end

devices_output = `xcrun simctl list devices`
devices = devices_output.scan /[A-Z0-9-]{36}/

devices.each do |device|
  puts "Removing device #{device}"
  `xcrun simctl delete #{device}`
end

device_types.each do |device_type|
  runtimes.each do |runtime|
    puts "Creating #{device_type} with #{runtime}"
    command = "xcrun simctl create '#{device_type[0]} #{runtime[0]}' #{device_type[1]} #{runtime[1]}"
    puts command
    command_output = `#{command}`
    sleep 0.5
  end
end

@strobox
Copy link

strobox commented Jan 7, 2019

Or just for erase data:

#!/usr/bin/env ruby

devices_output = `xcrun simctl list devices`
devices = devices_output.scan /[A-Z0-9-]{36}/

devices.each do |device|
  puts "Erase device #{device} data"
  `xcrun simctl erase #{device}`
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment