dryrun 0.3.6 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4fd1ba9e6128d81ef1f63fbe9d3f390d110bc4b8
4
- data.tar.gz: 35d3f500bb00c197d26275324ba3811a2bad673f
3
+ metadata.gz: 10d011b7a25d63325257ca136b7cc4ab0c0c91c9
4
+ data.tar.gz: e1748d67462043c41fc210b32332e04708bebdbf
5
5
  SHA512:
6
- metadata.gz: 2d4ed1d9533676a7129663edd5a674bca2f6938e4ad4d41ee309d6f2b1d963905f6543b762a66295c773f45b46063eb6bb1913d4f594520d7acd63275635a64a
7
- data.tar.gz: b08ce5d82b63c7835c4745e1785a7f151cd0412f8fa9b368b4865b5d3e7bf250941e32469870e6fb41d4c1f6e5618f6cd946352519bd5ba2bab474ca04ea6dc8
6
+ metadata.gz: b2f560b1066b631ecc531dd601b40b176b739e03329177b65d42818021ef629975cc5313c30d442afc6d8b4f4ed4dd2b2114cbe467babf29e207be3cdfce8c4e
7
+ data.tar.gz: e4f679f242bd348c6f9a19c2e4f7a02b9ac38bae414a06d33a4045b01443734cbb4d83682c42a360958e8780349a31861451316e8070bdb0962cb9db56eebec9
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # dryrun
2
- [![Build Status](https://travis-ci.org/cesarferreira/dryrun.svg?branch=master)](https://travis-ci.org/cesarferreira/dryrun) [![Gem Version](https://badge.fury.io/rb/dryrun.svg)](http://badge.fury.io/rb/dryrun)
2
+ [![Build Status](https://travis-ci.org/cesarferreira/dryrun.svg?branch=master)](https://travis-ci.org/cesarferreira/dryrun) [![Gem Version](https://badge.fury.io/rb/dryrun.svg)](http://badge.fury.io/rb/dryrun) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-dryrun-green.svg?style=flat)](https://android-arsenal.com/details/1/2361)
3
3
 
4
4
  **Try** any **android library** on your **smartphone** **directly** from the **command line**
5
5
 
@@ -31,7 +31,7 @@ Wait a few seconds... and `voilà`! The app is opened on your phone :smiley:
31
31
 
32
32
  ## Alternative scenario (if you don't use `dryrun`)
33
33
 
34
- 1. Find the github url (lets say `https://github.com/cesarferreira/android-helloworld`)
34
+ 1. Find the github's repository url
35
35
  2. Click the `download zip`
36
36
  3. Extract the `zip file`
37
37
  4. Open Android Studio
@@ -14,8 +14,8 @@ Gem::Specification.new do |spec|
14
14
  spec.authors = ["cesar ferreira"]
15
15
  spec.email = ["cesar.manuel.ferreira@gmail.com"]
16
16
 
17
- spec.summary = %q{Tool which allows to quickly try the demo project of an Android Library}
18
- spec.description = %q{Tool which allows to quickly try the demo project of an Android Library}
17
+ spec.summary = %q{Tool which allows to quickly try the demo project of any Android Library}
18
+ spec.description = %q{Tool which allows to quickly try the demo project of any Android Library}
19
19
  spec.homepage = "https://github.com/cesarferreira/dryrun"
20
20
 
21
21
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -8,43 +8,43 @@ module DryRun
8
8
 
9
9
  class MainApp
10
10
 
11
- def self.is_ANDROID_HOME_defined
12
- return true
11
+ def self.ANDROID_HOME_is_defined
12
+ sdk = `echo $ANDROID_HOME`.gsub("\n",'')
13
+ !sdk.empty?
13
14
  end
14
15
 
15
16
 
16
17
  def self.initialize(url)
17
18
 
18
- if !is_ANDROID_HOME_defined
19
- # TODO missing warning
19
+ unless self.ANDROID_HOME_is_defined
20
+ puts "\nWARNING: your #{'$ANDROID_HOME'.yellow} is not defined\n"
21
+ puts "\nhint: in your #{'~/.bashrc'.yellow} add:\n #{"export ANDROID_HOME=\"/Users/cesarferreira/Library/Android/sdk/\"".yellow}"
22
+ puts "\nNow type #{'source ~/.bashrc'.yellow}\n\n"
23
+ exit 1
20
24
  end
21
25
 
22
26
  github = Github.new(url)
23
27
 
24
- if !github.is_valid
28
+ unless github.is_valid
25
29
  puts "#{url.red} is not a valid github url"
26
30
  exit 1
27
31
  end
28
32
 
29
33
  # clone the repository
30
- clonable = github.clonable_url
31
-
32
- repository = github.clone
33
-
34
- Dir.chdir repository
34
+ repository_path = github.clone
35
35
 
36
- project = AndroidProject.new(repository)
36
+ android_project = AndroidProject.new(repository_path)
37
37
 
38
38
  # is a valid android project?
39
- if !project.is_valid
39
+ unless android_project.is_valid
40
40
  puts "#{url.red} is not a valid android project"
41
41
  exit 1
42
42
  end
43
43
 
44
44
  # clean and install the apk
45
- project.clean_install
45
+ android_project.install
46
46
 
47
- puts "\n> If you want to remove the app you just installed, execute:\n#{project.get_uninstall_command.yellow}\n\n"
47
+ puts "\n> If you want to remove the app you just installed, execute:\n#{android_project.get_uninstall_command.yellow}\n\n"
48
48
 
49
49
  end
50
50
  end
@@ -1,4 +1,6 @@
1
1
  require 'nokogiri'
2
+ require 'fileutils'
3
+ require 'tempfile'
2
4
 
3
5
  module DryRun
4
6
 
@@ -10,6 +12,32 @@ module DryRun
10
12
  @modules = find_modules
11
13
  end
12
14
 
15
+ def remove_local_properties
16
+ Dir.chdir @base_path
17
+ file_name = 'local.properties'
18
+
19
+ if File.exist?(file_name)
20
+ File.remove(file_name)
21
+ end
22
+ end
23
+
24
+ def remove_application_id
25
+ # Open temporary file
26
+ tmp = Tempfile.new("extract")
27
+
28
+ file = "#{@path_to_sample}/build.gradle"
29
+
30
+ # Write good lines to temporary file
31
+ open(file, 'r').each { |l| tmp << l unless l.include? 'applicationId' }
32
+
33
+ # Close tmp, or troubles ahead
34
+ tmp.close
35
+
36
+ # Move temp file to origin
37
+ FileUtils.mv(tmp.path, file)
38
+
39
+ end
40
+
13
41
  def settings_gradle
14
42
  "#{@base_path}/settings.gradle"
15
43
  end
@@ -29,7 +57,7 @@ module DryRun
29
57
  end
30
58
 
31
59
  # ./gradlew clean installDebug
32
- def clean_install
60
+ def install
33
61
 
34
62
  Dir.chdir @base_path
35
63
 
@@ -42,17 +70,26 @@ module DryRun
42
70
 
43
71
  builder = "gradle"
44
72
 
45
- if File.exist?("gradlew")
46
- system("chmod +x gradlew")
47
- builder = "./gradlew"
73
+ if File.exist?('gradlew')
74
+ system('chmod +x gradlew')
75
+
76
+ builder = 'sh gradlew'
77
+ end
78
+
79
+
80
+ # Generate the gradle/ folder
81
+ if File.exist?('gradlew') and !File.directory?('gradle/')
82
+ system('gradle wrap')
48
83
  end
49
84
 
50
85
  self.uninstall
86
+ self.remove_application_id
87
+ self.remove_local_properties
51
88
 
52
89
  system("#{builder} clean assembleDebug installDebug")
53
90
 
54
91
  puts "Installing #{@package.green}...\n"
55
- puts "executing: #{execute_line}"
92
+ puts "executing: #{execute_line.green}\n\n"
56
93
  system(execute_line)
57
94
 
58
95
  end
@@ -61,6 +98,7 @@ module DryRun
61
98
 
62
99
  @modules.each do |child|
63
100
  full_path = "#{@base_path}#{child.first}"
101
+ @path_to_sample = full_path
64
102
 
65
103
  execute_line = get_execute_line("#{full_path}/src/main/AndroidManifest.xml")
66
104
  return full_path, execute_line if execute_line
@@ -96,10 +134,14 @@ module DryRun
96
134
 
97
135
  f.close
98
136
 
99
- "adb shell am start -n #{@package}/#{@launcher_activity}"
137
+ "adb shell am start -n \"#{get_launchable_activity}\" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER"
100
138
 
101
139
  end
102
140
 
141
+ def get_launchable_activity
142
+ full_path_to_launcher = "#{@package}#{@launcher_activity.gsub(@package,'')}"
143
+ "#{@package}/#{full_path_to_launcher}"
144
+ end
103
145
 
104
146
  def get_package(doc)
105
147
  doc.xpath("//manifest").attr('package').value
@@ -1,3 +1,3 @@
1
1
  module DryRun
2
- VERSION = "0.3.6"
2
+ VERSION = "0.4.0"
3
3
  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.3.6
4
+ version: 0.4.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-08-21 00:00:00.000000000 Z
11
+ date: 2015-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -94,7 +94,7 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.6.6.2
97
- description: Tool which allows to quickly try the demo project of an Android Library
97
+ description: Tool which allows to quickly try the demo project of any Android Library
98
98
  email:
99
99
  - cesar.manuel.ferreira@gmail.com
100
100
  executables:
@@ -139,5 +139,5 @@ rubyforge_project:
139
139
  rubygems_version: 2.4.8
140
140
  signing_key:
141
141
  specification_version: 4
142
- summary: Tool which allows to quickly try the demo project of an Android Library
142
+ summary: Tool which allows to quickly try the demo project of any Android Library
143
143
  test_files: []