Class: Flick::Ios
- Inherits:
-
Object
- Object
- Flick::Ios
- Defined in:
- lib/flick/ios.rb
Instance Attribute Summary collapse
-
#flick_dir ⇒ Object
Returns the value of attribute flick_dir.
-
#name ⇒ Object
Returns the value of attribute name.
-
#outdir ⇒ Object
Returns the value of attribute outdir.
-
#specs ⇒ Object
Returns the value of attribute specs.
-
#todir ⇒ Object
Returns the value of attribute todir.
-
#udid ⇒ Object
Returns the value of attribute udid.
Instance Method Summary collapse
- #app_installed?(package) ⇒ Boolean
- #check_for_devices ⇒ Object
- #clear_files ⇒ Object
- #create_flick_dirs ⇒ Object
- #devices ⇒ Object
- #devices_connected? ⇒ Boolean
- #get_device_udid(opts_hash) ⇒ Object
- #info ⇒ Object
-
#initialize(options) ⇒ Ios
constructor
A new instance of Ios.
- #install(app_path) ⇒ Object
- #is_paired? ⇒ Boolean
- #log(name) ⇒ Object
- #packages ⇒ Object
- #recordable? ⇒ Boolean
- #remove_bad_characters(string) ⇒ Object
- #screenshot(name) ⇒ Object
- #uninstall(package) ⇒ Object
Constructor Details
#initialize(options) ⇒ Ios
Returns a new instance of Ios.
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/flick/ios.rb', line 5 def initialize self.udid = .fetch(:udid, get_device_udid()) self.flick_dir = "#{Dir.home}/.flick/#{udid}" self.name = remove_bad_characters(.fetch(:name, self.udid)) self.todir = .fetch(:todir, self.flick_dir) self.outdir = .fetch(:outdir, Dir.pwd) self.specs = .fetch(:specs, false) create_flick_dirs is_paired? end |
Instance Attribute Details
#flick_dir ⇒ Object
Returns the value of attribute flick_dir.
3 4 5 |
# File 'lib/flick/ios.rb', line 3 def flick_dir @flick_dir end |
#name ⇒ Object
Returns the value of attribute name.
3 4 5 |
# File 'lib/flick/ios.rb', line 3 def name @name end |
#outdir ⇒ Object
Returns the value of attribute outdir.
3 4 5 |
# File 'lib/flick/ios.rb', line 3 def outdir @outdir end |
#specs ⇒ Object
Returns the value of attribute specs.
3 4 5 |
# File 'lib/flick/ios.rb', line 3 def specs @specs end |
#todir ⇒ Object
Returns the value of attribute todir.
3 4 5 |
# File 'lib/flick/ios.rb', line 3 def todir @todir end |
#udid ⇒ Object
Returns the value of attribute udid.
3 4 5 |
# File 'lib/flick/ios.rb', line 3 def udid @udid end |
Instance Method Details
#app_installed?(package) ⇒ Boolean
107 108 109 |
# File 'lib/flick/ios.rb', line 107 def app_installed? package packages.include? "#{package}" end |
#check_for_devices ⇒ Object
44 45 46 47 48 49 |
# File 'lib/flick/ios.rb', line 44 def check_for_devices unless devices_connected? puts "\nNo iPhone or iPad Devices Connected!!!\nMake sure at least one REAL device is connected!\n".red abort end end |
#clear_files ⇒ Object
76 77 78 |
# File 'lib/flick/ios.rb', line 76 def clear_files Flick::System.clean_system_dir flick_dir, udid end |
#create_flick_dirs ⇒ Object
20 21 22 23 |
# File 'lib/flick/ios.rb', line 20 def create_flick_dirs Flick::System.setup_system_dir "#{Dir.home}/.flick" Flick::System.setup_system_dir flick_dir end |
#devices ⇒ Object
35 36 37 38 |
# File 'lib/flick/ios.rb', line 35 def devices Flick::Checker.system_dependency "idevice_id" (`idevice_id -l`).split.uniq.map { |d| d } end |
#devices_connected? ⇒ Boolean
40 41 42 |
# File 'lib/flick/ios.rb', line 40 def devices_connected? devices.any? end |
#get_device_udid(opts_hash) ⇒ Object
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/flick/ios.rb', line 51 def get_device_udid opts_hash check_for_devices return unless opts_hash[:udid].nil? if devices.size == 1 devices[0] else puts "\nMultiple iOS devices '#{devices}' found.\nSpecify a single UDID. e.g. -u #{devices.sample}\n".red abort unless specs end end |
#info ⇒ Object
62 63 64 65 66 67 68 69 70 |
# File 'lib/flick/ios.rb', line 62 def info specs = { os: "ProductVersion", name: "DeviceName", arc: "CPUArchitecture", type: "DeviceClass", sdk: "ProductType" } hash = { udid: udid } specs.each do |key, spec| value = (`ideviceinfo -u #{udid} | grep #{spec} | awk '{$1=""; print $0}'`).strip hash.merge!({key=> "#{value}"}) end hash end |
#install(app_path) ⇒ Object
92 93 94 95 |
# File 'lib/flick/ios.rb', line 92 def install app_path Flick::Checker.system_dependency "ideviceinstaller" %x(ideviceinstaller -u #{udid} -i #{app_path}) end |
#is_paired? ⇒ Boolean
25 26 27 28 29 30 31 32 33 |
# File 'lib/flick/ios.rb', line 25 def is_paired? Flick::Checker.system_dependency "idevicename" if Open3.capture3("idevicename -u #{udid}")[1].split[0] == "ERROR:" puts "\nUDID: #{udid} - Is not paired with your machine!\nOr make sure the device is not locked!\n".red puts "Run: idevicepair -u <udid> pair\nIf not working still, see: https://github.com/isonic1/flick/issues/10\n".red puts "Read more information about libmobiledevice libraries, see: http://libimobiledevice.org".green abort end end |
#log(name) ⇒ Object
85 86 87 88 89 90 |
# File 'lib/flick/ios.rb', line 85 def log name Flick::Checker.system_dependency "idevicesyslog" system("idevicesyslog -u #{udid} > #{outdir}/#{name}.log") #file = File.open("#{outdir}/#{name}.log", 'a') { |f| f.puts "\n<<<<<<<<<<<<<<<<<<<<<<<<< FLICK LOG START >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n" } #file.close end |
#packages ⇒ Object
111 112 113 |
# File 'lib/flick/ios.rb', line 111 def packages %x(ideviceinstaller -u #{udid} -l -o list_user).split("\n")[1..100000].map { |p| p.match(/(.*) -/)[1] } end |
#recordable? ⇒ Boolean
72 73 74 |
# File 'lib/flick/ios.rb', line 72 def recordable? false end |
#remove_bad_characters(string) ⇒ Object
16 17 18 |
# File 'lib/flick/ios.rb', line 16 def remove_bad_characters string string.gsub(/[\x00\/\\:\*\?\"<>\|]/, '_') end |
#screenshot(name) ⇒ Object
80 81 82 83 |
# File 'lib/flick/ios.rb', line 80 def screenshot name Flick::Checker.system_dependency "idevicescreenshot" %x(idevicescreenshot -u #{udid} #{todir}/#{name}.png) end |
#uninstall(package) ⇒ Object
97 98 99 100 101 102 103 104 105 |
# File 'lib/flick/ios.rb', line 97 def uninstall package Flick::Checker.system_dependency "ideviceinstaller" if app_installed? package %x(ideviceinstaller -u #{udid} -U #{package}) else puts packages puts "\n#{package} was not found on device #{udid}! Please choose one from above. e.g. #{packages.sample}\n".red end end |