From c37c2a36e1f9fb002dba56c585a648888ce1a2cb Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Mon, 17 Oct 2016 12:58:32 -0700 Subject: [PATCH] Initial use of simctl instead of ios-sim --- lime/tools/helpers/IOSHelper.hx | 156 ++++++++++++++++++-------------- templates/bin/ios-sim | Bin 81572 -> 0 bytes 2 files changed, 90 insertions(+), 66 deletions(-) delete mode 100755 templates/bin/ios-sim diff --git a/lime/tools/helpers/IOSHelper.hx b/lime/tools/helpers/IOSHelper.hx index 2e1c6a253..29f27e8af 100644 --- a/lime/tools/helpers/IOSHelper.hx +++ b/lime/tools/helpers/IOSHelper.hx @@ -196,72 +196,96 @@ class IOSHelper { } var templatePaths = [ PathHelper.combine (PathHelper.getHaxelib (new Haxelib ("lime")), "templates") ].concat (project.templatePaths); - var launcher = PathHelper.findTemplate (templatePaths, "bin/ios-sim"); - Sys.command ("chmod", [ "+x", launcher ]); - - // device config - var defaultDevice = "iphone-6"; - var devices:Array = ["iphone-4s", "iphone-5", "iphone-5s", "iphone-6-plus", "iphone-6", "ipad-2", "ipad-retina", "ipad-air"]; - var oldDevices:Map = ["iphone" => "iphone-6", "ipad" => "ipad-air"]; - - var deviceFlag:String = null; - var deviceTypeID = null; - - // check if old device flag and convert to current - for (key in oldDevices.keys()) - { - if (project.targetFlags.exists(key)) - { - deviceFlag = oldDevices[key]; - break; - } - } - - // check known device in command line args - if(deviceFlag == null) - { - for( i in 0...devices.length ) - { - if (project.targetFlags.exists(devices[i])) - { - deviceFlag = devices[i]; - break; - } - } - } - - // default to iphone 6 - if(deviceFlag == null) - deviceFlag = defaultDevice; - - // check if device is available - // $ ios-sim showdevicetypes - var devicesOutput:String = ProcessHelper.runProcess ("", launcher, [ "showdevicetypes" ] ); - var deviceTypeList:Array = devicesOutput.split("\n"); - - for ( i in 0...deviceTypeList.length ) - { - var r:EReg = new EReg(deviceFlag+",", "i"); - if(r.match(deviceTypeList[i])) - { - deviceTypeID = deviceTypeList[i]; - break; - } - } - - if(deviceTypeID == null) - LogHelper.warn("Device \""+deviceFlag+"\" was not found"); - else - LogHelper.info("Launch app on \""+deviceTypeID+"\""); - - - // run command with --devicetypeid if exists - if(deviceTypeID != null) - ProcessHelper.runCommand ("", launcher, [ "launch", FileSystem.fullPath (applicationPath), /*"--sdk", project.environment.get ("IPHONE_VER"),*/ "--devicetypeid", deviceTypeID, "--timeout", "60" ] ); - else - ProcessHelper.runCommand ("", launcher, [ "launch", FileSystem.fullPath (applicationPath), /*"--sdk", project.environment.get ("IPHONE_VER"), "--devicetypeid", deviceTypeID,*/ "--timeout", "60" ] ); - - } else { + + var output = ProcessHelper.runProcess ("", "xcrun", [ "simctl", "list", "devices" ]); + var lines = output.split ("\n"); + var foundSection = false; + + var device, deviceID; + var devices = new Map (); + + var currentDeviceID = null; + + for (line in lines) { + + if (StringTools.startsWith (line, "--")) { + + if (line.indexOf ("iOS") > -1) { + + foundSection = true; + + } else if (foundSection) { + + break; + + } + + } else if (foundSection) { + + device = StringTools.trim (line); + device = device.substring (0, device.indexOf ("(") - 1); + device = device.toLowerCase (); + device = StringTools.replace (device, " ", "-"); + + deviceID = line.substring (line.indexOf ("(") + 1, line.indexOf (")")); + + if (deviceID.indexOf ("inch") > -1) { + + var startIndex = line.indexOf (")") + 2; + deviceID = line.substring (line.indexOf ("(", startIndex) + 1, line.indexOf (")", startIndex)); + + } + + devices.set (device, deviceID); + + if (project.targetFlags.exists (device)) { + + currentDeviceID = deviceID; + break; + + } + + } + + } + + if (currentDeviceID == null) { + + if (project.targetFlags.exists ("ipad")) { + + currentDeviceID = devices.get ("ipad-air"); + + } else { + + currentDeviceID = devices.get ("iphone-6"); + + } + + } + + ProcessHelper.runCommand ("", "open", [ "-a", "Simulator", "--args", "-CurrentDeviceUDID", currentDeviceID ], true, true); + ProcessHelper.runCommand ("", "open", [ "-a", "iOS Simulator", "--args", "-CurrentDeviceUDID", currentDeviceID ], true, true); + + while (true) { + + output = ProcessHelper.runProcess ("", "xcrun", [ "simctl", "install", currentDeviceID, applicationPath ], true, true, true); + + if (output != null && output.toLowerCase ().indexOf ("invalid device state") > -1) { + + Sys.sleep (3); + + } else { + + break; + + } + + } + + ProcessHelper.runProcess ("", "xcrun", [ "simctl", "launch", currentDeviceID, project.meta.packageName ]); + ProcessHelper.runCommand ("", "tail", [ "-f", "~/Library/Logs/CoreSimulator/" + currentDeviceID + "/system.log"]); + + } else { var applicationPath = ""; diff --git a/templates/bin/ios-sim b/templates/bin/ios-sim deleted file mode 100755 index 6bdc87cea2b2c02f28c66097d27860b77b44d40d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 81572 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 E4?o_>Pyhe`