fastlane 2.126.0.beta.20190616200045 → 2.126.0.beta.20190617200114
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/deliver/lib/deliver/options.rb +4 -0
- data/deliver/lib/deliver/upload_metadata.rb +7 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +9 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/spaceship/lib/spaceship/du/du_client.rb +4 -0
- data/spaceship/lib/spaceship/du/utilities.rb +26 -8
- data/spaceship/lib/spaceship/tunes/app_review_attachment.rb +49 -0
- data/spaceship/lib/spaceship/tunes/app_version.rb +55 -0
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +15 -0
- metadata +15 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eccba11a51b1f8bc129b1bc0c78ca0bd65f6b92f
|
4
|
+
data.tar.gz: ba18bf6c703836eaebe985ac3e4bea001c94ccab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80f5a0affed6278cb9dc0eb22534a4524634abbc6800da5b0849df34d8f5710f2a9497a035eec21e43feec0594d3ee2506019d1589d03b93ad0bb3308b5c67ba
|
7
|
+
data.tar.gz: a915231c378eee871930f7fbb1353d0fa9b17613ec2a375cae7f403637487fc504e77bb6a08dac0e4618c982bd1464dba1df5f9ae7a8d6e5e91404520b4fb6b3
|
@@ -324,6 +324,10 @@ module Deliver
|
|
324
324
|
optional: true,
|
325
325
|
is_string: false,
|
326
326
|
type: Hash),
|
327
|
+
FastlaneCore::ConfigItem.new(key: :app_review_attachment_file,
|
328
|
+
description: "Metadata: Path to the app review attachment file",
|
329
|
+
optional: true,
|
330
|
+
is_string: true),
|
327
331
|
# Localised
|
328
332
|
FastlaneCore::ConfigItem.new(key: :description,
|
329
333
|
description: "Metadata: The localised app description",
|
@@ -132,6 +132,8 @@ module Deliver
|
|
132
132
|
set_app_rating(v, options)
|
133
133
|
v.ratings_reset = options[:reset_ratings] unless options[:reset_ratings].nil?
|
134
134
|
|
135
|
+
set_review_attachment_file(v, options)
|
136
|
+
|
135
137
|
Helper.show_loading_indicator("Uploading metadata to App Store Connect")
|
136
138
|
v.save!
|
137
139
|
Helper.hide_loading_indicator
|
@@ -367,6 +369,11 @@ module Deliver
|
|
367
369
|
v.review_user_needed = (v.review_demo_user.to_s.chomp + v.review_demo_password.to_s.chomp).length > 0
|
368
370
|
end
|
369
371
|
|
372
|
+
def set_review_attachment_file(v, options)
|
373
|
+
return unless options[:app_review_attachment_file]
|
374
|
+
v.upload_review_attachment!(options[:app_review_attachment_file])
|
375
|
+
end
|
376
|
+
|
370
377
|
def set_app_rating(v, options)
|
371
378
|
return unless options[:app_rating_config_path]
|
372
379
|
|
@@ -237,6 +237,15 @@ app_review_information(
|
|
237
237
|
|
238
238
|
You can also provide these values by creating files in a `metadata/review_information/` directory. The file names must match the pattern `<key>.txt` (e.g. `first_name.txt`, `notes.txt` etc.). The contents of each file will be used as the value for the matching key. Values provided in the `Deliverfile` or `Fastfile` will be take priority over values from these files.
|
239
239
|
|
240
|
+
##### app_review_attachment_file
|
241
|
+
You can provide additional information to the app review team as a file attachment. As of this writing, Apple supports following file attachment formats: .pdf, .doc, .docx, .rtf, .pages, .xls, .xlsx, .numbers, .zip, .rar, .plist, .crash, .jpg, .png, .mp4, or .avi.
|
242
|
+
|
243
|
+
Provide an empty string (i.e. "", not null) to remove the existing attachment file (if any) from the review information being edited.
|
244
|
+
|
245
|
+
```ruby-skip-tests
|
246
|
+
app_review_attachment_file: "./readme.txt"
|
247
|
+
```
|
248
|
+
|
240
249
|
##### submission_information
|
241
250
|
Must be a hash. This is used as the last step for the deployment process, where you define if you use third party content or use encryption. [A list of available options](https://github.com/fastlane/fastlane/blob/master/spaceship/lib/spaceship/tunes/app_submission.rb).
|
242
251
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.126.0.beta.
|
2
|
+
VERSION = '2.126.0.beta.20190617200114'.freeze
|
3
3
|
DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
|
4
4
|
MINIMUM_XCODE_RELEASE = "7.0".freeze
|
5
5
|
RUBOCOP_REQUIREMENT = '0.49.1'.freeze
|
@@ -46,6 +46,10 @@ module Spaceship
|
|
46
46
|
upload_file(app_version: app_version, upload_file: upload_file, path: '/upload/image', content_provider_id: content_provider_id, sso_token: sso_token_for_image, du_validation_rule_set: screenshot_picture_type(device, nil))
|
47
47
|
end
|
48
48
|
|
49
|
+
def upload_app_review_attachment(app_version, upload_file, content_provider_id, sso_token_for_attachment)
|
50
|
+
upload_file(app_version: app_version, upload_file: upload_file, path: '/upload/app-resolution-file', content_provider_id: content_provider_id, sso_token: sso_token_for_attachment)
|
51
|
+
end
|
52
|
+
|
49
53
|
def get_picture_type(upload_file)
|
50
54
|
resolution = Utilities.resolution(upload_file.file_path)
|
51
55
|
result = device_resolution_map.find do |key, resolutions|
|
@@ -8,14 +8,32 @@ module Spaceship
|
|
8
8
|
# Supports all formats required by DU-UTC right now (video, images and json)
|
9
9
|
# @param path (String) the path to the file
|
10
10
|
def content_type(path)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
11
|
+
supported_file_types = {
|
12
|
+
'.jpg' => 'image/jpeg',
|
13
|
+
'.jpeg' => 'image/jpeg',
|
14
|
+
'.png' => 'image/png',
|
15
|
+
'.geojson' => 'application/json',
|
16
|
+
'.mov' => 'video/quicktime',
|
17
|
+
'.m4v' => 'video/mp4',
|
18
|
+
'.mp4' => 'video/mp4',
|
19
|
+
'.txt' => 'text/plain',
|
20
|
+
'.pdf' => 'application/pdf',
|
21
|
+
'.doc' => 'application/msword',
|
22
|
+
'.docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
23
|
+
'.rtf' => 'application/rtf',
|
24
|
+
'.pages' => 'application/x-iwork-pages-sffpages',
|
25
|
+
'.xls' => 'application/vnd.ms-excel',
|
26
|
+
'.xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
27
|
+
'.numbers' => 'application/x-iwork-numbers-sffnumbers',
|
28
|
+
'.rar' => 'application/x-rar-compressed',
|
29
|
+
'.plist' => 'application/xml',
|
30
|
+
'.crash' => 'text/x-apport',
|
31
|
+
'.avi' => 'video/x-msvideo',
|
32
|
+
'.zip' => 'application/zip'
|
33
|
+
}
|
34
|
+
|
35
|
+
extension = File.extname(path.downcase)
|
36
|
+
return supported_file_types[extension] if supported_file_types[extension]
|
19
37
|
raise "Unknown content-type for file #{path}"
|
20
38
|
end
|
21
39
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require_relative 'tunes_base'
|
2
|
+
|
3
|
+
module Spaceship
|
4
|
+
module Tunes
|
5
|
+
# Represents an image hosted on App Store Connect. Used for app store review attachment file.
|
6
|
+
class AppReviewAttachment < TunesBase
|
7
|
+
HOST_URL = "https://iosapps-ssl.itunes.apple.com/itunes-assets"
|
8
|
+
|
9
|
+
attr_accessor :asset_token
|
10
|
+
|
11
|
+
attr_accessor :original_file_name
|
12
|
+
|
13
|
+
attr_accessor :url
|
14
|
+
|
15
|
+
attr_accessor :type_of_file
|
16
|
+
|
17
|
+
attr_mapping(
|
18
|
+
'assetToken' => :asset_token,
|
19
|
+
'fileType' => :type_of_file,
|
20
|
+
'url' => :url,
|
21
|
+
'name' => :original_file_name
|
22
|
+
)
|
23
|
+
|
24
|
+
def reset!(attrs = {})
|
25
|
+
update_raw_data!(
|
26
|
+
{
|
27
|
+
asset_token: nil,
|
28
|
+
type_of_file: nil,
|
29
|
+
url: nil,
|
30
|
+
original_file_name: nil
|
31
|
+
}.merge(attrs)
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
def setup
|
36
|
+
# Since September 2015 we don't get the url any more, so we have to manually build it
|
37
|
+
self.url = "#{HOST_URL}/#{self.asset_token}"
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def update_raw_data!(hash)
|
43
|
+
hash.each do |k, v|
|
44
|
+
self.send("#{k}=", v)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
require_relative 'tunes_client'
|
2
3
|
require_relative 'app_trailer'
|
3
4
|
require_relative 'app_screenshot'
|
@@ -8,6 +9,7 @@ require_relative 'language_item'
|
|
8
9
|
require_relative 'transit_app_file'
|
9
10
|
require_relative 'build'
|
10
11
|
require_relative 'app_status'
|
12
|
+
require_relative 'app_review_attachment'
|
11
13
|
|
12
14
|
module Spaceship
|
13
15
|
module Tunes
|
@@ -79,6 +81,9 @@ module Spaceship
|
|
79
81
|
# @return (Integer) a unqiue ID for this version generated by App Store Connect
|
80
82
|
attr_accessor :version_id
|
81
83
|
|
84
|
+
# @return (Spaceship::Tunes::AppReviewAttachment) the structure containing information about the review attachment file
|
85
|
+
attr_accessor :review_attachment_file
|
86
|
+
|
82
87
|
####
|
83
88
|
# GeoJson
|
84
89
|
####
|
@@ -417,6 +422,7 @@ module Spaceship
|
|
417
422
|
|
418
423
|
setup_large_app_icon
|
419
424
|
setup_watch_app_icon
|
425
|
+
setup_review_attachment_file if supports_review_attachment_file?
|
420
426
|
setup_transit_app_file if supports_app_transit?
|
421
427
|
setup_screenshots
|
422
428
|
setup_trailers
|
@@ -435,6 +441,17 @@ module Spaceship
|
|
435
441
|
}
|
436
442
|
end
|
437
443
|
|
444
|
+
# This method will generate the required keys/values
|
445
|
+
# for App Store Connect to validate the review attachment file
|
446
|
+
def generate_review_attachment_file(review_attachment_data, review_attachment_file)
|
447
|
+
{
|
448
|
+
assetToken: review_attachment_data["token"],
|
449
|
+
name: File.basename(review_attachment_file),
|
450
|
+
fileType: Utilities.content_type(review_attachment_file),
|
451
|
+
url: nil
|
452
|
+
}
|
453
|
+
end
|
454
|
+
|
438
455
|
# Uploads or removes the large icon
|
439
456
|
# @param icon_path (String): The path to the icon. Use nil to remove it
|
440
457
|
def upload_large_icon!(icon_path)
|
@@ -609,6 +626,34 @@ module Spaceship
|
|
609
626
|
setup_trailers
|
610
627
|
end
|
611
628
|
|
629
|
+
# Uploads, app review attachments
|
630
|
+
#
|
631
|
+
# while submitting for review, ITC allow developers to attach file.
|
632
|
+
#
|
633
|
+
# Following list can be found at https://appstoreconnect.apple.com
|
634
|
+
# on iOS app edit version, above the attachment label/button there is
|
635
|
+
# a question mark if it is press the a dialog is shown which has the list.
|
636
|
+
#
|
637
|
+
# File types allowed by Apple are: pdf, doc, docx, rtf, pages, xls, xlsx, numbers
|
638
|
+
# zip, rar, plist, crash, jpg, png, mp4 or avi.
|
639
|
+
#
|
640
|
+
#
|
641
|
+
# @param review_attachment_path (String): The path to the attachment file.
|
642
|
+
def upload_review_attachment!(review_attachment_path)
|
643
|
+
raise 'cannot upload review attachment for live edition.' if self.is_live?
|
644
|
+
|
645
|
+
if !review_attachment_path || review_attachment_path.size < 1
|
646
|
+
@review_attachment_file.reset!
|
647
|
+
return
|
648
|
+
end
|
649
|
+
|
650
|
+
raise "cannot find file: #{review_attachment_path}." unless File.exist?(review_attachment_path)
|
651
|
+
|
652
|
+
review_attachment_file = UploadFile.from_path(review_attachment_path)
|
653
|
+
review_attachment_data = client.upload_app_review_attachment(self, review_attachment_file)
|
654
|
+
raw_data["appReviewInfo"]["attachmentFiles"]["value"] = generate_review_attachment_file(review_attachment_data, review_attachment_path)
|
655
|
+
end
|
656
|
+
|
612
657
|
# Prefill name, keywords, etc...
|
613
658
|
def unfold_languages
|
614
659
|
{
|
@@ -672,6 +717,16 @@ module Spaceship
|
|
672
717
|
@watch_app_icon = Tunes::AppImage.factory(watch_app_icon) if watch_app_icon
|
673
718
|
end
|
674
719
|
|
720
|
+
def setup_review_attachment_file
|
721
|
+
review_attachment_file = raw_data["appReviewInfo"]["attachmentFiles"]["value"]
|
722
|
+
@review_attachment_file = nil
|
723
|
+
@review_attachment_file = Tunes::AppReviewAttachment.factory(review_attachment_file)
|
724
|
+
end
|
725
|
+
|
726
|
+
def supports_review_attachment_file?
|
727
|
+
raw_data["appReviewInfo"]["attachmentFiles"] && raw_data["appReviewInfo"]["attachmentFiles"]["value"]
|
728
|
+
end
|
729
|
+
|
675
730
|
def supports_app_transit?
|
676
731
|
raw_data["transitAppFile"] != nil
|
677
732
|
end
|
@@ -873,6 +873,21 @@ module Spaceship
|
|
873
873
|
du_client.upload_trailer_preview(app_version, upload_trailer_preview, content_provider_id, sso_token_for_image, device)
|
874
874
|
end
|
875
875
|
|
876
|
+
#####################################################
|
877
|
+
# @!review attachment file
|
878
|
+
#####################################################
|
879
|
+
# Uploads a attachment file
|
880
|
+
# @param app_version (AppVersion): The version of your app(must be edit version)
|
881
|
+
# @param upload_attachment_file (file): File to upload
|
882
|
+
# @return [JSON] the response
|
883
|
+
def upload_app_review_attachment(app_version, upload_attachment_file)
|
884
|
+
raise "app_version is required" unless app_version
|
885
|
+
raise "app_version must be live version" if app_version.is_live?
|
886
|
+
raise "upload_attachment_file is required" unless upload_attachment_file
|
887
|
+
|
888
|
+
du_client.upload_app_review_attachment(app_version, upload_attachment_file, content_provider_id, sso_token_for_image)
|
889
|
+
end
|
890
|
+
|
876
891
|
# Fetches the App Version Reference information from ITC
|
877
892
|
# @return [AppVersionRef] the response
|
878
893
|
def ref_data
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.126.0.beta.
|
4
|
+
version: 2.126.0.beta.20190617200114
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joshua Liebowitz
|
@@ -27,7 +27,7 @@ authors:
|
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2019-06-
|
30
|
+
date: 2019-06-17 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -1657,6 +1657,7 @@ files:
|
|
1657
1657
|
- spaceship/lib/spaceship/tunes/app_image.rb
|
1658
1658
|
- spaceship/lib/spaceship/tunes/app_ratings.rb
|
1659
1659
|
- spaceship/lib/spaceship/tunes/app_review.rb
|
1660
|
+
- spaceship/lib/spaceship/tunes/app_review_attachment.rb
|
1660
1661
|
- spaceship/lib/spaceship/tunes/app_screenshot.rb
|
1661
1662
|
- spaceship/lib/spaceship/tunes/app_status.rb
|
1662
1663
|
- spaceship/lib/spaceship/tunes/app_submission.rb
|
@@ -1725,24 +1726,24 @@ metadata:
|
|
1725
1726
|
post_install_message:
|
1726
1727
|
rdoc_options: []
|
1727
1728
|
require_paths:
|
1728
|
-
-
|
1729
|
-
- match/lib
|
1729
|
+
- frameit/lib
|
1730
1730
|
- snapshot/lib
|
1731
|
-
-
|
1731
|
+
- supply/lib
|
1732
|
+
- gym/lib
|
1732
1733
|
- produce/lib
|
1733
|
-
-
|
1734
|
-
-
|
1734
|
+
- spaceship/lib
|
1735
|
+
- scan/lib
|
1735
1736
|
- deliver/lib
|
1736
|
-
-
|
1737
|
+
- cert/lib
|
1737
1738
|
- fastlane_core/lib
|
1738
|
-
-
|
1739
|
-
-
|
1740
|
-
- pem/lib
|
1739
|
+
- pilot/lib
|
1740
|
+
- credentials_manager/lib
|
1741
1741
|
- precheck/lib
|
1742
|
-
-
|
1742
|
+
- sigh/lib
|
1743
1743
|
- screengrab/lib
|
1744
|
-
-
|
1745
|
-
-
|
1744
|
+
- match/lib
|
1745
|
+
- fastlane/lib
|
1746
|
+
- pem/lib
|
1746
1747
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1747
1748
|
requirements:
|
1748
1749
|
- - ">="
|