dryrun 0.4.5 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c67f2fe04c2d7ccdba7e7bd50ddf7ae355f22c3c
4
- data.tar.gz: 3794bbba77ed2e187b8cac839e66eeebea564b32
3
+ metadata.gz: 3d3f3a98a45ab58ac45426e6c806a5b6bd773cc9
4
+ data.tar.gz: 04cacfaa410713424d3c67e570e79864ab30f6a5
5
5
  SHA512:
6
- metadata.gz: 89d80fad215e3bf72c9ae0e89ec51cb6e018a361b96f6ddfc73885275f0c393be4529c8a6d5fee5bf79f6a436259762bf4a4478e1273c292af1009059ae8902c
7
- data.tar.gz: 78a26051d414064d937fa83db821e18ab0747af93f30bd721b26d5aab1333916bd4ad66c6d21d89382c27e48c9ba7fc7d34b7805f970da7ec727cf9b9d450ff7
6
+ metadata.gz: 56e0f7b045e2ab959a96f007016ae362d8d97a62be4b583989e313bceafbb77623aca311df3db72381f5b8f117a782a1623591043e16b6f56cc283c8678dd9c4
7
+ data.tar.gz: 65f34a5ef5c2d48fab4a841431876d60694597b777fe616bdcb376ca63607a9a811f74c257909ef1f8af772bb9a4f92d97b259308709833e7a2df0310699b6f0
@@ -1 +1 @@
1
- 2.0.0
1
+ 2.2.3
data/README.md CHANGED
@@ -11,11 +11,29 @@
11
11
 
12
12
 
13
13
  ## Usage
14
- > dryrun https://github.com/cesarferreira/android-helloworld
15
-
14
+ ```shell
15
+ dryrun https://github.com/cesarferreira/android-helloworld
16
+ ```
16
17
 
17
18
  Wait a few seconds... and `voilà`! The app is opened on your phone :smiley:
18
19
 
20
+
21
+ #### From a custom repository folder:
22
+ ```shell
23
+ dryrun repository_url -p custom/path/to/gradle_application
24
+ ```
25
+
26
+ #### A custom module
27
+ ```shell
28
+ dryrun repository_url -m custom_application_module
29
+ ```
30
+
31
+ #### Help at any time:
32
+ ```shell
33
+ dryrun -h
34
+ ```
35
+
36
+
19
37
  ### Goodies
20
38
 
21
39
  - Private repos can be tested too :smiley:
@@ -57,3 +75,11 @@ Wait a few seconds... and `voilà`! The app is opened on your phone :smiley:
57
75
  ## Contributing
58
76
 
59
77
  Bug reports and pull requests are welcome on GitHub at https://github.com/cesarferreira/dryrun.
78
+
79
+ To install gem as local you can use this:
80
+ ```shell
81
+ # In the project folder:
82
+ rake install
83
+ # Next in the any gemset or place:
84
+ gem install --local path_to_dryrun/pkg/dryrun-<builded_version>.gem
85
+ ```
data/bin/dryrun CHANGED
@@ -2,10 +2,4 @@
2
2
  require 'bundler/setup'
3
3
  require 'dryrun'
4
4
 
5
- # ARGUMENTS validation
6
- if ARGV.length != 1
7
- puts "You need to provide the github URL"
8
- exit 1
9
- end
10
-
11
- DryRun::MainApp.initialize(ARGV[0])
5
+ DryRun::MainApp.new(ARGV).call
@@ -1,3 +1,4 @@
1
+ require 'optparse'
1
2
  require 'colorize'
2
3
  require 'tmpdir'
3
4
  require 'fileutils'
@@ -5,47 +6,77 @@ require 'dryrun/github'
5
6
  require 'dryrun/android_project'
6
7
 
7
8
  module DryRun
8
-
9
9
  class MainApp
10
+ def initialize(arguments)
11
+ create_options_parser
12
+ @url = ['-h', '--help'].include?(arguments.first) ? nil : arguments.shift
13
+ @app_path = nil
14
+ @custom_module = nil
15
+ @opt_parser.parse!(arguments)
10
16
 
11
- def self.ANDROID_HOME_is_defined
12
- sdk = `echo $ANDROID_HOME`.gsub("\n",'')
13
- !sdk.empty?
17
+ unless @url
18
+ puts @opt_parser.help
19
+ exit
20
+ end
14
21
  end
15
22
 
23
+ def create_options_parser
24
+ @opt_parser = OptionParser.new do |opts|
25
+ opts.banner = "Usage: dryrun GITHUB_URL [OPTIONS]"
26
+ opts.separator ''
27
+ opts.separator "Options"
28
+
29
+ opts.on('-m MODULE_NAME', '--module MODULE_NAME', 'Custom module to run') do |custom_module|
30
+ @custom_module = custom_module
31
+ end
32
+ opts.on('-p PATH', '--path PATH', 'Custom path to android project') do |app_path|
33
+ @app_path = app_path
34
+ end
35
+ opts.on('-h', '--help', 'Displays help') do
36
+ puts opts.help
37
+ exit
38
+ end
39
+ end
40
+ end
16
41
 
17
- def self.initialize(url)
42
+ def android_home_is_defined
43
+ sdk = `echo $ANDROID_HOME`.gsub("\n",'')
44
+ !sdk.empty?
45
+ end
18
46
 
19
- unless self.ANDROID_HOME_is_defined
47
+ def call
48
+ unless android_home_is_defined
20
49
  puts "\nWARNING: your #{'$ANDROID_HOME'.yellow} is not defined\n"
21
50
  puts "\nhint: in your #{'~/.bashrc'.yellow} add:\n #{"export ANDROID_HOME=\"/Users/cesarferreira/Library/Android/sdk/\"".yellow}"
22
51
  puts "\nNow type #{'source ~/.bashrc'.yellow}\n\n"
23
52
  exit 1
24
53
  end
25
54
 
26
- github = Github.new(url)
55
+ github = Github.new(@url)
27
56
 
28
57
  unless github.is_valid
29
- puts "#{url.red} is not a valid github url"
58
+ puts "#{@url.red} is not a valid github @url"
30
59
  exit 1
31
60
  end
32
61
 
33
62
  # clone the repository
34
63
  repository_path = github.clone
35
64
 
36
- android_project = AndroidProject.new(repository_path)
65
+ android_project = AndroidProject.new(repository_path, @app_path, @custom_module)
37
66
 
38
67
  # is a valid android project?
39
68
  unless android_project.is_valid
40
- puts "#{url.red} is not a valid android project"
69
+ puts "#{@url.red} is not a valid android project"
41
70
  exit 1
42
71
  end
43
72
 
73
+ puts "Using custom app folder: #{@app_path.green}" if @app_path
74
+ puts "Using custom module: #{@custom_module.green}" if @custom_module
75
+
44
76
  # clean and install the apk
45
77
  android_project.install
46
78
 
47
79
  puts "\n> If you want to remove the app you just installed, execute:\n#{android_project.get_uninstall_command.yellow}\n\n"
48
-
49
80
  end
50
81
  end
51
82
  end
@@ -3,22 +3,34 @@ require 'fileutils'
3
3
  require 'tempfile'
4
4
 
5
5
  module DryRun
6
-
7
6
  class AndroidProject
8
-
9
- def initialize(path)
7
+ def initialize(path, custom_app_path, custom_module)
8
+ @custom_app_path = custom_app_path
9
+ @custom_module = custom_module
10
10
  @base_path = path
11
- @settings_gradle_path = settings_gradle
11
+ @settings_gradle_path = settings_gradle_file
12
+
13
+ check_custom_app_path
14
+
12
15
  @modules = find_modules
13
16
  end
14
17
 
