Skip to content

Instantly share code, notes, and snippets.

@casibbald
Created December 9, 2015 13:52
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 casibbald/b0c825dc4f0662f60253 to your computer and use it in GitHub Desktop.
Save casibbald/b0c825dc4f0662f60253 to your computer and use it in GitHub Desktop.
script to reset xcode simulators
from __future__ import print_function
import os
import re
import subprocess
os_pattern=r'--\s(\w*\s[0-9]*.[0-9]*)\s--'
device_pattern=r'\s(\w? \w? .*)\s\((\w{8}-\w{4}-\w{4}-\w{4}-\w{12})\)\s\((\w*)\)\s(?#...\(\))?'
os_version = None
device_list = []
def get_simulators():
simulators = subprocess.check_output(
'xcrun simctl list devices',
shell=True,
stderr=subprocess.STDOUT)
return simulators
def delete_simulators(UUID):
simulators = subprocess.check_output(
'xcrun simctl delete {0}'.format(UUID),
shell=True,
stderr=subprocess.STDOUT)
return simulators
def create_simulators(device, os):
simulators = subprocess.check_output(
'xcrun simctl create "{0}" "{1}" "{2}"'.format(device, device, os),
shell=True,
stderr=subprocess.STDOUT)
return simulators
def get_simulator_dict(simulators):
for line in simulators.split("\n"):
if re.match(os_pattern, line):
os_version = line.split()[2]
if not line.startswith("="):
result = re.match(device_pattern, line)
try:
device_list.append({'device': result.group(1).lstrip(),
'UUID': result.group(2),
'run_state': result.group(3),
'os': os_version
})
except:
pass
return device_list
device_list = get_simulator_dict(get_simulators())
chosen_devices = ['iPad 2', 'iPad Air']
chosen_os = ['7.1', '8.1']
def check_chosen_device(device, os):
for item in chosen_devices:
if device == item:
for os_item in chosen_os:
if os == os_item:
return True
def reload_devices():
for item in device_list:
if check_chosen_device(item['device'], item['os']):
print(item)
print('removing devices')
for device in device_list:
print("removing {0} {1}\t {2}".format(device['device'], device['os'], device['UUID']))
delete_simulators(device['UUID'])
required_devices = [{'device': 'iPad 2', 'os': '7.1'},
{'device': 'iPad Air', 'os': '7.1'},
{'device': 'iPad 2','os': '8.1' },
{'device': 'iPad Air','os': '8.1'}]
print()
print('installing devices')
for device in required_devices:
print("creating {0} {1}".format(device['device'], device['os']))
create_simulators(device['device'], device['os'])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment