deliver 0.11.1.beta → 0.11.1
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/assets/summary.html.erb +1 -0
- data/lib/deliver/app_metadata.rb +8 -1
- data/lib/deliver/app_metadata_screenshots.rb +2 -2
- data/lib/deliver/deliver_process.rb +81 -78
- data/lib/deliver/ipa_uploader.rb +9 -0
- data/lib/deliver/itunes_connect/itunes_connect_reader.rb +1 -10
- data/lib/deliver/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8afb0b10b73ef864caba0f7e22f3a179bfefe4b3
|
4
|
+
data.tar.gz: 3df6b0d6a8e7795b3ab5987ebba891e42d756480
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6a793c043a3c32fa93b92c58f4b3141a298571a17398a930c251d4d3797acb68e9ee2310dddce740a05ac9c0769e1f45256dd86e84771f225b223f246e9f58eb
|
7
|
+
data.tar.gz: 1e74130e251d1a42bce10b81fedf1d40b684896c4d5ad2cd9f53da48b90f82e6d07f143e39b7a1748f8dab4387ace3c3b49aea9cc83d1105f3e5e91f9a66b74b
|
data/lib/assets/summary.html.erb
CHANGED
data/lib/deliver/app_metadata.rb
CHANGED
@@ -145,7 +145,14 @@ module Deliver
|
|
145
145
|
# as keys.
|
146
146
|
# @raise (AppMetadataParameterError) Is thrown when don't pass a correct hash with correct language codes.
|
147
147
|
def update_changelog(hash)
|
148
|
-
|
148
|
+
# check if we're allowed to do that
|
149
|
+
if FastlaneCore::ItunesSearchApi.fetch(@app.apple_id)
|
150
|
+
# App is already in the store
|
151
|
+
update_metadata_key(:version_whats_new, hash)
|
152
|
+
else
|
153
|
+
# App is not in the store, skipping changelog for now
|
154
|
+
Helper.log.info "It seems like this it the initial release of your app, which can't contain a changelog. Skipping the changelog for now.".yellow
|
155
|
+
end
|
149
156
|
end
|
150
157
|
|
151
158
|
# Updates the Marketing URL
|
@@ -105,7 +105,6 @@ module Deliver
|
|
105
105
|
|
106
106
|
def set_screenshots_for_each_language(hash, use_framed = false)
|
107
107
|
raise AppMetadataParameterError.new("Parameter needs to be an hash, containg strings with the new description") unless hash.kind_of?Hash
|
108
|
-
|
109
108
|
hash.each do |language, current_path|
|
110
109
|
resulting_path = "#{current_path}/**/*.{png,jpg,jpeg}"
|
111
110
|
|
@@ -122,7 +121,8 @@ module Deliver
|
|
122
121
|
# When frameit is enabled, we only want to upload the framed screenshots
|
123
122
|
if use_framed
|
124
123
|
# Except for Watch screenshots, they are okay without _framed
|
125
|
-
|
124
|
+
is_apple_watch = ((AppScreenshot.new(path).screen_size == AppScreenshot::ScreenSize::IOS_APPLE_WATCH) rescue false)
|
125
|
+
unless is_apple_watch
|
126
126
|
next unless path.include?"_framed."
|
127
127
|
end
|
128
128
|
else
|
@@ -26,29 +26,23 @@ module Deliver
|
|
26
26
|
|
27
27
|
def run
|
28
28
|
begin
|
29
|
+
pre_load_default_values
|
30
|
+
|
29
31
|
unless metadata_only?
|
30
32
|
run_unit_tests
|
31
|
-
fetch_app_key_information
|
32
33
|
fetch_information_from_ipa_file
|
33
|
-
|
34
|
-
@app_version ||= get_latest_version
|
35
|
-
verify_ipa_file
|
36
|
-
else
|
37
|
-
fetch_app_key_information
|
38
|
-
@app_identifier ||= ask("App Identifier (e.g. com.krausefx.app): ")
|
39
|
-
@app_version ||= get_latest_version || ask("Which version number should be updated? ")
|
40
34
|
end
|
41
|
-
create_app
|
42
35
|
|
43
|
-
Helper.log.info("Got all information needed to deploy a new update ('#{
|
36
|
+
Helper.log.info("Got all information needed to deploy a new update ('#{app_version}') for app '#{app_identifier}'")
|
44
37
|
|
45
38
|
verify_app_on_itunesconnect unless metadata_only?
|
46
39
|
|
47
|
-
if ready_for_sale?
|
48
|
-
raise "Cannot update metadata of apps 'Ready for Sale'. You can dupe: http://www.openradar.appspot.com/18263306".red
|
49
|
-
end
|
50
40
|
|
51
41
|
if is_beta_build?
|
42
|
+
if ready_for_sale?
|
43
|
+
raise "Cannot update metadata of apps 'Ready for Sale'. You can dupe: http://www.openradar.appspot.com/18263306".red
|
44
|
+
end
|
45
|
+
|
52
46
|
Helper.log.info "Beta builds don't upload new metadata to iTunesConnet".yellow
|
53
47
|
else
|
54
48
|
upload_metadata
|
@@ -76,6 +70,48 @@ module Deliver
|
|
76
70
|
trigger_metadata_upload
|
77
71
|
end
|
78
72
|
|
73
|
+
#####################################################
|
74
|
+
# @!group Getters
|
75
|
+
#####################################################
|
76
|
+
|
77
|
+
def app
|
78
|
+
return @app if @app
|
79
|
+
|
80
|
+
@app = Deliver::App.new(app_identifier: app_identifier,
|
81
|
+
apple_id: @deploy_information[Deliverer::ValKey::APPLE_ID]) # apple_id can be nil, will be fetched automatically
|
82
|
+
end
|
83
|
+
|
84
|
+
def app_version
|
85
|
+
return @app_version if @app_version
|
86
|
+
|
87
|
+
if Helper.is_test?
|
88
|
+
raise "No App Version given"
|
89
|
+
end
|
90
|
+
|
91
|
+
@app_version ||= ask("Which version number should be updated? ")
|
92
|
+
end
|
93
|
+
|
94
|
+
def app_identifier
|
95
|
+
return @app_identifier if @app_identifier
|
96
|
+
|
97
|
+
if Helper.is_test?
|
98
|
+
raise "No App Identifier given"
|
99
|
+
end
|
100
|
+
|
101
|
+
Helper.log.info "No App Identifier found. Pass one using `app_identifier` in your Deliverfile".yellow
|
102
|
+
@app_identifier = ask("App Identifier (e.g. com.krausefx.app): ")
|
103
|
+
end
|
104
|
+
|
105
|
+
# Preloads default values from the given hashes + Appfile
|
106
|
+
def pre_load_default_values
|
107
|
+
@app_identifier ||= @deploy_information[Deliverer::ValKey::APP_IDENTIFIER]
|
108
|
+
@app_identifier ||= (CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier) rescue nil)
|
109
|
+
|
110
|
+
@app_version ||= @deploy_information[Deliverer::ValKey::APP_VERSION]
|
111
|
+
@app_version ||= (FastlaneCore::ItunesSearchApi.fetch_by_identifier(app_identifier)['version'] rescue nil)
|
112
|
+
@app_version ||= (app.get_live_version rescue nil)
|
113
|
+
end
|
114
|
+
|
79
115
|
#####################################################
|
80
116
|
# @!group What kind of release
|
81
117
|
#####################################################
|
@@ -125,23 +161,6 @@ module Deliver
|
|
125
161
|
end
|
126
162
|
end
|
127
163
|
|
128
|
-
# Tries to fetch app version and app identifier from Deliverfile
|
129
|
-
def fetch_app_key_information
|
130
|
-
@app_version = @deploy_information[Deliverer::ValKey::APP_VERSION]
|
131
|
-
@app_identifier = @deploy_information[Deliverer::ValKey::APP_IDENTIFIER]
|
132
|
-
fetch_app_identifier_from_app_file
|
133
|
-
end
|
134
|
-
|
135
|
-
# returns the latest app version from iTunes Connect
|
136
|
-
def get_latest_version
|
137
|
-
return nil if Helper.is_test?
|
138
|
-
|
139
|
-
data = itc.get_app_information(Deliver::App.new(app_identifier: @app_identifier))
|
140
|
-
return (data['version']['value'] rescue nil)
|
141
|
-
rescue
|
142
|
-
return nil
|
143
|
-
end
|
144
|
-
|
145
164
|
def fetch_information_from_ipa_file
|
146
165
|
used_ipa_file = ENV["IPA_OUTPUT_PATH"]# if (ENV["IPA_OUTPUT_PATH"] and File.exists?(ENV["IPA_OUTPUT_PATH"]))
|
147
166
|
|
@@ -183,31 +202,17 @@ module Deliver
|
|
183
202
|
|
184
203
|
# We are able to fetch some metadata directly from the ipa file
|
185
204
|
# If they were also given in the Deliverfile, we will compare the values
|
186
|
-
|
187
|
-
|
205
|
+
# Overwrite the cached value if there is any
|
206
|
+
load_app_identifier_from_ipa
|
207
|
+
load_app_version_from_ipa
|
188
208
|
end
|
189
209
|
end
|
190
210
|
|
191
|
-
def fetch_app_identifier_from_app_file
|
192
|
-
@app_identifier ||= (CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier) rescue nil)
|
193
|
-
end
|
194
|
-
|
195
|
-
def verify_ipa_file
|
196
|
-
fetch_app_identifier_from_app_file unless @app_identifier
|
197
|
-
raise Deliverfile::Deliverfile::DeliverfileDSLError.new(Deliverfile::Deliverfile::MISSING_APP_IDENTIFIER_MESSAGE.red) unless @app_identifier
|
198
|
-
raise Deliverfile::Deliverfile::DeliverfileDSLError.new(Deliverfile::Deliverfile::MISSING_VERSION_NUMBER_MESSAGE.red) unless @app_version
|
199
|
-
end
|
200
|
-
|
201
|
-
def create_app
|
202
|
-
@app = Deliver::App.new(app_identifier: @app_identifier,
|
203
|
-
apple_id: @deploy_information[Deliverer::ValKey::APPLE_ID])
|
204
|
-
end
|
205
|
-
|
206
211
|
def verify_app_on_itunesconnect
|
207
212
|
if (@ipa and is_release_build?) or !@ipa
|
208
213
|
# This is a real release, which should also upload the ipa file onto production
|
209
|
-
|
210
|
-
|
214
|
+
app.create_new_version!(app_version) unless Helper.is_test?
|
215
|
+
app.metadata.verify_version(app_version) if @ipa
|
211
216
|
end
|
212
217
|
end
|
213
218
|
|
@@ -267,17 +272,17 @@ module Deliver
|
|
267
272
|
end
|
268
273
|
|
269
274
|
def set_app_metadata
|
270
|
-
|
271
|
-
|
275
|
+
app.metadata.update_title(@deploy_information[Deliverer::ValKey::TITLE]) if @deploy_information[Deliverer::ValKey::TITLE]
|
276
|
+
app.metadata.update_description(@deploy_information[Deliverer::ValKey::DESCRIPTION]) if @deploy_information[Deliverer::ValKey::DESCRIPTION]
|
272
277
|
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
278
|
+
app.metadata.update_support_url(@deploy_information[Deliverer::ValKey::SUPPORT_URL]) if @deploy_information[Deliverer::ValKey::SUPPORT_URL]
|
279
|
+
app.metadata.update_changelog(@deploy_information[Deliverer::ValKey::CHANGELOG]) if @deploy_information[Deliverer::ValKey::CHANGELOG]
|
280
|
+
app.metadata.update_marketing_url(@deploy_information[Deliverer::ValKey::MARKETING_URL]) if @deploy_information[Deliverer::ValKey::MARKETING_URL]
|
281
|
+
app.metadata.update_privacy_url(@deploy_information[Deliverer::ValKey::PRIVACY_URL]) if @deploy_information[Deliverer::ValKey::PRIVACY_URL]
|
277
282
|
|
278
|
-
|
283
|
+
app.metadata.update_keywords(@deploy_information[Deliverer::ValKey::KEYWORDS]) if @deploy_information[Deliverer::ValKey::KEYWORDS]
|
279
284
|
|
280
|
-
|
285
|
+
app.metadata.update_price_tier(@deploy_information[Deliverer::ValKey::PRICE_TIER]) if @deploy_information[Deliverer::ValKey::PRICE_TIER]
|
281
286
|
end
|
282
287
|
|
283
288
|
def screenshots_path
|
@@ -298,7 +303,7 @@ module Deliver
|
|
298
303
|
screens_path = screenshots_path
|
299
304
|
if screens_path
|
300
305
|
# Not using Snapfile. Not a good user.
|
301
|
-
if not
|
306
|
+
if not app.metadata.set_all_screenshots_from_path(screens_path, use_framed_screenshots?)
|
302
307
|
# This path does not contain folders for each language
|
303
308
|
if screens_path.kind_of?String
|
304
309
|
if @deploy_information[Deliverer::ValKey::DEFAULT_LANGUAGE]
|
@@ -309,7 +314,7 @@ module Deliver
|
|
309
314
|
screens_path = nil
|
310
315
|
end
|
311
316
|
end
|
312
|
-
|
317
|
+
app.metadata.set_screenshots_for_each_language(screens_path, use_framed_screenshots?) if screens_path
|
313
318
|
end
|
314
319
|
end
|
315
320
|
end
|
@@ -348,7 +353,7 @@ module Deliver
|
|
348
353
|
end
|
349
354
|
|
350
355
|
def trigger_metadata_upload
|
351
|
-
result =
|
356
|
+
result = app.metadata.upload!
|
352
357
|
raise "Error uploading app metadata".red unless result == true
|
353
358
|
end
|
354
359
|
|
@@ -358,28 +363,28 @@ module Deliver
|
|
358
363
|
|
359
364
|
def additional_itc_information
|
360
365
|
# e.g. rating or copyright
|
361
|
-
itc.set_copyright!(
|
362
|
-
itc.set_app_review_information!(
|
363
|
-
itc.set_release_after_approval!(
|
366
|
+
itc.set_copyright!(app, @deploy_information[Deliverer::ValKey::COPYRIGHT]) if @deploy_information[Deliverer::ValKey::COPYRIGHT]
|
367
|
+
itc.set_app_review_information!(app, @deploy_information[Deliverer::ValKey::APP_REVIEW_INFORMATION]) if @deploy_information[Deliverer::ValKey::APP_REVIEW_INFORMATION]
|
368
|
+
itc.set_release_after_approval!(app, @deploy_information[Deliverer::ValKey::AUTOMATIC_RELEASE]) if @deploy_information[Deliverer::ValKey::AUTOMATIC_RELEASE] != nil
|
364
369
|
|
365
370
|
# Categories
|
366
371
|
primary = @deploy_information[Deliverer::ValKey::PRIMARY_CATEGORY]
|
367
372
|
secondary = @deploy_information[Deliverer::ValKey::SECONDARY_CATEGORY]
|
368
|
-
itc.set_categories!(
|
373
|
+
itc.set_categories!(app, primary, secondary) if (primary or secondary)
|
369
374
|
|
370
375
|
# App Rating
|
371
|
-
itc.set_app_rating!(
|
376
|
+
itc.set_app_rating!(app, @deploy_information[Deliverer::ValKey::RATINGS_CONFIG_PATH]) if @deploy_information[Deliverer::ValKey::RATINGS_CONFIG_PATH]
|
372
377
|
|
373
378
|
# App Icon
|
374
|
-
itc.upload_app_icon!(
|
379
|
+
itc.upload_app_icon!(app, @deploy_information[Deliverer::ValKey::APP_ICON]) if @deploy_information[Deliverer::ValKey::APP_ICON]
|
375
380
|
|
376
381
|
# Apple Watch App Icon
|
377
|
-
itc.upload_apple_watch_app_icon!(
|
382
|
+
itc.upload_apple_watch_app_icon!(app, @deploy_information[Deliverer::ValKey::APPLE_WATCH_APP_ICON]) if @deploy_information[Deliverer::ValKey::APPLE_WATCH_APP_ICON]
|
378
383
|
end
|
379
384
|
|
380
385
|
def trigger_ipa_upload
|
381
386
|
if @ipa
|
382
|
-
@ipa.app =
|
387
|
+
@ipa.app = app # we now have the resulting app
|
383
388
|
result = @ipa.upload! # Important: this will also actually deploy the app on iTunesConnect
|
384
389
|
raise "Error uploading ipa file".red unless result == true
|
385
390
|
else
|
@@ -411,8 +416,8 @@ module Deliver
|
|
411
416
|
def hash_for_callback(error = nil)
|
412
417
|
{
|
413
418
|
error: error,
|
414
|
-
app_version:
|
415
|
-
app_identifier:
|
419
|
+
app_version: (app_version rescue nil),
|
420
|
+
app_identifier: (app_identifier rescue nil),
|
416
421
|
skipped_deploy: skip_deployment?,
|
417
422
|
is_release_build: is_release_build?,
|
418
423
|
is_beta_build: is_beta_build?,
|
@@ -420,26 +425,24 @@ module Deliver
|
|
420
425
|
}
|
421
426
|
end
|
422
427
|
|
423
|
-
def
|
428
|
+
def load_app_identifier_from_ipa
|
429
|
+
@app_identifier ||= @ipa.fetch_app_identifier # to not ask the user if there is no identifier there yet
|
430
|
+
|
424
431
|
if app_identifier
|
425
432
|
if @ipa.fetch_app_identifier and app_identifier != @ipa.fetch_app_identifier
|
426
433
|
raise Deliver::Deliverfile::Deliverfile::DeliverfileDSLError.new("App Identifier of IPA does not match with the given one ('#{app_identifier}' != '#{@ipa.fetch_app_identifier}')".red)
|
427
434
|
end
|
428
|
-
else
|
429
|
-
app_identifier = @ipa.fetch_app_identifier
|
430
435
|
end
|
431
|
-
return app_identifier
|
432
436
|
end
|
433
437
|
|
434
|
-
def
|
438
|
+
def load_app_version_from_ipa
|
439
|
+
@app_version ||= @ipa.fetch_app_version # to not ask the user if there is no version there yet
|
440
|
+
|
435
441
|
if app_version
|
436
442
|
if @ipa.fetch_app_version and app_version != @ipa.fetch_app_version
|
437
443
|
raise Deliver::Deliverfile::Deliverfile::DeliverfileDSLError.new("App Version of IPA does not match with the given one (#{app_version} != #{@ipa.fetch_app_version})".red)
|
438
444
|
end
|
439
|
-
else
|
440
|
-
app_version = @ipa.fetch_app_version
|
441
445
|
end
|
442
|
-
return app_version
|
443
446
|
end
|
444
447
|
end
|
445
448
|
end
|
data/lib/deliver/ipa_uploader.rb
CHANGED
@@ -94,6 +94,15 @@ module Deliver
|
|
94
94
|
else
|
95
95
|
Helper.log.info "deliver will **not** submit the app for Review or for TestFlight distribution".yellow
|
96
96
|
Helper.log.info "If you want to distribute the binary, don't define `skip_deploy` ".yellow
|
97
|
+
|
98
|
+
if ENV["DELIVER_WHAT_TO_TEST"] or ENV["DELIVER_BETA_DESCRIPTION"] or ENV["DELIVER_BETA_FEEDBACK_EMAIL"]
|
99
|
+
Helper.log.warn "---------------------------------------------------".yellow
|
100
|
+
Helper.log.warn "You provided beta version metadata, but used the ".yellow
|
101
|
+
Helper.log.warn "`skip_deploy` option when running deliver.".yellow
|
102
|
+
Helper.log.warn "You have to remove `skip_deploy` to set a changelog".yellow
|
103
|
+
Helper.log.warn "for TestFlight builds".yellow
|
104
|
+
Helper.log.warn "---------------------------------------------------".yellow
|
105
|
+
end
|
97
106
|
end
|
98
107
|
return true
|
99
108
|
end
|
@@ -44,16 +44,7 @@ module Deliver
|
|
44
44
|
begin
|
45
45
|
verify_app(app)
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
begin
|
50
|
-
version_number = wait_for_elements("input[ng-model='versionInfo.version.value']").first.value
|
51
|
-
version_number ||= first(".status.ready").text.split(" ").first
|
52
|
-
return version_number
|
53
|
-
rescue
|
54
|
-
Helper.log.debug "Could not fetch version number of the live version for app #{app}."
|
55
|
-
return nil
|
56
|
-
end
|
47
|
+
return (get_app_information(app)['version']['value'] rescue nil)
|
57
48
|
rescue => ex
|
58
49
|
error_occured(ex)
|
59
50
|
end
|
data/lib/deliver/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deliver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.1
|
4
|
+
version: 0.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fastlane_core
|
@@ -193,7 +193,7 @@ dependencies:
|
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: 1.19.0
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
196
|
+
name: coveralls
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
199
|
- - '>='
|
@@ -267,9 +267,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
267
267
|
version: 2.0.0
|
268
268
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
269
|
requirements:
|
270
|
-
- - '
|
270
|
+
- - '>='
|
271
271
|
- !ruby/object:Gem::Version
|
272
|
-
version:
|
272
|
+
version: '0'
|
273
273
|
requirements: []
|
274
274
|
rubyforge_project:
|
275
275
|
rubygems_version: 2.2.2
|