18
+ def check_custom_app_path
19
+ return unless @custom_app_path
20
+
21
+ full_custom_path = File.join(@base_path, @custom_app_path)
22
+ settings_path = settings_gradle_file(full_custom_path)
23
+ return unless is_valid(settings_path)
24
+
25
+ @settings_gradle_path = settings_path
26
+ @base_path = full_custom_path
27
+ end
28
+
15
29
  def remove_local_properties
16
30
  Dir.chdir @base_path
17
31
  file_name = 'local.properties'
18
32
 
19
- if File.exist?(file_name)
20
- File.remove(file_name)
21
- end
33
+ File.delete(file_name) if File.exist?(file_name)
22
34
 
23
35
  system("touch #{file_name}")
24
36
  end
@@ -35,34 +47,30 @@ module DryRun
35
47
 
36
48
  # Move temp file to origin
37
49
  FileUtils.mv(tmp.path, file)
38
-
39
50
  end
40
51
 
41
- def settings_gradle
42
- "#{@base_path}/settings.gradle"
52
+ def settings_gradle_file(path = @base_path)
53
+ File.join(path, 'settings.gradle')
43
54
  end
44
55
 
45
- def is_valid
46
- File.exist?(@settings_gradle_path)
56
+ def is_valid(settings_path = @settings_gradle_path)
57
+ File.exist?(settings_path)
47
58
  end
48
59
 
49
60
  def find_modules
50
- if self.is_valid
51
- content = File.open(@settings_gradle_path, "rb").read
52
- modules = content.scan(/'([^']*)'/)
53
- modules.each {|replacement| replacement.first.gsub!(':', '/')}
54
- else
55
- return []
56
- end
61
+ return [] unless is_valid
62
+
63
+ content = File.open(@settings_gradle_path, "rb").read
64
+ modules = content.scan(/'([^']*)'/)
65
+ modules.each {|replacement| replacement.first.gsub!(':', '/')}
57
66
  end
58
67
 
59
68
  def install
60
-
61
69
  Dir.chdir @base_path
62
70
 
63
- path, execute_line = self.sample_project
71
+ path, execute_line = sample_project
64
72
 
65
- if path == false and execute_line==false
73
+ if path == false and execute_line == false
66
74
  puts "Couldn't open the sample project, sorry!".red
67
75
  exit 1
68
76
  end
@@ -76,60 +84,72 @@ module DryRun
76
84
  end
77
85
 
78
86
  # Generate the gradle/ folder
79
- if File.exist?('gradlew') and !is_gradle_wrapped
80
- system('gradle wrap')
81
- end
87
+ system('gradle wrap') if File.exist?('gradlew') and !is_gradle_wrapped
88
+
89
+ remove_application_id
90
+ remove_local_properties
82
91
 
83
- self.uninstall
84
- self.remove_application_id
85
- self.remove_local_properties
92
+ if @custom_module
93
+ system("#{builder} clean :#{@custom_module}:installDebug")
94
+ else
95
+ system("#{builder} clean installDebug")
96
+ end
86
97
 
87
- system("#{builder} clean assembleDebug installDebug")
98
+ clear_app_data
88
99
 
89
100
  puts "Installing #{@package.green}...\n"
90
101
  puts "executing: #{execute_line.green}\n\n"
102
+
91
103
  system(execute_line)
92
104
 
93
105
  end
94
106
 
95
107
  def is_gradle_wrapped
96
-
97
- if !File.directory?('gradle/')
98
- return false
99
- end
108
+ return false if !File.directory?('gradle/')
100
109
 
101
110
  File.exist?('gradle/wrapper/gradle-wrapper.properties') and File.exist?('gradle/wrapper/gradle-wrapper.jar')
102
111
  end
103
112
 
104
113
  def sample_project
