phone_gap-build 0.5.1 → 0.6.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/lib/phone_gap/build/app.rb +29 -1
- data/lib/phone_gap/build/package_downloader.rb +0 -0
- data/lib/phone_gap/build/version.rb +1 -1
- data/spec/phone_gap/build/app_spec.rb +80 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6a3bfa7b5f905953982154c7819b908426a7c20
|
4
|
+
data.tar.gz: eed8c96e1abdbe2fd72271ee5dd1f748563b22ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f42ab955ad35a889ad6d04dab15d986cc52ad4ef228d397c3e606bd443c06c7769e16eb8bbed2f4e7fd14cd604bfbd2f6b229847886c6a2d678eb01b2b57f679
|
7
|
+
data.tar.gz: dbaadd0913db4e23f8ae394251770620ef7c436873209d874d57fc446d5914bd29bbf4eb23d04314a4142272edf4b659dbec07457a3a383aa6281311460f83e3
|
data/lib/phone_gap/build/app.rb
CHANGED
@@ -8,7 +8,7 @@ module PhoneGap
|
|
8
8
|
PATH = '/apps'
|
9
9
|
|
10
10
|
attr_accessor :title, :create_method, :package, :version, :description, :debug, :keys, :private,
|
11
|
-
:phonegap_version, :hydrates, :file
|
11
|
+
:phonegap_version, :hydrates, :file, :status
|
12
12
|
|
13
13
|
attr_creatable :title, :create_method, :package, :version, :description, :debug, :keys, :private,
|
14
14
|
:phonegap_version, :hydrates, :file
|
@@ -45,8 +45,36 @@ module PhoneGap
|
|
45
45
|
end
|
46
46
|
raise BuildError.new('An error occurred building at least one of the apps.') if error
|
47
47
|
raise BuildError.new('Builds did not complete within the allotted time.') if !error && !complete
|
48
|
+
populate_from_json(json_object)
|
48
49
|
complete
|
49
50
|
end
|
51
|
+
|
52
|
+
#@TODO another hacky method. Come on Seb :-)
|
53
|
+
def download(params = {})
|
54
|
+
platforms_to_download = params[:platforms] ? params[:platforms] : built_platforms
|
55
|
+
platforms_to_download.each do |platform|
|
56
|
+
response = ApiRequest.new.get("#{PATH}/#{id}/#{platform}")
|
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
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
def built_platforms
|
72
|
+
status.delete_if { |package, build_status| build_status != 'complete' }.keys
|
73
|
+
end
|
74
|
+
|
75
|
+
def file_name_from_uri(uri)
|
76
|
+
uri.match(/\/([^\/]*)$/)[0]
|
77
|
+
end
|
50
78
|
end
|
51
79
|
|
52
80
|
class BuildError < Exception ; end
|
File without changes
|
@@ -143,6 +143,7 @@ describe PhoneGap::Build::App do
|
|
143
143
|
end
|
144
144
|
|
145
145
|
end
|
146
|
+
|
146
147
|
context 'when the build is complete' do
|
147
148
|
|
148
149
|
let(:http_response) { double('http response', success?: true, body: response_body_for('get-app') ) }
|
@@ -170,10 +171,86 @@ describe PhoneGap::Build::App do
|
|
170
171
|
end
|
171
172
|
end
|
172
173
|
end
|
174
|
+
end
|
175
|
+
|
176
|
+
describe '#download' do
|
177
|
+
|
178
|
+
let(:http_response) { double('http response', success?: false) }
|
179
|
+
|
180
|
+
before do
|
181
|
+
api_request.stub(:get).and_return http_response
|
182
|
+
end
|
183
|
+
|
184
|
+
context 'when there are builds that are complete' do
|
185
|
+
|
186
|
+
before do
|
187
|
+
subject.instance_variable_set('@status', { android: 'complete', ios: 'complete', winphone: 'complete' })
|
188
|
+
end
|
189
|
+
|
190
|
+
context 'when no specific platforms are specified' do
|
191
|
+
|
192
|
+
let(:platforms) { %w(android ios winphone) }
|
193
|
+
|
194
|
+
it 'downloads each platform\'s package' do
|
195
|
+
platforms.each do |platform|
|
196
|
+
expect(api_request).to receive(:get).with("/apps/#{id}/#{platform}")
|
197
|
+
end
|
198
|
+
subject.download
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
context 'when specific packages are specified' do
|
203
|
+
|
204
|
+
let(:platforms) { %w(ios android) }
|
173
205
|
|
174
|
-
|
175
|
-
|
176
|
-
|
206
|
+
it 'downloads the specific packages' do
|
207
|
+
platforms.each do |platform|
|
208
|
+
expect(api_request).to receive(:get).with("/apps/#{id}/#{platform}")
|
209
|
+
end
|
210
|
+
subject.download(platforms: platforms)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
context 'when the download response is successful' do
|
215
|
+
|
216
|
+
let(:file_name) { 'Something.ipa' }
|
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
|
245
|
+
|
246
|
+
it 'saves the package to the tmp folder' do
|
247
|
+
expect(File).to receive(:open).with("/tmp/ios/#{file_name}", anything)
|
248
|
+
expect(File).to receive(:open).with("/tmp/android/#{file_name}", anything)
|
249
|
+
expect(File).to receive(:open).with("/tmp/winphone/#{file_name}", anything)
|
250
|
+
subject.download
|
251
|
+
end
|
252
|
+
end
|
253
|
+
end
|
177
254
|
end
|
178
255
|
end
|
179
256
|
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.
|
4
|
+
version: 0.6.0
|
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-04-
|
11
|
+
date: 2014-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httmultiparty
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- lib/phone_gap/build/creatable.rb
|
102
102
|
- lib/phone_gap/build/credentials.rb
|
103
103
|
- lib/phone_gap/build/error.rb
|
104
|
+
- lib/phone_gap/build/package_downloader.rb
|
104
105
|
- lib/phone_gap/build/rest_resource.rb
|
105
106
|
- lib/phone_gap/build/version.rb
|
106
107
|
- phone_gap-build.gemspec
|