Created
December 9, 2015 13:52
-
-
Save casibbald/b0c825dc4f0662f60253 to your computer and use it in GitHub Desktop.
script to reset xcode simulators
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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