114
+ if @custom_module && @modules.any? { |m| m.first == "/#{@custom_module}" }
115
+ @path_to_sample = File.join(@base_path, "/#{@custom_module}")
116
+ return @path_to_sample, get_execution_line_command(@path_to_sample)
117
+ else
118
+ @modules.each do |child|
119
+ full_path = File.join(@base_path, child.first)
120
+ @path_to_sample = full_path
105
121
 
106
- @modules.each do |child|
107
- full_path = "#{@base_path}/#{child.first}"
108
- @path_to_sample = full_path
109
-
110
- execute_line = get_execute_line("#{full_path}/src/main/AndroidManifest.xml")
111
- return full_path, execute_line if execute_line
112
-
122
+ execution_line_command = get_execution_line_command(full_path)
123
+ return full_path, execution_line_command if execution_line_command
124
+ end
113
125
  end
114
- return false, false
126
+ [false, false]
127
+ end
128
+
129
+ def get_clear_app_command
130
+ "adb shell pm clear #{@package}"
115
131
  end
116
132
 
117
133
  def get_uninstall_command
118
134
  "adb uninstall #{@package}"
119
135
  end
120
136
 
121
- def uninstall
122
- system("#{self.get_uninstall_command}") # > /dev/null 2>&1")
137
+ def clear_app_data
138
+ system(get_clear_app_command)
123
139
  end
124
140
 
141
+ def uninstall_application
142
+ system(get_uninstall_command) # > /dev/null 2>&1")
143
+ end
125
144
 
126
- def get_execute_line(path_to_sample)
145
+ def get_execution_line_command(path_to_sample)
146
+ path_to_manifest = File.join(path_to_sample, 'src/main/AndroidManifest.xml')
127
147
 
128
- if !File.exist?(path_to_sample)
148
+ if !File.exist?(path_to_manifest)
129
149
  return false
130
150
  end
131
151
 
132
- f = File.open(path_to_sample)
152
+ f = File.open(path_to_manifest)
133
153
  doc = Nokogiri::XML(f)
134
154
 
135
155
  @package = get_package(doc)
@@ -142,7 +162,6 @@ module DryRun
142
162
  f.close
143
163
 
144
164
  "adb shell am start -n \"#{get_launchable_activity}\" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER"
145
-
146
165
  end
147
166
 
148
167
  def get_launchable_activity
@@ -164,7 +183,5 @@ module DryRun
164
183
  end
165
184
  false
166
185
  end
167
-
168
186
  end
169
-
170
187
  end
@@ -1,3 +1,3 @@
1
1
  module DryRun
2
- VERSION = "0.4.5"
2
+ VERSION = "0.5.0"
3
3
  end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dryrun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.5.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: 2015-09-12 00:00:00.000000000 Z
11
+ date: 2015-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '10.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '10.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry-byebug
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.1'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.7'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.7'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: colorize
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.7'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.7'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: nokogiri
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: 1.6.6.2
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.6.6.2
97
97
  description: Tool which allows to quickly try the demo project of any Android Library
@@ -102,11 +102,11 @@ executables:
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
- - .gitignore
106
- - .rspec
107
- - .ruby-gemset
108
- - .ruby-version
109
- - .travis.yml
105
+ - ".gitignore"
106
+ - ".rspec"
107
+ - ".ruby-gemset"
108
+ - ".ruby-version"
109
+ - ".travis.yml"
110
110
  - Gemfile
111
111
  - LICENSE
112
112
  - README.md
@@ -129,17 +129,17 @@ require_paths:
129
129
  - lib
130
130
  required_ruby_version: !ruby/object:Gem::Requirement
131
131
  requirements:
132
- - - '>='
132
+ - - ">="
133
133
  - !ruby/object:Gem::Version
134
134
  version: 2.0.0
135
135
  required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - '>='
137
+ - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  requirements: []
141
141
  rubyforge_project:
142
- rubygems_version: 2.4.6
142
+ rubygems_version: 2.4.8
143
143
  signing_key:
144
144
  specification_version: 4
145
145
  summary: Tool which allows to quickly try the demo project of any Android Library