flick 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -7
- data/bin/flick +1 -1
- data/flick.gemspec +1 -1
- data/lib/flick/android.rb +23 -11
- data/lib/flick/checker.rb +1 -1
- data/lib/flick/info.rb +13 -11
- data/lib/flick/ios.rb +9 -4
- data/lib/flick/log.rb +11 -9
- data/lib/flick/screenshot.rb +4 -4
- data/lib/flick/simple_daemon.rb +3 -3
- data/lib/flick/system.rb +6 -4
- data/lib/flick/version.rb +1 -1
- data/lib/flick/video.rb +34 -21
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25b3b0bb28400f0565fbefc0d417669209bd4ced
|
4
|
+
data.tar.gz: 4a160eaf8cc1795844a13b750d422c6b49e6026c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5ba77b5cc0d06dd1d67f449f1f435e3cb85b61e4237b77a9a46e0206b6e53ece52f5322c80b89a6ecbb5995c70aa51d2d3b91283abbe6c540733e44550b9ac7
|
7
|
+
data.tar.gz: 32ec8cc036ab3138bbd9f1a6da07c1b0fb864f2e988a47631a0e835eb26f2defd30daa33921d6e40e529d7a7b755bb44ac11f6ad682f41703fb512b22c362c4d
|
data/README.md
CHANGED
@@ -20,6 +20,8 @@ Features
|
|
20
20
|
* Flick auto selects device when only one device is connected, per platform.
|
21
21
|
* Save log output for Android or iOS.
|
22
22
|
* Display device information or save it to a file.
|
23
|
+
* Install or Uninstall applications from devices.
|
24
|
+
* Checkout the latest release notes [here](https://github.com/isonic1/flick/releases).
|
23
25
|
|
24
26
|
Reason
|
25
27
|
------
|
@@ -34,15 +36,8 @@ Prerequisites
|
|
34
36
|
#### System Tools
|
35
37
|
* Install ffmpeg. [OSX](https://trac.ffmpeg.org/wiki/CompilationGuide/MacOSX)
|
36
38
|
* ```$ brew install ffmpeg```
|
37
|
-
* Install ffmpeg. [Windows](https://ffmpeg.zeranoe.com/builds/)
|
38
|
-
* Download either the 32-bit or 64-bit static versions.
|
39
|
-
* Extract the zip file and move the ffmpeg folder somewhere else.
|
40
|
-
* Add the ffmpeg bin location to your PATH user variables. e.g. C:\ffmpeg\bin
|
41
39
|
* Install mp4box. [OSX](http://hunterford.me/compiling-mp4box-on-mac-os-x/)
|
42
40
|
* ```$ brew install mp4box```
|
43
|
-
* Install mp4box. [Windows](http://www.videohelp.com/software/MP4Box)
|
44
|
-
* Run the gpac-0.6.2-DEV-rev634-gd2332cb-master-x(64 or 32 bit).exe
|
45
|
-
* Select to install only the MP4Box component.
|
46
41
|
|
47
42
|
#### Android
|
48
43
|
* Install [SDK Tools](http://developer.android.com/sdk/installing/index.html?pkg=tools).
|
data/bin/flick
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require_relative '../lib/flick'
|
3
3
|
require 'commander/import'
|
4
4
|
|
5
|
-
program :version, '0.
|
5
|
+
program :version, '0.3.1'
|
6
6
|
program :description, 'A CLI to capture screenshots, video, logs, and device info for Android (Devices & Emulators) and iOS (Devices).'
|
7
7
|
|
8
8
|
command :video do |c|
|
data/flick.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_development_dependency "rake", "~> 10.0"
|
30
30
|
spec.add_development_dependency "rspec", '~> 3.4', '>= 3.4.0'
|
31
31
|
spec.add_dependency "parallel", '~> 1.6', '>= 1.6.2'
|
32
|
-
spec.add_dependency "colorize", "~> 0.
|
32
|
+
spec.add_dependency "colorize", "~> 0.8.1"
|
33
33
|
spec.add_dependency "commander", '~> 4.4', '>= 4.4.0'
|
34
34
|
spec.add_dependency "json", '~> 1.8', '>= 1.8.3'
|
35
35
|
spec.add_dependency "wannabe_bool", "~> 0.5.0"
|
data/lib/flick/android.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
1
|
module Flick
|
2
2
|
class Android
|
3
|
-
attr_accessor :
|
3
|
+
attr_accessor :udid, :flick_dir, :dir_name, :name, :outdir, :unique, :limit, :specs
|
4
4
|
|
5
5
|
def initialize options
|
6
6
|
Flick::Checker.system_dependency "adb"
|
7
|
-
|
7
|
+
if options[:udid].nil?
|
8
|
+
self.udid = get_device_udid
|
9
|
+
else
|
10
|
+
self.udid = options[:udid]
|
11
|
+
end
|
12
|
+
self.flick_dir = "#{Dir.home}/.flick/#{udid}"
|
8
13
|
self.dir_name = "sdcard/flick"
|
9
|
-
self.
|
10
|
-
self.name = options.fetch(:name, self.udid)
|
14
|
+
self.name = remove_bad_characters(options.fetch(:name, self.udid))
|
11
15
|
self.outdir = options.fetch(:outdir, Dir.pwd)
|
12
16
|
self.unique = options.fetch(:unique, true).to_b
|
13
17
|
self.limit = options.fetch(:limit, 180)
|
@@ -15,13 +19,18 @@ module Flick
|
|
15
19
|
create_flick_dirs
|
16
20
|
end
|
17
21
|
|
22
|
+
def remove_bad_characters string
|
23
|
+
string.gsub(/[\x00\/\\:\*\?\"<>\|]/, '_')
|
24
|
+
end
|
25
|
+
|
18
26
|
def create_flick_dirs
|
27
|
+
Flick::System.setup_system_dir "#{Dir.home}/.flick"
|
19
28
|
Flick::System.setup_system_dir flick_dir
|
20
29
|
%x(adb -s #{udid} shell 'mkdir #{dir_name}')
|
21
30
|
end
|
22
31
|
|
23
32
|
def clear_files
|
24
|
-
Flick::System.clean_system_dir flick_dir
|
33
|
+
Flick::System.clean_system_dir flick_dir
|
25
34
|
%x(adb -s #{udid} shell rm '#{dir_name}/*')
|
26
35
|
end
|
27
36
|
|
@@ -40,9 +49,8 @@ module Flick
|
|
40
49
|
end
|
41
50
|
end
|
42
51
|
|
43
|
-
def get_device_udid
|
44
|
-
|
45
|
-
return unless opts_hash[:udid].nil?
|
52
|
+
def get_device_udid
|
53
|
+
check_for_devices
|
46
54
|
if devices.size == 1
|
47
55
|
devices.first
|
48
56
|
else
|
@@ -109,7 +117,11 @@ module Flick
|
|
109
117
|
end
|
110
118
|
|
111
119
|
def recordable?
|
112
|
-
|
120
|
+
if info[:manufacturer] == "Genymotion"
|
121
|
+
return false
|
122
|
+
else
|
123
|
+
%x(adb -s #{udid} shell "ls /system/bin/screenrecord").strip == "/system/bin/screenrecord"
|
124
|
+
end
|
113
125
|
end
|
114
126
|
|
115
127
|
def screenrecord name
|
@@ -126,7 +138,7 @@ module Flick
|
|
126
138
|
else
|
127
139
|
command = "md5sum"
|
128
140
|
end
|
129
|
-
files = %x(adb -s #{udid} shell "#{command} #{dir_name}/#{type}
|
141
|
+
files = %x(adb -s #{udid} shell "#{command} #{dir_name}/#{type}*")
|
130
142
|
hash = files.split("\r\n").map { |file| { md5: file.match(/(.*) /)[1].strip, file: file.match(/ (.*)/)[1].strip } }
|
131
143
|
hash.uniq! { |e| e[:md5] }
|
132
144
|
hash.map { |file| file[:file] }
|
@@ -136,7 +148,7 @@ module Flick
|
|
136
148
|
if unique
|
137
149
|
files = unique_files type
|
138
150
|
else
|
139
|
-
files = %x(adb -s #{udid} shell "ls #{dir_name}/#{type}
|
151
|
+
files = %x(adb -s #{udid} shell "ls #{dir_name}/#{type}*").split("\r\n")
|
140
152
|
end
|
141
153
|
return if files.empty?
|
142
154
|
Parallel.map(files, in_threads: 10) { |file| pull_file file, flick_dir }
|
data/lib/flick/checker.rb
CHANGED
data/lib/flick/info.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class Info
|
2
|
-
|
2
|
+
|
3
3
|
attr_accessor :platform, :driver, :save
|
4
|
-
|
4
|
+
|
5
5
|
def initialize options
|
6
6
|
Flick::Checker.platform options[:platform]
|
7
7
|
self.platform = options[:platform]
|
@@ -14,15 +14,7 @@ class Info
|
|
14
14
|
end
|
15
15
|
self.save = options[:save].to_b
|
16
16
|
end
|
17
|
-
|
18
|
-
def save_device_data info
|
19
|
-
info.each do |k,v|
|
20
|
-
open("#{driver.outdir}/info-#{driver.udid}.log", 'a') do |file|
|
21
|
-
file << "#{k}: #{v}\n"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
17
|
+
|
26
18
|
def info
|
27
19
|
ap driver.info
|
28
20
|
if save
|
@@ -30,4 +22,14 @@ class Info
|
|
30
22
|
save_device_data driver.info
|
31
23
|
end
|
32
24
|
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def save_device_data info
|
29
|
+
info.each do |k,v|
|
30
|
+
open("#{driver.outdir}/info-#{driver.name}.log", 'a') do |file|
|
31
|
+
file << "#{k}: #{v}\n"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
33
35
|
end
|
data/lib/flick/ios.rb
CHANGED
@@ -3,21 +3,26 @@ module Flick
|
|
3
3
|
attr_accessor :flick_dir, :udid, :name, :outdir, :todir, :specs
|
4
4
|
|
5
5
|
def initialize options
|
6
|
-
Flick::Checker.system_dependency "idevice_id"
|
7
|
-
self.flick_dir = "#{Dir.home}/.flick"
|
8
6
|
self.udid = options.fetch(:udid, get_device_udid(options))
|
9
|
-
self.
|
7
|
+
self.flick_dir = "#{Dir.home}/.flick/#{udid}"
|
8
|
+
self.name = remove_bad_characters(options.fetch(:name, self.udid))
|
10
9
|
self.todir = options.fetch(:todir, self.flick_dir)
|
11
10
|
self.outdir = options.fetch(:outdir, Dir.pwd)
|
12
11
|
self.specs = options.fetch(:specs, false)
|
13
12
|
create_flick_dirs
|
14
13
|
end
|
15
14
|
|
15
|
+
def remove_bad_characters string
|
16
|
+
string.gsub(/[\x00\/\\:\*\?\"<>\|]/, '_')
|
17
|
+
end
|
18
|
+
|
16
19
|
def create_flick_dirs
|
20
|
+
Flick::System.setup_system_dir "#{Dir.home}/.flick"
|
17
21
|
Flick::System.setup_system_dir flick_dir
|
18
22
|
end
|
19
23
|
|
20
24
|
def devices
|
25
|
+
Flick::Checker.system_dependency "idevice_id"
|
21
26
|
(`idevice_id -l`).split.uniq.map { |d| d }
|
22
27
|
end
|
23
28
|
|
@@ -58,7 +63,7 @@ module Flick
|
|
58
63
|
end
|
59
64
|
|
60
65
|
def clear_files
|
61
|
-
Flick::System.clean_system_dir flick_dir
|
66
|
+
Flick::System.clean_system_dir flick_dir
|
62
67
|
end
|
63
68
|
|
64
69
|
def screenshot name
|
data/lib/flick/log.rb
CHANGED
@@ -17,14 +17,6 @@ class Log
|
|
17
17
|
self.udid = self.driver.udid
|
18
18
|
end
|
19
19
|
|
20
|
-
def android
|
21
|
-
platform == "android"
|
22
|
-
end
|
23
|
-
|
24
|
-
def ios
|
25
|
-
platform == "ios"
|
26
|
-
end
|
27
|
-
|
28
20
|
def run
|
29
21
|
self.send(action)
|
30
22
|
end
|
@@ -45,8 +37,18 @@ class Log
|
|
45
37
|
$0 = "flick-log-#{udid}"
|
46
38
|
SimpleDaemon.daemonize!
|
47
39
|
command = -> do
|
48
|
-
driver.log driver.name
|
40
|
+
driver.log "#{driver.name}"
|
49
41
|
end
|
50
42
|
command.call
|
51
43
|
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def android
|
48
|
+
platform == "android"
|
49
|
+
end
|
50
|
+
|
51
|
+
def ios
|
52
|
+
platform == "ios"
|
53
|
+
end
|
52
54
|
end
|
data/lib/flick/screenshot.rb
CHANGED
@@ -15,10 +15,6 @@ class Screenshot
|
|
15
15
|
setup
|
16
16
|
end
|
17
17
|
|
18
|
-
def android
|
19
|
-
platform == "android"
|
20
|
-
end
|
21
|
-
|
22
18
|
def screenshot
|
23
19
|
puts "Saving to #{driver.outdir}/#{driver.name}.png"
|
24
20
|
driver.screenshot driver.name
|
@@ -27,6 +23,10 @@ class Screenshot
|
|
27
23
|
|
28
24
|
private
|
29
25
|
|
26
|
+
def android
|
27
|
+
platform == "android"
|
28
|
+
end
|
29
|
+
|
30
30
|
def setup
|
31
31
|
driver.clear_files
|
32
32
|
end
|
data/lib/flick/simple_daemon.rb
CHANGED
@@ -82,7 +82,7 @@ class SimpleDaemon
|
|
82
82
|
raise 'Second fork failed' if (pid = fork) == -1
|
83
83
|
exit unless pid.nil?
|
84
84
|
kill_pid
|
85
|
-
@file = Tempfile.new
|
85
|
+
@file = Tempfile.new("flick-temp")
|
86
86
|
@file.write Process.pid
|
87
87
|
@file.rewind
|
88
88
|
unless safe
|
@@ -115,9 +115,9 @@ class SimpleDaemon
|
|
115
115
|
rescue TypeError
|
116
116
|
$stdout.puts "#{pidfile} was empty: TypeError"
|
117
117
|
rescue Errno::ENOENT
|
118
|
-
|
118
|
+
$stdout.puts "#{pidfile} did not exist: Errno::ENOENT"
|
119
119
|
rescue Errno::ESRCH
|
120
|
-
|
120
|
+
$stdout.puts "The process #{opid} did not exist: Errno::ESRCH"
|
121
121
|
rescue Errno::EPERM
|
122
122
|
raise "Lack of privileges to manage the process #{opid}: Errno::EPERM"
|
123
123
|
rescue ::Exception => e
|
data/lib/flick/system.rb
CHANGED
@@ -7,10 +7,8 @@ module Flick
|
|
7
7
|
Dir.mkdir dir_name unless File.exists? dir_name
|
8
8
|
end
|
9
9
|
|
10
|
-
def self.clean_system_dir dir_name
|
11
|
-
Dir.glob("#{dir_name}
|
12
|
-
File.delete file
|
13
|
-
end
|
10
|
+
def self.clean_system_dir dir_name
|
11
|
+
Dir.glob("#{dir_name}/*").each { |file| File.delete file }
|
14
12
|
end
|
15
13
|
|
16
14
|
def self.find_pid string
|
@@ -36,6 +34,10 @@ module Flick
|
|
36
34
|
def self.kill_process type, udid
|
37
35
|
pids = self.find_pid "#{type}-#{udid}"
|
38
36
|
self.kill_pids pids
|
37
|
+
if type == "video"
|
38
|
+
pid = `pgrep -f #{udid}`.to_i
|
39
|
+
`kill #{pid}` unless pid.zero?
|
40
|
+
end
|
39
41
|
end
|
40
42
|
|
41
43
|
def self.kill string
|
data/lib/flick/version.rb
CHANGED
data/lib/flick/video.rb
CHANGED
@@ -21,31 +21,24 @@ class Video
|
|
21
21
|
self.format = options[:format]
|
22
22
|
end
|
23
23
|
|
24
|
-
def android
|
25
|
-
platform == "android"
|
26
|
-
end
|
27
|
-
|
28
|
-
def ios
|
29
|
-
platform == "ios"
|
30
|
-
end
|
31
|
-
|
32
24
|
def run
|
33
25
|
self.send(action)
|
34
26
|
end
|
35
27
|
|
36
28
|
def start
|
37
29
|
driver.clear_files
|
38
|
-
puts "\nStarting Recoder!!!"
|
39
30
|
if driver.recordable?
|
31
|
+
Flick::Checker.system_dependency "mp4box"
|
40
32
|
if extended
|
41
|
-
puts "In
|
42
|
-
Flick::Checker.system_dependency "mp4box"
|
33
|
+
puts "Starting Recorder In Extended Mode.\n"
|
43
34
|
loop_record
|
44
35
|
else
|
36
|
+
puts "Starting Recorder In Normal Mode.\nRecorder will automatically stop after 180 seconds...\n"
|
45
37
|
start_record
|
46
38
|
end
|
47
39
|
else
|
48
40
|
Flick::Checker.system_dependency "ffmpeg"
|
41
|
+
puts "Starting Screenshot Recorder...\n"
|
49
42
|
start_screenshot_record
|
50
43
|
end
|
51
44
|
end
|
@@ -63,12 +56,20 @@ class Video
|
|
63
56
|
|
64
57
|
private
|
65
58
|
|
59
|
+
def android
|
60
|
+
platform == "android"
|
61
|
+
end
|
62
|
+
|
63
|
+
def ios
|
64
|
+
platform == "ios"
|
65
|
+
end
|
66
|
+
|
66
67
|
def start_record
|
67
68
|
Flick::System.kill_process "video", udid
|
68
69
|
$0 = "flick-video-#{udid}"
|
69
70
|
SimpleDaemon.daemonize!
|
70
71
|
command = -> do
|
71
|
-
driver.screenrecord "video
|
72
|
+
driver.screenrecord "video-single"
|
72
73
|
end
|
73
74
|
command.call
|
74
75
|
end
|
@@ -81,7 +82,7 @@ class Video
|
|
81
82
|
count = "%03d" % 1
|
82
83
|
loop do
|
83
84
|
unless Flick::System.process_running? "#{udid}-"
|
84
|
-
driver.screenrecord "video-#{
|
85
|
+
driver.screenrecord "video-#{count}"
|
85
86
|
count.next!
|
86
87
|
end
|
87
88
|
end
|
@@ -90,12 +91,15 @@ class Video
|
|
90
91
|
end
|
91
92
|
|
92
93
|
def stop_record
|
93
|
-
Flick::System.kill_process "video", udid
|
94
|
+
Flick::System.kill_process "video", udid #kills recording
|
94
95
|
sleep 5 #wait for video process to finish
|
95
96
|
driver.pull_files "video"
|
96
|
-
files = Dir.glob("#{driver.flick_dir}/video
|
97
|
-
|
98
|
-
|
97
|
+
files = Dir.glob("#{driver.flick_dir}/video*.mp4")
|
98
|
+
if files.empty?
|
99
|
+
puts "\nError! No video files found in #{driver.flick_dir}\n".red
|
100
|
+
return
|
101
|
+
end
|
102
|
+
files.each { |file| system("mp4box -cat #{file} #{driver.flick_dir}/#{driver.name}.mp4") } #renames video-single to udid or name if given...
|
99
103
|
puts "Saving to #{driver.outdir}/#{driver.name}.#{format}"
|
100
104
|
if format == "gif"
|
101
105
|
gif
|
@@ -113,7 +117,7 @@ class Video
|
|
113
117
|
count = "%03d" % 1
|
114
118
|
loop do
|
115
119
|
if count.to_i <= image_count
|
116
|
-
driver.screenshot "screenshot-#{
|
120
|
+
driver.screenshot "screenshot-#{count}"
|
117
121
|
count.next!; sleep seconds
|
118
122
|
else
|
119
123
|
stop_screenshot_recording
|
@@ -126,8 +130,9 @@ class Video
|
|
126
130
|
|
127
131
|
def stop_screenshot_recording
|
128
132
|
driver.pull_files "screenshot" if android
|
129
|
-
puts "Saving to #{driver.outdir}/#{driver.name}.#{format}"
|
130
133
|
self.send(format)
|
134
|
+
Flick::System.kill_process "screenshot", udid
|
135
|
+
puts "Saving to #{driver.outdir}/#{driver.name}.#{format}"
|
131
136
|
end
|
132
137
|
|
133
138
|
def gif
|
@@ -140,13 +145,21 @@ class Video
|
|
140
145
|
File.rename "#{driver.flick_dir}/#{driver.name}.mp4", "#{driver.outdir}/#{driver.name}.mp4" unless format == "gif"
|
141
146
|
end
|
142
147
|
|
148
|
+
def wait_for_file file
|
149
|
+
start = Time.now
|
150
|
+
until File.exists? file
|
151
|
+
sleep 1; break if Time.now - start > 30
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
143
155
|
def convert_images_to_mp4
|
144
156
|
remove_zero_byte_images
|
145
|
-
%x(ffmpeg -loglevel quiet -framerate 1 -pattern_type glob -i '#{driver.flick_dir}/screenshot
|
157
|
+
%x(ffmpeg -loglevel quiet -framerate 1 -pattern_type glob -i '#{driver.flick_dir}/screenshot*.png' -c:v libx264 -pix_fmt yuv420p #{driver.flick_dir}/#{driver.name}.mp4)
|
158
|
+
wait_for_file "#{driver.flick_dir}/#{driver.name}.mp4"
|
146
159
|
end
|
147
160
|
|
148
161
|
def remove_zero_byte_images
|
149
|
-
Dir.glob("#{driver.flick_dir}/screenshot
|
162
|
+
Dir.glob("#{driver.flick_dir}/screenshot*.png").each do |f|
|
150
163
|
File.delete f if File.zero? f
|
151
164
|
end
|
152
165
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -84,14 +84,14 @@ dependencies:
|
|
84
84
|
requirements:
|
85
85
|
- - "~>"
|
86
86
|
- !ruby/object:Gem::Version
|
87
|
-
version: 0.
|
87
|
+
version: 0.8.1
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
91
|
requirements:
|
92
92
|
- - "~>"
|
93
93
|
- !ruby/object:Gem::Version
|
94
|
-
version: 0.
|
94
|
+
version: 0.8.1
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: commander
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
@@ -273,7 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
273
273
|
version: '0'
|
274
274
|
requirements: []
|
275
275
|
rubyforge_project:
|
276
|
-
rubygems_version: 2.5.
|
276
|
+
rubygems_version: 2.5.1
|
277
277
|
signing_key:
|
278
278
|
specification_version: 4
|
279
279
|
summary: A CLI to capture screenshots, video, logs, and device information for Android
|