Class: Fastlane::Helper::SimctlHelper

Inherits:
Object
  • Object
show all
Defined in:
lib/fastlane/plugin/simctl/helper/simctl_helper.rb

Class Method Summary collapse

Class Method Details

.create_device(runtime, type, name) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/fastlane/plugin/simctl/helper/simctl_helper.rb', line 20

def self.create_device(runtime, type, name)
  runtime = if runtime.eql? 'latest'
              SimCtl::Runtime.latest('ios')
            else
              SimCtl.runtime(name: runtime)
            end
  device_type = SimCtl.devicetype(name: type)
  device_name = name
  device_name ||= type.to_s.instance_eval do |obj|
    obj += "-#{ENV['JOB_NAME']}" if ENV['JOB_NAME']
    obj += "@#{ENV['BUILD_NUMBER']}" if ENV['BUILD_NUMBER']
    obj
  end
  Fastlane::UI.message("Starting simulator with runtime: `#{runtime.name}`, device type: `#{device_type.name}`"\
    " and device name: `#{device_name}`")
  SimCtl.reset_device(device_name, device_type, runtime)
end

.delete_device(device) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/fastlane/plugin/simctl/helper/simctl_helper.rb', line 38

def self.delete_device(device)
  if device.state != :shutdown
    device.shutdown
    device.kill
    device.wait do |d|
      Fastlane::UI.message("Waiting for simulator `#{d.name}` to be shutdown")
      d.state == :shutdown
    end
  end
  Fastlane::UI.message("Deleting simulator `#{device.name}`")
  device.delete
end

.execute_with_simulator_ready(action, block, runtime, type, name) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/fastlane/plugin/simctl/helper/simctl_helper.rb', line 4

def self.execute_with_simulator_ready(action, block, runtime, type, name)
  device = create_device(runtime, type, name)
  device.boot
  device.wait(90) do |d|
    Fastlane::UI.message("Waiting for simulator `#{d.name}` to be ready")
    d.state == :booted && d.ready?
  end
  begin
    block.call(action.other_action, device)
  rescue StandardError => error
    throw error
  ensure
    delete_device(device)
  end
end