dryrun 0.8.1 → 0.9.0
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/.gitignore +1 -0
- data/README.md +15 -3
- data/bin/dryrun +2 -1
- data/dryrun.gemspec +24 -25
- data/lib/dryrun.rb +25 -19
- data/lib/dryrun/android_project.rb +5 -3
- data/lib/dryrun/device.rb +1 -1
- data/lib/dryrun/dryrun_utils.rb +5 -1
- data/lib/dryrun/github.rb +6 -6
- data/lib/dryrun/version.rb +1 -1
- data/spec/dryrun_spec.rb +1 -0
- data/spec/github_spec.rb +64 -0
- data/spec/spec_helper.rb +25 -0
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 759a2e5820edc02f75551a4f9750e3687cfd916d
|
4
|
+
data.tar.gz: 052d76dbdfbc28eb887378e9be865a338560860d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30cb25425f1dfe5dce055886a9c521fa32ded7c74643a8304f94ff1b6bd637a5d6c6775eeae5f9c0842f81ea801afac580b85649b6fc2a376e5008653612df30
|
7
|
+
data.tar.gz: 22ff88af77ebcf96de7055970c214087e63387095a545e1d4c8bb0482dabbaec295df8fa07edff1ad535fbe228655372a17ead8eda5d86a0f97d129aecb2e195
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
### Show some :heart:
|
13
13
|
[](https://github.com/cesarferreira/dryrun)
|
14
|
-
[](https://github.com/cesarferreira/dryrun/fork) [](https://github.com/cesarferreira/dryrun) [](https://github.com/cesarferreira/dryrun)
|
14
|
+
[](https://github.com/cesarferreira/dryrun/fork) [](https://github.com/cesarferreira/dryrun) [](https://github.com/cesarferreira/dryrun)
|
15
15
|
[](https://twitter.com/cesarmcferreira)
|
16
16
|
|
17
17
|
|
@@ -27,7 +27,7 @@ Wait a few seconds and the app is now opened on your phone :smiley:
|
|
27
27
|
|
28
28
|
### Advanced usage
|
29
29
|
```bash
|
30
|
-
$ dryrun -h
|
30
|
+
$ dryrun -h
|
31
31
|
Usage: dryrun GIT_URL [OPTIONS]
|
32
32
|
|
33
33
|
Options
|
@@ -57,6 +57,18 @@ Options
|
|
57
57
|
|
58
58
|
- No need to wait for **Android Studio** to load.
|
59
59
|
|
60
|
+
|
61
|
+
## Notes
|
62
|
+
|
63
|
+
Behaware that ANDROID_HOME needs to be set with the adb path:
|
64
|
+
- MAC -> ```ANDROID_HOME=/usr/local/opt/android-sdk```
|
65
|
+
- Linux -> ```ANDROID_HOME=/usr/local/opt/android-sdk```
|
66
|
+
- Windows -> ```ANDROID_HOME="...sdk"```
|
67
|
+
In windows this ANDROID_HOME is not automatically created, see more in [here](https://facebook.github.io/react-native/releases/0.21/docs/android-setup.html#define-the-android-home-environment-variable)
|
68
|
+
|
69
|
+
Additionally, on windows in order to use git commands, the following path should be on the environment variable
|
70
|
+
- ```...\Git\cmd ```
|
71
|
+
|
60
72
|
## Alternative scenario (if you don't use `dryrun`)
|
61
73
|
|
62
74
|
1. Find the github's repository url
|
@@ -76,7 +88,7 @@ I welcome and encourage all pull requests. It usually will take me within 24-48
|
|
76
88
|
2. If its a feature, bugfix, or anything please only change code to what you specify.
|
77
89
|
3. Please keep PR titles easy to read and descriptive of changes, this will make them easier to merge :)
|
78
90
|
4. Pull requests _must_ be made against `develop` branch. Any other branch (unless specified by the maintainers) will get rejected.
|
79
|
-
5. Check for existing [issues](https://github.com/cesarferreira/dryrun/issues) first, before filing an issue.
|
91
|
+
5. Check for existing [issues](https://github.com/cesarferreira/dryrun/issues) first, before filing an issue.
|
80
92
|
6. Have fun!
|
81
93
|
|
82
94
|
### Created & Maintained By
|
data/bin/dryrun
CHANGED
data/dryrun.gemspec
CHANGED
@@ -1,38 +1,37 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'dryrun/version'
|
2
|
+
require File.join([File.dirname(__FILE__), 'lib', 'dryrun', 'version.rb'])
|
5
3
|
|
6
4
|
# rake build # Build dryrun-0.0.1.gem into the pkg directory
|
7
5
|
# rake install # Build and install dryrun-0.0.1.gem into system gems
|
8
6
|
# rake release # Create tag v0.0.1 and build and push dryrun-0.0.1.gem t...
|
9
7
|
# rake spec # Run RSpec code examples
|
10
8
|
|
11
|
-
Gem::Specification.new do |
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
9
|
+
Gem::Specification.new do |s|
|
10
|
+
s.name = 'dryrun'
|
11
|
+
s.version = Dryrun::VERSION
|
12
|
+
s.authors = ['cesar ferreira']
|
13
|
+
s.email = ['cesar.manuel.ferreira@gmail.com']
|
16
14
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
s.summary = 'Tool to try any android library hosted online directly from the command line'
|
16
|
+
s.homepage = 'http://cesarferreira.com'
|
17
|
+
s.license = 'MIT'
|
18
|
+
s.platform = Gem::Platform::RUBY
|
21
19
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
s.files = `git ls-files`.split("
|
21
|
+
")
|
22
|
+
s.bindir = 'bin'
|
23
|
+
s.require_paths << 'lib'
|
24
|
+
s.executables << 'dryrun'
|
26
25
|
|
27
|
-
|
26
|
+
s.required_ruby_version = '>= 2.0.0'
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
s.add_development_dependency 'rake', '~> 10.0'
|
29
|
+
s.add_development_dependency 'pry-byebug', '~> 3.2'
|
30
|
+
s.add_development_dependency 'rspec'
|
32
31
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
32
|
+
s.add_dependency 'bundler', '~> 1.7'
|
33
|
+
s.add_dependency 'colorize', '~> 0.7'
|
34
|
+
s.add_dependency 'oga', '~> 1.3.1'
|
35
|
+
s.add_dependency 'highline', '~> 1.7'
|
36
|
+
s.add_dependency 'rjb', '>= 1.5.4'
|
38
37
|
end
|
data/lib/dryrun.rb
CHANGED
@@ -4,10 +4,10 @@ require 'fileutils'
|
|
4
4
|
require 'dryrun/github'
|
5
5
|
require 'dryrun/version'
|
6
6
|
require 'dryrun/android_project'
|
7
|
+
require 'dryrun/device'
|
7
8
|
require 'highline/import'
|
8
9
|
require 'openssl'
|
9
10
|
require 'open3'
|
10
|
-
require_relative 'dryrun/device'
|
11
11
|
require 'optparse'
|
12
12
|
|
13
13
|
module Dryrun
|
@@ -33,8 +33,8 @@ module Dryrun
|
|
33
33
|
def create_options_parser(args)
|
34
34
|
args.options do |opts|
|
35
35
|
opts.banner = 'Usage: dryrun GIT_URL [OPTIONS]'
|
36
|
-
opts.separator
|
37
|
-
opts.separator
|
36
|
+
opts.separator ''
|
37
|
+
opts.separator 'Options'
|
38
38
|
|
39
39
|
opts.on('-m MODULE_NAME', '--module MODULE_NAME', 'Custom module to run') do |custom_module|
|
40
40
|
@custom_module = custom_module
|
@@ -107,11 +107,11 @@ module Dryrun
|
|
107
107
|
|
108
108
|
@devices = DryrunUtils.run_adb('devices')
|
109
109
|
|
110
|
-
if @devices.nil? || @devices.empty?
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
end
|
110
|
+
# if @devices.nil? || @devices.empty?
|
111
|
+
# puts 'Killing adb, there might be an issue with it...'
|
112
|
+
# DryrunUtils.run_adb('kill-server')
|
113
|
+
# @devices = DryrunUtils.run_adb('devices')
|
114
|
+
# end
|
115
115
|
|
116
116
|
puts 'No devices attached, but I\'ll run anyway' if @devices.empty?
|
117
117
|
|
@@ -161,24 +161,30 @@ module Dryrun
|
|
161
161
|
end
|
162
162
|
|
163
163
|
if @url.nil?
|
164
|
-
puts 'You need to insert a valid GIT URL'
|
164
|
+
puts 'You need to insert a valid GIT URL/folder'
|
165
165
|
exit 1
|
166
166
|
end
|
167
167
|
|
168
|
-
@url = @url.split('?').first
|
169
|
-
@url.chop! if @url.end_with? '/'
|
170
|
-
|
171
168
|
pick_device
|
172
169
|
|
173
|
-
|
170
|
+
if DryrunUtils::is_folder? (@url)
|
171
|
+
repository_path = File.expand_path @url
|
172
|
+
else
|
174
173
|
|
175
|
-
|
176
|
-
|
177
|
-
exit 1
|
178
|
-
end
|
174
|
+
@url = @url.split('?').first
|
175
|
+
@url.chop! if @url.end_with? '/'
|
179
176
|
|
180
|
-
|
181
|
-
|
177
|
+
github = Github.new(@url)
|
178
|
+
|
179
|
+
unless github.valid?
|
180
|
+
puts "#{@url.red} is not a valid git @url"
|
181
|
+
exit 1
|
182
|
+
end
|
183
|
+
|
184
|
+
# clone the repository
|
185
|
+
repository_path = github.clone(@branch, @tag, @cleanup)
|
186
|
+
|
187
|
+
end
|
182
188
|
|
183
189
|
android_project = AndroidProject.new(repository_path, @app_path, @custom_module, @flavour, @device)
|
184
190
|
|
@@ -183,21 +183,23 @@ module Dryrun
|
|
183
183
|
|
184
184
|
manifest_file.close
|
185
185
|
|
186
|
-
"am start -n \"#{
|
186
|
+
"am start -n \"#{launcheable_activity}\" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER"
|
187
187
|
end
|
188
188
|
|
189
189
|
def get_manifest(path_to_sample)
|
190
190
|
default_path = File.join(path_to_sample, 'src/main/AndroidManifest.xml')
|
191
|
+
|
191
192
|
if File.exist?(default_path)
|
192
|
-
|
193
|
+
File.open(default_path)
|
193
194
|
else
|
195
|
+
puts path_to_sample
|
194
196
|
Find.find(path_to_sample) do |path|
|
195
197
|
return File.open(path) if path =~ /.*AndroidManifest.xml$/
|
196
198
|
end
|
197
199
|
end
|
198
200
|
end
|
199
201
|
|
200
|
-
def
|
202
|
+
def launcheable_activity
|
201
203
|
full_path_to_launcher = "#{@package}#{@launcher_activity.gsub(@package, '')}"
|
202
204
|
"#{@package}/#{full_path_to_launcher}"
|
203
205
|
end
|
data/lib/dryrun/device.rb
CHANGED
data/lib/dryrun/dryrun_utils.rb
CHANGED
@@ -46,6 +46,10 @@ module Dryrun
|
|
46
46
|
run(path)
|
47
47
|
end
|
48
48
|
|
49
|
+
def self.is_folder? (path)
|
50
|
+
File.directory?(path)
|
51
|
+
end
|
52
|
+
|
49
53
|
def self.run(path)
|
50
54
|
Open3.popen3(path) do |_stdin, stdout, _stderr|
|
51
55
|
devices = []
|
@@ -53,7 +57,7 @@ module Dryrun
|
|
53
57
|
line = line.strip
|
54
58
|
if !line.empty? && line !~ /^List of devices/ && !line.start_with?('adb') && !line.start_with?('*')
|
55
59
|
parts = line.split
|
56
|
-
devices <<
|
60
|
+
devices << Dryrun::Device.new(parts[0], parts[1])
|
57
61
|
end
|
58
62
|
end
|
59
63
|
devices
|
data/lib/dryrun/github.rb
CHANGED
@@ -13,7 +13,7 @@ module Dryrun
|
|
13
13
|
def sanitize_url(url)
|
14
14
|
url = url.split('?').first
|
15
15
|
url.chop! if url.end_with? '/'
|
16
|
-
|
16
|
+
url
|
17
17
|
end
|
18
18
|
|
19
19
|
def destination
|
@@ -25,7 +25,7 @@ module Dryrun
|
|
25
25
|
stripped_url = stripped_url.gsub('.git', '')
|
26
26
|
stripped_url = stripped_url.gsub('git@github.com:', '')
|
27
27
|
stripped_url = stripped_url.gsub('https://github.com/', '')
|
28
|
-
stripped_url
|
28
|
+
stripped_url.gsub('http://github.com/', '')
|
29
29
|
end
|
30
30
|
|
31
31
|
def valid?
|
@@ -36,7 +36,7 @@ module Dryrun
|
|
36
36
|
(starts_with_git || starts_with_https || starts_with_http)
|
37
37
|
end
|
38
38
|
|
39
|
-
def
|
39
|
+
def cloneable_url
|
40
40
|
starts_with_git = @base_url.split(//).first(4).join.eql? 'git@'
|
41
41
|
ends_with_git = @base_url.split(//).last(4).join.eql? '.git'
|
42
42
|
|
@@ -53,7 +53,7 @@ module Dryrun
|
|
53
53
|
## CLONE THE REPOSITORY
|
54
54
|
##
|
55
55
|
def clone(branch, tag, cleanup)
|
56
|
-
|
56
|
+
cloneable = cloneable_url
|
57
57
|
|
58
58
|
tmpdir = Dir.tmpdir + "/dryrun/#{@destination}"
|
59
59
|
|
@@ -72,7 +72,7 @@ module Dryrun
|
|
72
72
|
|
73
73
|
if !is_git_repo
|
74
74
|
FileUtils.rm_rf(tmpdir)
|
75
|
-
DryrunUtils.execute("git clone --depth 1 #{
|
75
|
+
DryrunUtils.execute("git clone --depth 1 #{cloneable} #{tmpdir}")
|
76
76
|
DryrunUtils.execute("git checkout #{branch}")
|
77
77
|
else
|
78
78
|
puts "Found project in #{tmpdir.green}..."
|
@@ -82,7 +82,7 @@ module Dryrun
|
|
82
82
|
DryrunUtils.execute("git pull origin #{branch}")
|
83
83
|
end
|
84
84
|
else
|
85
|
-
DryrunUtils.execute("git clone --depth 1 #{
|
85
|
+
DryrunUtils.execute("git clone --depth 1 #{cloneable} #{tmpdir}")
|
86
86
|
end
|
87
87
|
|
88
88
|
if tag
|
data/lib/dryrun/version.rb
CHANGED
data/spec/dryrun_spec.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'spec_helper'
|
data/spec/github_spec.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'dryrun/github'
|
3
|
+
|
4
|
+
describe '# Github' do
|
5
|
+
|
6
|
+
context 'URL validity' do
|
7
|
+
it 'URL should be valid' do
|
8
|
+
url = 'https://github.com/cesarferreira/android-helloworld'
|
9
|
+
github = Dryrun::Github.new(url)
|
10
|
+
expected = 'https://github.com/cesarferreira/android-helloworld.git'
|
11
|
+
expect(github.cloneable_url).to eq(expected)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'URL that ends in .git should be valid' do
|
15
|
+
url = 'https://github.com/googlesamples/google-services.git'
|
16
|
+
github = Dryrun::Github.new(url)
|
17
|
+
expected = 'https://github.com/googlesamples/google-services.git'
|
18
|
+
expect(github.cloneable_url).to eq(expected)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'SSH URL should be valid' do
|
22
|
+
url = 'git@github.com:cesarferreira/android-helloworld.git'
|
23
|
+
github = Dryrun::Github.new(url)
|
24
|
+
expected = 'git@github.com:cesarferreira/android-helloworld.git'
|
25
|
+
expect(github.cloneable_url).to eq(expected)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'URL should not be valid' do
|
29
|
+
url = 'asdasdas'
|
30
|
+
github = Dryrun::Github.new(url)
|
31
|
+
expect(github.valid?).to be false
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'URL destination folders' do
|
36
|
+
it 'Given a regular url' do
|
37
|
+
url = 'https://github.com/cesarferreira/android-helloworld'
|
38
|
+
github = Dryrun::Github.new(url)
|
39
|
+
expected = 'cesarferreira/android-helloworld'
|
40
|
+
expect(github.destination).to eq(expected)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'Given a URL that ends in .git' do
|
44
|
+
url = 'https://github.com/googlesamples/google-services.git'
|
45
|
+
github = Dryrun::Github.new(url)
|
46
|
+
expected = 'googlesamples/google-services'
|
47
|
+
expect(github.destination).to eq(expected)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'Given a SSH URL' do
|
51
|
+
url = 'git@github.com:cesarferreira/android-helloworld.git'
|
52
|
+
github = Dryrun::Github.new(url)
|
53
|
+
expected = 'cesarferreira/android-helloworld'
|
54
|
+
expect(github.destination).to eq(expected)
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'Given a non Github URL' do
|
58
|
+
url = 'git@bitbucket.org:RyanBis/another-android-library.git'
|
59
|
+
github = Dryrun::Github.new(url)
|
60
|
+
expected = '2ef4153951350a0521cd8e02e4b629072dd515637610f0b48fe17a1a89a2c51a'
|
61
|
+
expect(github.destination).to eq(expected)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'dryrun'
|
2
|
+
RSpec.configure do |config|
|
3
|
+
# rspec-expectations config goes here. You can use an alternate
|
4
|
+
# assertion/expectation library such as wrong or the stdlib/minitest
|
5
|
+
# assertions if you prefer.
|
6
|
+
config.expect_with :rspec do |expectations|
|
7
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
8
|
+
# and `failure_message` of custom matchers include text for helper methods
|
9
|
+
# defined using `chain`, e.g.:
|
10
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
11
|
+
# # => "be bigger than 2 and smaller than 4"
|
12
|
+
# ...rather than:
|
13
|
+
# # => "be bigger than 2"
|
14
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
15
|
+
end
|
16
|
+
|
17
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
18
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
19
|
+
config.mock_with :rspec do |mocks|
|
20
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
21
|
+
# a real object. This is generally recommended, and will default to
|
22
|
+
# `true` in RSpec 4.
|
23
|
+
mocks.verify_partial_doubles = true
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dryrun
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cesar ferreira
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -122,8 +122,7 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 1.5.4
|
125
|
-
description:
|
126
|
-
line
|
125
|
+
description:
|
127
126
|
email:
|
128
127
|
- cesar.manuel.ferreira@gmail.com
|
129
128
|
executables:
|
@@ -153,7 +152,10 @@ files:
|
|
153
152
|
- lib/dryrun/dryrun_utils.rb
|
154
153
|
- lib/dryrun/github.rb
|
155
154
|
- lib/dryrun/version.rb
|
156
|
-
|
155
|
+
- spec/dryrun_spec.rb
|
156
|
+
- spec/github_spec.rb
|
157
|
+
- spec/spec_helper.rb
|
158
|
+
homepage: http://cesarferreira.com
|
157
159
|
licenses:
|
158
160
|
- MIT
|
159
161
|
metadata: {}
|
@@ -161,6 +163,7 @@ post_install_message:
|
|
161
163
|
rdoc_options: []
|
162
164
|
require_paths:
|
163
165
|
- lib
|
166
|
+
- lib
|
164
167
|
required_ruby_version: !ruby/object:Gem::Requirement
|
165
168
|
requirements:
|
166
169
|
- - ">="
|
@@ -173,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
176
|
version: '0'
|
174
177
|
requirements: []
|
175
178
|
rubyforge_project:
|
176
|
-
rubygems_version: 2.5.
|
179
|
+
rubygems_version: 2.5.2
|
177
180
|
signing_key:
|
178
181
|
specification_version: 4
|
179
182
|
summary: Tool to try any android library hosted online directly from the command line
|