fastlane 2.126.0.beta.20190616200045 → 2.126.0.beta.20190617200114
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/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
|
- - ">="
|