phone_gap-build 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/lib/phone_gap/build/app.rb +1 -14
- data/lib/phone_gap/build/package_downloader.rb +39 -0
- data/lib/phone_gap/build/version.rb +1 -1
- data/lib/phone_gap/build.rb +1 -0
- data/spec/phone_gap/build/app_spec.rb +15 -46
- data/spec/phone_gap/build/package_downloader_spec.rb +64 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e834b89c2ec819e1fd0c2b884aadd4ed469a61d
|
4
|
+
data.tar.gz: a1660bada277a57f7693419ca0cc06eabc7383db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 219404a7e7d4cedeb7868d667ece7e80ac39ec2ae91cf0b2431cbf0d9ed2bc5eb04440ee77ac34db1272cd0c4c23f2eb8dda32bea81cbf7694c8494580de906a
|
7
|
+
data.tar.gz: bf67eac9281fe2fa4ef18e329bcc750a2d101d39cdc1dc89eca9753375be80c0cc443fc49706c7086fe27991bf26461f1874d35dac3be5b3d6f2e51bdd7bb7d7
|
data/README.md
CHANGED
data/lib/phone_gap/build/app.rb
CHANGED
@@ -49,20 +49,10 @@ module PhoneGap
|
|
49
49
|
complete
|
50
50
|
end
|
51
51
|
|
52
|
-
#@TODO another hacky method. Come on Seb :-)
|
53
52
|
def download(params = {})
|
54
53
|
platforms_to_download = params[:platforms] ? params[:platforms] : built_platforms
|
55
54
|
platforms_to_download.each do |platform|
|
56
|
-
|
57
|
-
if response.success?
|
58
|
-
file_name = file_name_from_uri(response.request.instance_variable_get(:@last_uri).request_uri)
|
59
|
-
dir = File.join((params[:save_to] ? params[:save_to] : '/tmp'), platform.to_s)
|
60
|
-
file_path = File.join(dir, file_name)
|
61
|
-
FileUtils.mkdir_p(dir)
|
62
|
-
puts "Saving to #{file_path}"
|
63
|
-
File.open(file_path, 'w+') { |f| f.write(response.body) }
|
64
|
-
puts 'Download complete'
|
65
|
-
end
|
55
|
+
PhoneGap::Build::PackageDownloader.new.download(id, platform, params[:save_to])
|
66
56
|
end
|
67
57
|
end
|
68
58
|
|
@@ -72,9 +62,6 @@ module PhoneGap
|
|
72
62
|
status.delete_if { |package, build_status| build_status != 'complete' }.keys
|
73
63
|
end
|
74
64
|
|
75
|
-
def file_name_from_uri(uri)
|
76
|
-
uri.match(/\/([^\/]*)$/)[0]
|
77
|
-
end
|
78
65
|
end
|
79
66
|
|
80
67
|
class BuildError < Exception ; end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module PhoneGap
|
2
|
+
module Build
|
3
|
+
class PackageDownloader
|
4
|
+
|
5
|
+
attr_reader :id, :platform, :target_dir, :http_response
|
6
|
+
|
7
|
+
def download(id, platform, target_dir = '/tmp')
|
8
|
+
@id, @platform, @target_dir = id, platform, target_dir
|
9
|
+
@http_response = PhoneGap::Build::ApiRequest.new.get("/apps/#{id}/#{platform}")
|
10
|
+
save_file if http_response.success?
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def save_file
|
16
|
+
FileUtils.mkdir_p(platform_output_dir)
|
17
|
+
puts "Saving to #{file_path}"
|
18
|
+
File.open(file_path, 'w+') { |f| f.write(http_response.body) }
|
19
|
+
puts 'Download complete'
|
20
|
+
end
|
21
|
+
|
22
|
+
def platform_output_dir
|
23
|
+
File.join(target_dir, platform.to_s)
|
24
|
+
end
|
25
|
+
|
26
|
+
def file_path
|
27
|
+
File.join(platform_output_dir, file_name)
|
28
|
+
end
|
29
|
+
|
30
|
+
def file_name
|
31
|
+
file_name_from_uri(http_response.request.instance_variable_get(:@last_uri).request_uri)
|
32
|
+
end
|
33
|
+
|
34
|
+
def file_name_from_uri(uri)
|
35
|
+
uri.match(/\/([^\/]*)$/)[0]
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/phone_gap/build.rb
CHANGED
@@ -176,9 +176,11 @@ describe PhoneGap::Build::App do
|
|
176
176
|
describe '#download' do
|
177
177
|
|
178
178
|
let(:http_response) { double('http response', success?: false) }
|
179
|
+
let(:package_downloader) { double('PhoneGap::Build::PackageDownloader') }
|
179
180
|
|
180
181
|
before do
|
181
182
|
api_request.stub(:get).and_return http_response
|
183
|
+
PhoneGap::Build::PackageDownloader.stub(:new).and_return package_downloader
|
182
184
|
end
|
183
185
|
|
184
186
|
context 'when there are builds that are complete' do
|
@@ -187,68 +189,35 @@ describe PhoneGap::Build::App do
|
|
187
189
|
subject.instance_variable_set('@status', { android: 'complete', ios: 'complete', winphone: 'complete' })
|
188
190
|
end
|
189
191
|
|
190
|
-
context '
|
192
|
+
context 'and no specific platforms are specified' do
|
191
193
|
|
192
|
-
let(:platforms) { %
|
194
|
+
let(:platforms) { %i(android ios winphone) }
|
193
195
|
|
194
196
|
it 'downloads each platform\'s package' do
|
195
197
|
platforms.each do |platform|
|
196
|
-
expect(
|
198
|
+
expect(package_downloader).to receive(:download).with(id, platform, anything)
|
197
199
|
end
|
198
200
|
subject.download
|
199
201
|
end
|
200
|
-
end
|
201
|
-
|
202
|
-
context 'when specific packages are specified' do
|
203
202
|
|
204
|
-
|
203
|
+
context 'and the package is to be saved in a specific directory' do
|
205
204
|
|
206
|
-
|
207
|
-
|
208
|
-
|
205
|
+
it 'passes on the target directory to the package downloader' do
|
206
|
+
expect(package_downloader).to receive(:download).with(id, anything, 'my special directory').exactly(3).times
|
207
|
+
subject.download(save_to: 'my special directory')
|
209
208
|
end
|
210
|
-
subject.download(platforms: platforms)
|
211
209
|
end
|
212
210
|
end
|
213
211
|
|
214
|
-
context '
|
212
|
+
context 'and specific packages are set to be downloaded' do
|
215
213
|
|
216
|
-
let(:
|
217
|
-
let(:uri) { double('uri', request_uri: "/ios.phonegap/slicehost-production/apps/894786/#{file_name}" ) }
|
218
|
-
let(:request) { double('request') }
|
219
|
-
let(:http_response) { double('http response', success?: true, request: request, body: 'file content') }
|
220
|
-
|
221
|
-
before do
|
222
|
-
api_request.stub(:get).and_return http_response
|
223
|
-
request.stub(:instance_variable_get).with(:@last_uri).and_return uri
|
224
|
-
FileUtils.stub(:mkdir_p)
|
225
|
-
end
|
226
|
-
|
227
|
-
it 'creates a directory to store the file' do
|
228
|
-
expect(FileUtils).to receive(:mkdir_p)
|
229
|
-
subject.download
|
230
|
-
end
|
231
|
-
|
232
|
-
context 'and given a directory to save to' do
|
233
|
-
|
234
|
-
let(:target_dir) { '/save/me/here' }
|
235
|
-
|
236
|
-
it 'saves each package to the given folder' do
|
237
|
-
expect(File).to receive(:open).with("#{target_dir}/ios/#{file_name}", anything)
|
238
|
-
expect(File).to receive(:open).with("#{target_dir}/android/#{file_name}", anything)
|
239
|
-
expect(File).to receive(:open).with("#{target_dir}/winphone/#{file_name}", anything)
|
240
|
-
subject.download(save_to: target_dir)
|
241
|
-
end
|
242
|
-
end
|
243
|
-
|
244
|
-
context 'and not given a directory to save to' do
|
214
|
+
let(:platforms) { %w(ios android) }
|
245
215
|
|
246
|
-
|
247
|
-
|
248
|
-
expect(
|
249
|
-
expect(File).to receive(:open).with("/tmp/winphone/#{file_name}", anything)
|
250
|
-
subject.download
|
216
|
+
it 'downloads the specific packages' do
|
217
|
+
platforms.each do |platform|
|
218
|
+
expect(package_downloader).to receive(:download).with(id, platform, anything)
|
251
219
|
end
|
220
|
+
subject.download(platforms: platforms)
|
252
221
|
end
|
253
222
|
end
|
254
223
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PhoneGap::Build::PackageDownloader do
|
4
|
+
|
5
|
+
let(:api_request) { double('PhoneGap::Build::ApiRequest') }
|
6
|
+
|
7
|
+
before do
|
8
|
+
PhoneGap::Build::ApiRequest.stub(:new).and_return api_request
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'when given a package' do
|
12
|
+
|
13
|
+
let(:platform) { 'some platform' }
|
14
|
+
|
15
|
+
context 'and an app id' do
|
16
|
+
|
17
|
+
let(:id) { 'id' }
|
18
|
+
let(:http_response) { double('response', :success? => false, body: '{"key":"value"}') }
|
19
|
+
|
20
|
+
it 'makes an api call to download the package' do
|
21
|
+
expect(api_request).to receive(:get).with("/apps/#{id}/#{platform}").and_return http_response
|
22
|
+
subject.download(id, platform)
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'when the api call is successful' do
|
26
|
+
|
27
|
+
let(:file_name) { 'Something.ipa' }
|
28
|
+
let(:uri) { double('uri', request_uri: "/ios.phonegap/slicehost-production/apps/894786/#{file_name}" ) }
|
29
|
+
let(:request) { double('request') }
|
30
|
+
let(:http_response) { double('http response', success?: true, request: request, body: 'file content') }
|
31
|
+
|
32
|
+
before do
|
33
|
+
api_request.stub(:get).and_return http_response
|
34
|
+
request.stub(:instance_variable_get).with(:@last_uri).and_return uri
|
35
|
+
FileUtils.stub(:mkdir_p)
|
36
|
+
File.stub(:open)
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'creates a directory to store the file' do
|
40
|
+
expect(FileUtils).to receive(:mkdir_p)
|
41
|
+
subject.download(id, platform)
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'and given a directory to save to' do
|
45
|
+
|
46
|
+
let(:target_dir) { '/save/me/here' }
|
47
|
+
|
48
|
+
it 'saves each package to the given folder' do
|
49
|
+
expect(File).to receive(:open).with("#{target_dir}/#{platform}/#{file_name}", anything)
|
50
|
+
subject.download(id, platform, target_dir)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'and not given a directory to save to' do
|
55
|
+
|
56
|
+
it 'saves the package to the tmp folder' do
|
57
|
+
expect(File).to receive(:open).with("/tmp/#{platform}/#{file_name}", anything)
|
58
|
+
subject.download(id, platform)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phone_gap-build
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seb Glazebrook
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httmultiparty
|
@@ -112,6 +112,7 @@ files:
|
|
112
112
|
- spec/phone_gap/build/api_request_spec.rb
|
113
113
|
- spec/phone_gap/build/app_spec.rb
|
114
114
|
- spec/phone_gap/build/credentials_spec.rb
|
115
|
+
- spec/phone_gap/build/package_downloader_spec.rb
|
115
116
|
- spec/phone_gap/build/rest_resource_spec.rb
|
116
117
|
- spec/phone_gap/build_spec.rb
|
117
118
|
- spec/spec_helper.rb
|
@@ -148,6 +149,7 @@ test_files:
|
|
148
149
|
- spec/phone_gap/build/api_request_spec.rb
|
149
150
|
- spec/phone_gap/build/app_spec.rb
|
150
151
|
- spec/phone_gap/build/credentials_spec.rb
|
152
|
+
- spec/phone_gap/build/package_downloader_spec.rb
|
151
153
|
- spec/phone_gap/build/rest_resource_spec.rb
|
152
154
|
- spec/phone_gap/build_spec.rb
|
153
155
|
- spec/spec_helper.rb
|