class Device

Attributes

device_type[R]
name[R]
runtime[R]
udid[R]

Public Class Methods

current_devices(xc:) click to toggle source
# File lib/peach/device.rb, line 50
def self.current_devices(xc:)
        devices = Array.new

        simctl_json = JSON.parse(load_devices)
        device_list = simctl_json['devices']

        device_list.each do |type, ds|
                runtime = xc.runtime_name(type)

                ds.each do |d|
                        device_name = d["name"]
                        device_udid = d["udid"]
                        device_type = device_type(udid: device_udid, xc: xc)
                        devices << Device.new(name: device_name, device_type: device_type, runtime: runtime, udid: device_udid, xc: xc)
                end
        end

        devices
end
destroy_all(xc:) click to toggle source

class functions

# File lib/peach/device.rb, line 43
def self.destroy_all(xc:)
        devices = Device.current_devices(xc: xc) || []
        devices.each do |d|
                d.destroy
        end
end
device_type(udid:, xc:) click to toggle source
# File lib/peach/device.rb, line 75
def self.device_type(udid:, xc:)
        device_type_identifier = device_type_identifier(udid: udid, xc: xc)
        xc.device_name(device_type_identifier)
end
device_type_identifier(udid:, xc:) click to toggle source
# File lib/peach/device.rb, line 70
def self.device_type_identifier(udid:, xc:)
        plist = Plist.parse_xml("#{ENV['HOME']}/Library/Developer/CoreSimulator/Devices/#{udid}/device.plist")
        plist['deviceType']
end
load_devices() click to toggle source
# File lib/peach/device.rb, line 80
def self.load_devices
        `xcrun simctl list devices -j`
end
new(name:, device_type:, runtime:, udid: nil, xc: XC.new) click to toggle source
# File lib/peach/device.rb, line 6
def initialize(name:, device_type:, runtime:, udid: nil, xc: XC.new)
        @name = name
        @device_type = device_type
        @runtime = runtime
        @udid = udid
        @xc = xc
end

Public Instance Methods

==(o) click to toggle source
# File lib/peach/device.rb, line 34
def ==(o)
        o.class == self.class &&
        o.name == @name &&
        o.device_type == @device_type &&
        o.runtime == runtime
end
Also aliased as: eql?
create() click to toggle source
# File lib/peach/device.rb, line 18
def create
        runtime_id = @xc.runtimes.key(@runtime)
        if @xc.runtime_invalid(@runtime)
                puts "Unable to create #{@name}. Invalid runtime: #{@runtime}. Run \"xcrun simctl list runtimes\" to list available runtimes"
        elsif @xc.device_type_invalid(@device_type)
                puts "Unable to create #{@name}. Invalid device_type: #{@device_type}. Run \"xcrun simctl list devicetypes\" to list available devicetypes"
        else
                @udid = `xcrun simctl create \"#{@name}\" \"#{@device_type}\" \"#{runtime_id}\"`.strip
        end
end
destroy() click to toggle source
# File lib/peach/device.rb, line 29
def destroy
        `xcrun simctl delete #{@udid}`
end
eql?(o)
Alias for: ==
exists?() click to toggle source
# File lib/peach/device.rb, line 14
def exists?
        Device.current_devices(xc: @xc).include?(self)
end