cordova-rake 0.0.3 → 0.0.5

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: b5d17d4b08bcc44d95e0ef085872eadb8b270154
4
- data.tar.gz: 886dd03236b9465ac950a2c29ed153bbb6b958a6
3
+ metadata.gz: 71077203a2b2b987cd353b49d7578bbc2dfd407c
4
+ data.tar.gz: fd4bf4324413714195af1f95bc44f3720a587615
5
5
  SHA512:
6
- metadata.gz: 1d3da0235528e3b734edc42141aa2d5a5731f6191ec0f44ea64f1e3bca227583bf0c8fd763f203bb42fa2dfc80afee296bb29db7672e91c0296997f69f1d057a
7
- data.tar.gz: 18552dfceda71a4b0ea2c9101e045354b60f60010983551aa0507d099a730a535e2da46641100ab477e94668cac2679ceeb59f1e014021824dfd599b07118286
6
+ metadata.gz: b6d28ee438d03193f8cfa1699c85d106a24384d63a46c7909f8c23a1f92f439ba6a5e79229a408f72db81a021b3149b0e8d6af0bc6dc8e3ea4bf6b594627d7cd
7
+ data.tar.gz: a2f0dc2e66ec7aefe823f3bc2f513f93fa795715dd8ff29db7b306d455cf2c1a029d3661562236a5914bfa548435a69cd5624fe3715630dfb2b0f1009a10107c
data/README.md CHANGED
@@ -17,10 +17,10 @@ Add to your `Rakefile`
17
17
 
18
18
  If you don't have one
19
19
 
20
- echo "require 'cordova-rake'" > Rakefile
20
+ echo "require 'cordova/rake'" > Rakefile
21
21
 
22
22
 
23
- ## From Rake
23
+ ## rake -T
24
24
 
25
25
  ```
26
26
  rake compile # Compiles all resources
@@ -36,3 +36,37 @@ rake run:ios # Run on iOS plugged device or emulator
36
36
  rake serve # Phonegap Dev App, optional: port
37
37
  rake setup # Setup env for development
38
38
  ```
39
+
40
+
41
+ ## Google | Play Store
42
+
43
+
44
+ ### Binaries
45
+
46
+ Make sure you have `jarsigner` and `zipalign` on your path.
47
+ The latter is usually somewhere in /opt/android-sdk.
48
+
49
+
50
+ ### Key password
51
+
52
+ To avoid typing keys on eack apk build:
53
+ Rakefile:
54
+
55
+ GOOGLE_KEY = 'mykeypassword'
56
+
57
+ Or an ENV var 'GOOGLE_KEY'
58
+
59
+
60
+ ## Apple | App Store
61
+
62
+
63
+ ### Binaries
64
+
65
+ Make sure you have `xcrun`.
66
+ Also you need to open the project once in Xcode. (working on xproject gem)
67
+
68
+ ### Developer
69
+
70
+ To change developer per project:
71
+
72
+ APPLE_DEVELOPER = 'Developer X (XXXXX)'
@@ -3,7 +3,7 @@ $LOAD_PATH.push File.expand_path('../lib', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'cordova-rake'
6
- s.version = '0.0.3'
6
+ s.version = '0.0.5'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ['Marcos Piccinini']
9
9
  s.email = ['nofxx@github.com']
@@ -4,6 +4,40 @@ require 'tilt'
4
4
  require 'nokogiri'
5
5
  START = Time.now
6
6
 
7
- # Just load all tasks
7
+ #
8
+ # Some helper methods
9
+ #
10
+ def get_sources(ext, dir = 'app')
11
+ source_files = Rake::FileList.new("#{dir}/**/*.#{ext}") do |fl|
12
+ fl.exclude("~*")
13
+ fl.exclude(/^scratch\//)
14
+ # fl.exclude { |f| `git ls-files #{f}`.empty? } # Only commited
15
+ end
16
+ end
17
+
18
+ def environment
19
+ ENV['TARGET'] || 'development'
20
+ end
21
+
22
+ def config(key)
23
+ return @xml[key] if @xml
24
+ xml = Nokogiri::XML(File.open('config.xml'))
25
+ @xml = {
26
+ app: xml.xpath("//xmlns:name").text,
27
+ desc: xml.xpath("//xmlns:description").text,
28
+ platforms: xml.xpath("//xmlns:platform").map { |os| os['name'] }
29
+ }
30
+ config(key)
31
+ end
32
+
33
+ def layout
34
+ @layout ||= Tilt.new('app/html/layout.haml')
35
+ end
36
+
37
+ def app
38
+ config(:app)
39
+ end
40
+
41
+ # And load all tasks
8
42
  tasks = File.join(File.dirname(__FILE__), '..', 'tasks')
9
43
  Dir.glob("#{tasks}/*.rake").each { |r| import r }
@@ -0,0 +1,48 @@
1
+ desc 'Compiles all resources'
2
+ task :compile => ['compile:all']
3
+
4
+ namespace :compile do
5
+ task :all => [:js, :css, :html, :vars]
6
+
7
+ desc 'Compiles Coffee -> JS'
8
+ task :js => get_sources(:coffee).ext('.js')
9
+
10
+ desc 'Compiles SASS -> CSS'
11
+ task :css => get_sources(:sass).ext('.css')
12
+
13
+ desc 'Compiles HAML -> HTML'
14
+ task :html => get_sources(:haml).ext('.html')
15
+
16
+ desc 'Postcompile ENV variables'
17
+ task :vars do
18
+ data = YAML.load_file('config/app.yml')[environment]
19
+ [:js, :css, :html].map { |f| get_sources(f, 'www/js') }.flatten.each do |f|
20
+ data.each do |k, v|
21
+ sh "sed -i \"s/'...#{k.upcase}...'/'#{v}'/g\" #{f}"
22
+ # sh "sed -i \"s/'####{k.upcase}###'/#{v}/g\" #{f}" # numbers
23
+ end
24
+ end
25
+ end
26
+
27
+ rule '.js' => '.coffee' do |t|
28
+ output = File.dirname(t.source).gsub(/app\//, 'www/')
29
+ # print "CoffeeScript | " # #{t.source} -> #{output}"
30
+ sh "coffee --no-header -b -o #{output} #{t.source}"
31
+ end
32
+
33
+ rule '.css' => '.sass' do |t|
34
+ # print "SASS | #{t.source} -> #{t.name} | "
35
+ sh "sass #{t.source} #{t.name.gsub(/app\//, 'www/')}"
36
+ end
37
+
38
+ rule '.html' => '.haml' do |t|
39
+ next if t.name =~ /layout/
40
+ template = Tilt.new(t.source)
41
+ # => #<Tilt::HAMLTemplate @file="path/to/file.haml" ...>
42
+ File.open(t.name.gsub(/app\//, 'www/'), 'w') do |f|
43
+ f.puts layout.render { template.render }
44
+ end
45
+ # print "HAML | #{t.source} -> #{t.name} | "
46
+ # sh "haml #{t.source} #{}"
47
+ end
48
+ end
@@ -1,36 +1,6 @@
1
1
  #
2
2
  # Rake / Cordova
3
3
  #
4
- def get_sources(ext, dir = 'app')
5
- source_files = Rake::FileList.new("#{dir}/**/*.#{ext}") do |fl|
6
- fl.exclude("~*")
7
- fl.exclude(/^scratch\//)
8
- # fl.exclude { |f| `git ls-files #{f}`.empty? } # Only commited
9
- end
10
- end
11
-
12
- def environment
13
- ENV['TARGET'] || 'development'
14
- end
15
-
16
- def config(key)
17
- return @xml[key] if @xml
18
- xml = Nokogiri::XML(File.open('config.xml'))
19
- @xml = {
20
- app: xml.xpath("//xmlns:name").text,
21
- desc: xml.xpath("//xmlns:description").text,
22
- platforms: xml.xpath("//xmlns:platform").map { |os| os['name'] }
23
- }
24
- config(key)
25
- end
26
-
27
- def app
28
- config(:app)
29
- end
30
-
31
- def layout
32
- @layout ||= Tilt.new('app/html/layout.haml')
33
- end
34
4
 
35
5
  task default: [:greet, :compile, :report]
36
6
 
@@ -64,141 +34,15 @@ task :ripple do
64
34
  end
65
35
 
66
36
  namespace :run do
67
- desc 'Run on Android device or emulator'
68
- task :android do
69
- sh 'cordova build android'
70
- sh 'cordova run android'
71
- end
72
-
73
- desc 'Run on iOS plugged device or emulator'
74
- task :ios do
75
- sh 'cordova build ios'
76
- sh 'cordova run ios --device'
77
- end
78
- end
79
-
80
- desc 'Compiles all resources'
81
- task :compile => ['compile:all']
82
-
83
- namespace :compile do
84
- task :all => [:js, :css, :html, :vars]
85
-
86
- desc 'Compiles Coffee -> JS'
87
- task :js => get_sources(:coffee).ext('.js')
88
-
89
- desc 'Compiles SASS -> CSS'
90
- task :css => get_sources(:sass).ext('.css')
91
-
92
- desc 'Compiles HAML -> HTML'
93
- task :html => get_sources(:haml).ext('.html')
94
-
95
- desc 'Postcompile ENV variables'
96
- task :vars do
97
- data = YAML.load_file('config/app.yml')[environment]
98
- [:js, :css, :html].map { |f| get_sources(f, 'www/js') }.flatten.each do |f|
99
- data.each do |k, v|
100
- sh "sed -i \"s/'...#{k.upcase}...'/'#{v}'/g\" #{f}"
101
- # sh "sed -i \"s/'####{k.upcase}###'/#{v}/g\" #{f}" # numbers
102
- end
103
- end
104
- end
105
-
106
- rule '.js' => '.coffee' do |t|
107
- output = File.dirname(t.source).gsub(/app\//, 'www/')
108
- # print "CoffeeScript | " # #{t.source} -> #{output}"
109
- sh "coffee --no-header -b -o #{output} #{t.source}"
110
- end
111
-
112
- rule '.css' => '.sass' do |t|
113
- # print "SASS | #{t.source} -> #{t.name} | "
114
- sh "sass #{t.source} #{t.name.gsub(/app\//, 'www/')}"
115
- end
116
-
117
- rule '.html' => '.haml' do |t|
118
- next if t.name =~ /layout/
119
- template = Tilt.new(t.source)
120
- # => #<Tilt::HAMLTemplate @file="path/to/file.haml" ...>
121
- File.open(t.name.gsub(/app\//, 'www/'), 'w') do |f|
122
- f.puts layout.render { template.render }
123
- end
124
- # print "HAML | #{t.source} -> #{t.name} | "
125
- # sh "haml #{t.source} #{}"
126
- end
127
- end
128
-
129
- #
130
- #
131
- # RELEASE
132
- #
133
- #
134
- namespace :release do
135
-
136
- task :check_dirs do
137
- %w( .keys build ).each do |dir|
138
- FileUtils.mkdir dir unless File.exist?(dir)
139
- end
37
+ desc 'Run on Android device or emulator'
38
+ task :android do
39
+ sh 'cordova build android'
40
+ sh 'cordova run android'
140
41
  end
141
42
 
142
- desc 'Deploy to Google’s Play Store'
143
- task google: [:check_dirs, 'google:all', :report]
144
-
145
- namespace :google do
146
- task :all => [:clean, :keygen, :archive, :sign, :align, :check, :submit]
147
-
148
- # desc 'Clean up build folder from apks'
149
- task :clean do
150
- Dir['build/*.apk'].each { |f| File.delete(f) }
151
- end
152
-
153
- # desc 'Generates Google Play Store .keystore'
154
- task :keygen do
155
- next if File.exist?('.keys/google.keystore')
156
- puts "\nGenerate key first!\n\n"
157
- sh "keytool -genkey -v -keystore ./.keys/google.keystore "\
158
- "-alias #{app} -keyalg RSA -keysize 2048 -validity 10000"
159
- end
160
-
161
- task :archive do
162
- sh 'cordova build --release android'
163
- FileUtils.cp 'platforms/android/build/outputs'\
164
- '/apk/android-release-unsigned.apk',
165
- "build/#{app}-unsigned.apk"
166
- end
167
-
168
- task :sign do
169
- sh "jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 "\
170
- "-keystore ./.keys/google.keystore build/#{app}-unsigned.apk "\
171
- "#{app}"
172
- FileUtils.cp "build/#{app}-unsigned.apk", "build/#{app}-signed.apk"
173
- end
174
-
175
- task :align do
176
- sh "zipalign -f -v 4 build/#{app}-signed.apk build/#{app}.apk"
177
- end
178
-
179
- task :check do
180
- arch = "build/#{app}.apk"
181
- if File.exists? arch
182
- puts "Build done! #{arch} #{File.size(arch).to_f/(1024 * 1024)} Mb"
183
- else
184
- puts "Something BAD! No #{arch}!"
185
- exit 1
186
- end
187
- end
188
-
189
- task :submit do
190
- #hope we can soon
191
- end
192
- end
193
-
194
- #
195
- # Apple
196
- #
197
- desc 'Deploy to Apple’s App Store'
198
- task apple: [:check_keys_dir, 'apple:all', :report]
199
-
200
- namespace :apple do
201
- task :all => [:archive, :upload, :check]
202
-
43
+ desc 'Run on iOS plugged device or emulator'
44
+ task :ios do
45
+ sh 'cordova build ios'
46
+ sh 'cordova run ios --device'
203
47
  end
204
48
  end
@@ -0,0 +1,105 @@
1
+ #
2
+ #
3
+ # Deploy!
4
+ #
5
+ #
6
+ namespace :release do
7
+
8
+ task :check_dirs do
9
+ %w( .keys build ).each do |dir|
10
+ FileUtils.mkdir dir unless File.exist?(dir)
11
+ end
12
+ end
13
+
14
+ desc 'Deploy to Google’s Play Store'
15
+ task google: [:check_dirs, 'google:all', :report]
16
+
17
+ namespace :google do
18
+ task :all => [:clean, :keygen, :archive, :sign, :align, :check, :submit]
19
+
20
+ # desc 'Clean up build folder from apks'
21
+ task :clean do
22
+ Dir['build/*.apk'].each { |f| File.delete(f) }
23
+ end
24
+
25
+ # desc 'Generates Google Play Store .keystore'
26
+ task :keygen do
27
+ next if File.exist?('.keys/google.keystore')
28
+ puts "\nGenerate key first!\n\n"
29
+ sh "keytool -genkey -v -keystore ./.keys/google.keystore "\
30
+ "-alias #{app} -keyalg RSA -keysize 2048 -validity 10000"
31
+ end
32
+
33
+ task :archive do
34
+ sh " cordova build --release android"
35
+ FileUtils.cp 'platforms/android/build/outputs'\
36
+ '/apk/android-release-unsigned.apk',
37
+ "build/#{app}-unsigned.apk"
38
+ end
39
+
40
+ task :sign do
41
+ key = ENV['GOOGLE_KEY']
42
+ key = GOOGLE_KEY if Object.const_defined?(:GOOGLE_KEY)
43
+ sh "echo '#{key}' | jarsigner -verbose -sigalg SHA1withRSA "\
44
+ "-digestalg SHA1 -keystore "\
45
+ "./.keys/google.keystore build/#{app}-unsigned.apk #{app}"
46
+ FileUtils.cp "build/#{app}-unsigned.apk", "build/#{app}-signed.apk"
47
+ end
48
+
49
+ task :align do
50
+ sh "zipalign -f -v 4 build/#{app}-signed.apk build/#{app}.apk"
51
+ end
52
+
53
+ task :check do
54
+ arch = "build/#{app}.apk"
55
+ if File.exists? arch
56
+ puts "Build done! #{arch} #{File.size(arch).to_f/(1024 * 1024)} Mb"
57
+ else
58
+ puts "Something BAD! No #{arch}!"
59
+ exit 1
60
+ end
61
+ end
62
+
63
+ task :submit do
64
+ #hope we can soon
65
+ end
66
+ end
67
+
68
+ #
69
+ # Apple
70
+ #
71
+ desc 'Deploy to Apple’s App Store'
72
+ task apple: [:check_dirs, 'apple:all', :report]
73
+
74
+ namespace :apple do
75
+ task :all => [:archive, :ipa, :check] #, :upload]
76
+
77
+ task :archive do
78
+ sh "cordova build --release ios"
79
+ # xcodebuild -target "#{app}" -sdk "${TARGET_SDK}" -configuration Release
80
+ end
81
+
82
+ task :ipa do
83
+ provision = Dir['platforms/ios/build/**/*.mobileprovision'].first
84
+ developer = ENV['APPLE_DEVELOPER']
85
+ developer = APPLE_DEVELOPER if Object.const_defined?(:APPLE_DEVELOPER)
86
+ comm = "xcrun -sdk iphoneos PackageApplication -v "\
87
+ "'platforms/ios/build/emulator/#{app}.app' -o "\
88
+ "'#{Rake.original_dir}/build/#{app}.ipa' "
89
+ comm << "--embed '#{provision}'" if provision
90
+ comm << "--sign #{APPLE_DEVELOPER}" if developer
91
+ sh comm
92
+ end
93
+
94
+ task :check do
95
+ arch = "build/#{app}.ipa"
96
+ if File.exists? arch
97
+ puts "Build done! #{arch} #{File.size(arch).to_f/(1024 * 1024)} Mb"
98
+ else
99
+ puts "Something BAD! No #{arch}!"
100
+ exit 1
101
+ end
102
+ end
103
+
104
+ end
105
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cordova-rake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcos Piccinini
@@ -28,7 +28,9 @@ files:
28
28
  - Rakefile
29
29
  - cordova-rake.gemspec
30
30
  - lib/cordova/rake.rb
31
+ - lib/tasks/application.rake
31
32
  - lib/tasks/cordova.rake
33
+ - lib/tasks/deploy.rake
32
34
  homepage: http://github.com/nofxx/cordova-rake
33
35
  licenses:
34
36
  - MIT