Skip to content

Instantly share code, notes, and snippets.

@JohnCoates
Created August 22, 2017 04:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JohnCoates/af457743cabc4ffd089b94c0c734f760 to your computer and use it in GitHub Desktop.
Save JohnCoates/af457743cabc4ffd089b94c0c734f760 to your computer and use it in GitHub Desktop.
Keep only your favorite iOS simulators
# from https://gist.github.com/cabeca/cbaacbeb6a1cc4683aa5
#!/usr/bin/ruby
STDOUT.sync = true
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(.*) \(([^)]+)\) (.*)/
keep = [
"iPhone 7 Plus",
"iPhone 7",
"iPhone SE"
]
kept = [
]
devices.each do |device|
name = device[0].strip
if keep.include?(name) && kept.include?(name) == false
puts "Keeping #{name}"
kept.push(name)
next
end
puts "Removing device #{device[0]} (#{device[1]})"
`xcrun simctl delete #{device[1]}`
end
device_types.each do |device_type|
runtimes.each do |runtime|
name = device_type[0].strip
if keep.include?(name) && kept.include?(name) == false
puts "Creating #{device_type} with #{runtime}"
command = "xcrun simctl create '#{name}' #{device_type[1]} #{runtime[1]}"
command_output = `#{command}`
sleep 0.5
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment