fastlane 2.121.0.beta.20190421200026 → 2.121.0.beta.20190422200029
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cert/lib/cert/runner.rb +1 -1
- data/deliver/lib/deliver/upload_screenshots.rb +1 -2
- data/fastlane/lib/fastlane/actions/pod_lib_lint.rb +47 -46
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/frameit/lib/frameit/editor.rb +4 -2
- data/spaceship/lib/assets/displayFamilies.json +181 -0
- data/spaceship/lib/spaceship/du/du_client.rb +4 -51
- data/spaceship/lib/spaceship/tunes/app_version.rb +2 -2
- data/spaceship/lib/spaceship/tunes/device_type.rb +8 -31
- data/spaceship/lib/spaceship/tunes/display_family.rb +84 -0
- metadata +16 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7cb5153f3bf96336e63de8f177850d144d1d13fb
|
4
|
+
data.tar.gz: 8e4a7d568545f84d7fa022ca6b87c445015c4122
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 428aef676e4474c1f65a3b28794435b7d391ea0a12035fcb039833ab44dd80f9da332afc407168abfabee14e36db908b601b93d7b8cac276ccad6c8b7cc0ab65
|
7
|
+
data.tar.gz: 1253688c2cb9fc3f72e75c8560f2c80ec1c0cfceb525a12ae6c030723ad88dc68a5a5bccc29c697a4288baa1cf6be65add53d98f504ed3b519f490180113f23c
|
data/cert/lib/cert/runner.rb
CHANGED
@@ -94,7 +94,7 @@ module Cert
|
|
94
94
|
|
95
95
|
# As keychain is specific to macOS, this will likely fail on non macOS systems.
|
96
96
|
# See also: https://github.com/fastlane/fastlane/pull/14462
|
97
|
-
keychain = File.expand_path(Cert.config[:keychain_path])
|
97
|
+
keychain = File.expand_path(Cert.config[:keychain_path]) unless Cert.config[:keychain_path].nil?
|
98
98
|
if FastlaneCore::CertChecker.installed?(path, in_keychain: keychain)
|
99
99
|
# This certificate is installed on the local machine
|
100
100
|
ENV["CER_CERTIFICATE_ID"] = certificate.id
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'spaceship/tunes/tunes'
|
2
|
-
require 'spaceship/tunes/device_type'
|
3
2
|
|
4
3
|
require_relative 'app_screenshot'
|
5
4
|
require_relative 'module'
|
@@ -134,7 +133,7 @@ module Deliver
|
|
134
133
|
# to have it in there for frameit support
|
135
134
|
unaccepted_device_shown = false
|
136
135
|
screenshots.select! do |screenshot|
|
137
|
-
exists =
|
136
|
+
exists = !screenshot.device_type.nil?
|
138
137
|
unless exists
|
139
138
|
UI.important("Unaccepted device screenshots are detected! 🚫 Screenshot file will be skipped. 🏃") unless unaccepted_device_shown
|
140
139
|
unaccepted_device_shown = true
|
@@ -5,38 +5,18 @@ module Fastlane
|
|
5
5
|
command = []
|
6
6
|
|
7
7
|
command << "bundle exec" if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
|
8
|
-
|
9
8
|
command << "pod lib lint"
|
10
9
|
|
11
|
-
if params[:verbose]
|
12
|
-
command << "--verbose"
|
13
|
-
end
|
14
|
-
|
15
10
|
command << params[:podspec] if params[:podspec]
|
16
|
-
|
17
|
-
if params[:
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
if params[:
|
23
|
-
command << "--include-podspecs='#{params[:include_podspecs]}'"
|
24
|
-
end
|
25
|
-
|
26
|
-
if params[:external_podspecs]
|
27
|
-
command << "--external-podspecs='#{params[:external_podspecs]}'"
|
28
|
-
end
|
29
|
-
|
30
|
-
if params[:swift_version]
|
31
|
-
swift_version = params[:swift_version]
|
32
|
-
command << "--swift-version=#{swift_version}"
|
33
|
-
end
|
34
|
-
|
35
|
-
if params[:allow_warnings]
|
36
|
-
command << "--allow-warnings"
|
37
|
-
end
|
38
|
-
|
11
|
+
command << "--verbose" if params[:verbose]
|
12
|
+
command << "--allow-warnings" if params[:allow_warnings]
|
13
|
+
command << "--sources='#{params[:sources].join(',')}'" if params[:sources]
|
14
|
+
command << "--subspec='#{params[:subspec]}'" if params[:subspec]
|
15
|
+
command << "--include-podspecs='#{params[:include_podspecs]}'" if params[:include_podspecs]
|
16
|
+
command << "--external-podspecs='#{params[:external_podspecs]}'" if params[:external_podspecs]
|
17
|
+
command << "--swift-version=#{params[:swift_version]}" if params[:swift_version]
|
39
18
|
command << "--use-libraries" if params[:use_libraries]
|
19
|
+
command << "--use-modular-headers" if params[:use_modular_headers]
|
40
20
|
command << "--fail-fast" if params[:fail_fast]
|
41
21
|
command << "--private" if params[:private]
|
42
22
|
command << "--quick" if params[:quick]
|
@@ -62,57 +42,78 @@ module Fastlane
|
|
62
42
|
[
|
63
43
|
FastlaneCore::ConfigItem.new(key: :use_bundle_exec,
|
64
44
|
description: "Use bundle exec when there is a Gemfile presented",
|
65
|
-
|
66
|
-
default_value: true
|
45
|
+
type: Boolean,
|
46
|
+
default_value: true,
|
47
|
+
env_name: "FL_POD_LIB_LINT_USE_BUNDLE"),
|
67
48
|
FastlaneCore::ConfigItem.new(key: :podspec,
|
68
49
|
description: "Path of spec to lint",
|
50
|
+
type: String,
|
69
51
|
optional: true,
|
70
|
-
|
52
|
+
env_name: "FL_POD_LIB_LINT_PODSPEC"),
|
71
53
|
FastlaneCore::ConfigItem.new(key: :verbose,
|
72
54
|
description: "Allow output detail in console",
|
55
|
+
type: Boolean,
|
73
56
|
optional: true,
|
74
|
-
|
57
|
+
env_name: "FL_POD_LIB_LINT_VERBOSE"),
|
75
58
|
FastlaneCore::ConfigItem.new(key: :allow_warnings,
|
76
59
|
description: "Allow warnings during pod lint",
|
60
|
+
type: Boolean,
|
77
61
|
optional: true,
|
78
|
-
|
62
|
+
env_name: "FL_POD_LIB_LINT_ALLOW_WARNINGS"),
|
79
63
|
FastlaneCore::ConfigItem.new(key: :sources,
|
80
64
|
description: "The sources of repos you want the pod spec to lint with, separated by commas",
|
81
|
-
optional: true,
|
82
|
-
is_string: false,
|
83
65
|
type: Array,
|
66
|
+
optional: true,
|
67
|
+
env_name: "FL_POD_LIB_LINT_SOURCES",
|
84
68
|
verify_block: proc do |value|
|
85
69
|
UI.user_error!("Sources must be an array.") unless value.kind_of?(Array)
|
86
70
|
end),
|
71
|
+
FastlaneCore::ConfigItem.new(key: :subspec,
|
72
|
+
description: "A specific subspec to lint instead of the entire spec",
|
73
|
+
type: String,
|
74
|
+
optional: true,
|
75
|
+
env_name: "FL_POD_LIB_LINT_SUBSPEC"),
|
87
76
|
FastlaneCore::ConfigItem.new(key: :include_podspecs,
|
88
77
|
description: "A Glob of additional ancillary podspecs which are used for linting via :path (available since cocoapods >= 1.7)",
|
78
|
+
type: String,
|
89
79
|
optional: true,
|
90
|
-
|
80
|
+
env_name: "FL_POD_LIB_LINT_INCLUDE_PODSPECS"),
|
91
81
|
FastlaneCore::ConfigItem.new(key: :external_podspecs,
|
92
82
|
description: "A Glob of additional ancillary podspecs which are used for linting via :podspec. If there"\
|
93
83
|
" are --include-podspecs, then these are removed from them (available since cocoapods >= 1.7)",
|
84
|
+
type: String,
|
94
85
|
optional: true,
|
95
|
-
|
86
|
+
env_name: "FL_POD_LIB_LINT_EXTERNAL_PODSPECS"),
|
96
87
|
FastlaneCore::ConfigItem.new(key: :swift_version,
|
97
88
|
description: "The SWIFT_VERSION that should be used to lint the spec. This takes precedence over a .swift-version file",
|
89
|
+
type: String,
|
98
90
|
optional: true,
|
99
|
-
|
91
|
+
env_name: "FL_POD_LIB_LINT_SWIFT_VERSION"),
|
100
92
|
FastlaneCore::ConfigItem.new(key: :use_libraries,
|
101
93
|
description: "Lint uses static libraries to install the spec",
|
102
|
-
|
103
|
-
default_value: false
|
94
|
+
type: Boolean,
|
95
|
+
default_value: false,
|
96
|
+
env_name: "FL_POD_LIB_LINT_USE_LIBRARIES"),
|
97
|
+
FastlaneCore::ConfigItem.new(key: :use_modular_headers,
|
98
|
+
description: "Lint using modular libraries",
|
99
|
+
type: Boolean,
|
100
|
+
default_value: false,
|
101
|
+
env_name: "FL_POD_LIB_LINT_USE_MODULAR_HEADERS"),
|
104
102
|
FastlaneCore::ConfigItem.new(key: :fail_fast,
|
105
103
|
description: "Lint stops on the first failing platform or subspec",
|
106
|
-
|
107
|
-
default_value: false
|
104
|
+
type: Boolean,
|
105
|
+
default_value: false,
|
106
|
+
env_name: "FL_POD_LIB_LINT_FAIL_FAST"),
|
108
107
|
FastlaneCore::ConfigItem.new(key: :private,
|
109
108
|
description: "Lint skips checks that apply only to public specs",
|
110
|
-
|
111
|
-
default_value: false
|
109
|
+
type: Boolean,
|
110
|
+
default_value: false,
|
111
|
+
env_name: "FL_POD_LIB_LINT_PRIVATE"),
|
112
112
|
FastlaneCore::ConfigItem.new(key: :quick,
|
113
113
|
description: "Lint skips checks that would require to download and build the spec",
|
114
|
-
|
115
|
-
default_value: false
|
114
|
+
type: Boolean,
|
115
|
+
default_value: false,
|
116
|
+
env_name: "FL_POD_LIB_LINT_QUICK")
|
116
117
|
]
|
117
118
|
end
|
118
119
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.121.0.beta.
|
2
|
+
VERSION = '2.121.0.beta.20190422200029'.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
|
@@ -193,7 +193,8 @@ module Frameit
|
|
193
193
|
def horizontal_frame_padding
|
194
194
|
padding = fetch_config['padding']
|
195
195
|
if padding.kind_of?(String) && padding.split('x').length == 2
|
196
|
-
padding = padding.split('x')[0]
|
196
|
+
padding = padding.split('x')[0]
|
197
|
+
padding = padding.to_i unless padding.end_with?('%')
|
197
198
|
end
|
198
199
|
return scale_padding(padding)
|
199
200
|
end
|
@@ -202,7 +203,8 @@ module Frameit
|
|
202
203
|
def vertical_frame_padding
|
203
204
|
padding = fetch_config['padding']
|
204
205
|
if padding.kind_of?(String) && padding.split('x').length == 2
|
205
|
-
padding = padding.split('x')[1]
|
206
|
+
padding = padding.split('x')[1]
|
207
|
+
padding = padding.to_i unless padding.end_with?('%')
|
206
208
|
end
|
207
209
|
return scale_padding(padding)
|
208
210
|
end
|
@@ -0,0 +1,181 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"name": "ipad",
|
4
|
+
"friendly_name": "9.7-inch Display",
|
5
|
+
"friendly_category_name": "iPad",
|
6
|
+
"screenshot_resolutions": [
|
7
|
+
[1536, 2008],
|
8
|
+
[1536, 2048],
|
9
|
+
[2048, 1496],
|
10
|
+
[2048, 1536],
|
11
|
+
[768, 1004],
|
12
|
+
[768, 1024],
|
13
|
+
[1024, 748],
|
14
|
+
[1024, 768]
|
15
|
+
],
|
16
|
+
"picture_type": "MZPFT.SortedTabletScreenShot",
|
17
|
+
"messages_picture_type": "MZPFT.SortedTabletMessagesScreenShot"
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"name": "ipad105",
|
21
|
+
"friendly_name": "10.5-inch Display",
|
22
|
+
"friendly_category_name": "iPad",
|
23
|
+
"screenshot_resolutions": [
|
24
|
+
[1668, 2224],
|
25
|
+
[2224, 1668]
|
26
|
+
],
|
27
|
+
"picture_type": "MZPFT.SortedJ207ScreenShot",
|
28
|
+
"messages_picture_type": "MZPFT.SortedJ207MessagesScreenShot"
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"name": "ipadPro",
|
32
|
+
"friendly_name": "iPad Pro (2nd Generation) 12.9-inch Display",
|
33
|
+
"friendly_category_name": "iPad",
|
34
|
+
"screenshot_resolutions": [
|
35
|
+
[2048, 2732],
|
36
|
+
[2732, 2048]
|
37
|
+
],
|
38
|
+
"picture_type": "MZPFT.SortedJ99ScreenShot",
|
39
|
+
"messages_picture_type": "MZPFT.SortedJ99MessagesScreenShot"
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"name": "ipadPro11",
|
43
|
+
"friendly_name": "11-inch Display",
|
44
|
+
"friendly_category_name": "iPad",
|
45
|
+
"screenshot_resolutions": [
|
46
|
+
[1668, 2388],
|
47
|
+
[2388, 1668]
|
48
|
+
],
|
49
|
+
"picture_type": "MZPFT.SortedJ317ScreenShot",
|
50
|
+
"messages_picture_type": "MZPFT.SortedJ317MessagesScreenShot"
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"name": "ipadPro129",
|
54
|
+
"friendly_name": "iPad Pro (3rd Generation) 12.9-inch Display",
|
55
|
+
"friendly_category_name": "iPad",
|
56
|
+
"screenshot_resolutions": [
|
57
|
+
[2048, 2732],
|
58
|
+
[2732, 2048]
|
59
|
+
],
|
60
|
+
"picture_type": "MZPFT.SortedJ320ScreenShot",
|
61
|
+
"messages_picture_type": "MZPFT.SortedJ320MessagesScreenShot"
|
62
|
+
},
|
63
|
+
|
64
|
+
{
|
65
|
+
"name": "iphone35",
|
66
|
+
"friendly_name": "3.5-inch Display",
|
67
|
+
"friendly_category_name": "iPhone",
|
68
|
+
"screenshot_resolutions": [
|
69
|
+
[640, 920],
|
70
|
+
[640, 960],
|
71
|
+
[960, 600],
|
72
|
+
[960, 640]
|
73
|
+
],
|
74
|
+
"picture_type": "MZPFT.SortedScreenShot",
|
75
|
+
"messages_picture_type": null
|
76
|
+
},
|
77
|
+
{
|
78
|
+
"name": "iphone4",
|
79
|
+
"friendly_name": "4-inch Display",
|
80
|
+
"friendly_category_name": "iPhone",
|
81
|
+
"screenshot_resolutions": [
|
82
|
+
[640, 1096],
|
83
|
+
[640, 1136],
|
84
|
+
[1136, 600],
|
85
|
+
[1136, 640]
|
86
|
+
],
|
87
|
+
"picture_type": "MZPFT.SortedN41ScreenShot",
|
88
|
+
"messages_picture_type": "MZPFT.SortedN41MessagesScreenShot"
|
89
|
+
},
|
90
|
+
{
|
91
|
+
"name": "iphone6",
|
92
|
+
"friendly_name": "4.7-inch Display",
|
93
|
+
"friendly_category_name": "iPhone",
|
94
|
+
"screenshot_resolutions": [
|
95
|
+
[750, 1334],
|
96
|
+
[1334, 750]
|
97
|
+
],
|
98
|
+
"picture_type": "MZPFT.SortedN61ScreenShot",
|
99
|
+
"messages_picture_type": "MZPFT.SortedN61MessagesScreenShot"
|
100
|
+
},
|
101
|
+
{
|
102
|
+
"name": "iphone6Plus",
|
103
|
+
"friendly_name": "5.5-inch Display",
|
104
|
+
"friendly_category_name": "iPhone",
|
105
|
+
"screenshot_resolutions": [
|
106
|
+
[1242, 2208],
|
107
|
+
[2208, 1242]
|
108
|
+
],
|
109
|
+
"picture_type": "MZPFT.SortedN56ScreenShot",
|
110
|
+
"messages_picture_type": "MZPFT.SortedN56MessagesScreenShot"
|
111
|
+
},
|
112
|
+
{
|
113
|
+
"name": "iphone58",
|
114
|
+
"friendly_name": "5.8-inch Display",
|
115
|
+
"friendly_category_name": "iPhone",
|
116
|
+
"screenshot_resolutions": [
|
117
|
+
[1125, 2436],
|
118
|
+
[2436, 1125]
|
119
|
+
],
|
120
|
+
"picture_type": "MZPFT.SortedD22ScreenShot",
|
121
|
+
"messages_picture_type": "MZPFT.SortedD22MessagesScreenShot"
|
122
|
+
},
|
123
|
+
{
|
124
|
+
"name": "iphone65",
|
125
|
+
"friendly_name": "6.5-inch Display",
|
126
|
+
"friendly_category_name": "iPhone",
|
127
|
+
"screenshot_resolutions": [
|
128
|
+
[1242, 2688],
|
129
|
+
[2688, 1242]
|
130
|
+
],
|
131
|
+
"picture_type": "MZPFT.SortedD33ScreenShot",
|
132
|
+
"messages_picture_type": "MZPFT.SortedD33MessagesScreenShot"
|
133
|
+
},
|
134
|
+
|
135
|
+
{
|
136
|
+
"name": "watch",
|
137
|
+
"friendly_name": "Series 3",
|
138
|
+
"friendly_category_name": "Apple Watch",
|
139
|
+
"screenshot_resolutions": [
|
140
|
+
[312, 390]
|
141
|
+
],
|
142
|
+
"picture_type": "MZPFT.SortedN27ScreenShot",
|
143
|
+
"messages_picture_type": null
|
144
|
+
},
|
145
|
+
{
|
146
|
+
"name": "watchSeries4",
|
147
|
+
"friendly_name": "Series 4",
|
148
|
+
"friendly_category_name": "Apple Watch",
|
149
|
+
"screenshot_resolutions": [
|
150
|
+
[368, 448]
|
151
|
+
],
|
152
|
+
"picture_type": "MZPFT.SortedN131ScreenShot",
|
153
|
+
"messages_picture_type": null
|
154
|
+
},
|
155
|
+
|
156
|
+
{
|
157
|
+
"name": "appleTV",
|
158
|
+
"friendly_name": "Apple TV",
|
159
|
+
"friendly_category_name": "Apple TV",
|
160
|
+
"screenshot_resolutions": [
|
161
|
+
[1920, 1080],
|
162
|
+
[3840, 2160]
|
163
|
+
],
|
164
|
+
"picture_type": "MZPFT.SortedATVScreenShot",
|
165
|
+
"messages_picture_type": null
|
166
|
+
},
|
167
|
+
|
168
|
+
{
|
169
|
+
"name": "desktop",
|
170
|
+
"friendly_name": "Mac",
|
171
|
+
"friendly_category_name": "Desktop",
|
172
|
+
"screenshot_resolutions": [
|
173
|
+
[1280, 800],
|
174
|
+
[1440, 900],
|
175
|
+
[2560, 1600],
|
176
|
+
[2880, 1800]
|
177
|
+
],
|
178
|
+
"picture_type": "MZPFT.SortedDesktopScreenShot",
|
179
|
+
"messages_picture_type": null
|
180
|
+
}
|
181
|
+
]
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require_relative '../client'
|
2
|
+
require_relative '../tunes/display_family'
|
2
3
|
require_relative 'utilities'
|
3
4
|
|
4
5
|
module Spaceship
|
@@ -96,64 +97,16 @@ module Spaceship
|
|
96
97
|
parse_upload_response(r)
|
97
98
|
end
|
98
99
|
|
99
|
-
# You can find this by uploading an image in App Store Connect
|
100
|
-
# then look for the X-Apple-Upload-Validation-RuleSets value
|
101
100
|
def picture_type_map
|
102
|
-
|
103
|
-
{
|
104
|
-
ipad: "MZPFT.SortedTabletScreenShot",
|
105
|
-
ipad105: "MZPFT.SortedJ207ScreenShot",
|
106
|
-
ipadPro: "MZPFT.SortedJ99ScreenShot",
|
107
|
-
ipadPro11: "MZPFT.SortedJ317ScreenShot",
|
108
|
-
ipadPro129: "MZPFT.SortedJ320ScreenShot",
|
109
|
-
iphone35: "MZPFT.SortedScreenShot",
|
110
|
-
iphone4: "MZPFT.SortedN41ScreenShot",
|
111
|
-
iphone6: "MZPFT.SortedN61ScreenShot",
|
112
|
-
iphone6Plus: "MZPFT.SortedN56ScreenShot",
|
113
|
-
iphone58: "MZPFT.SortedD22ScreenShot",
|
114
|
-
iphone65: "MZPFT.SortedD33ScreenShot",
|
115
|
-
watch: "MZPFT.SortedN27ScreenShot",
|
116
|
-
watchSeries4: "MZPFT.SortedN131ScreenShot",
|
117
|
-
appleTV: "MZPFT.SortedATVScreenShot",
|
118
|
-
desktop: "MZPFT.SortedDesktopScreenShot"
|
119
|
-
}
|
101
|
+
Spaceship::Tunes::DisplayFamily.all.map { |v| [v.name.to_sym, v.picture_type] }.to_h
|
120
102
|
end
|
121
103
|
|
122
104
|
def messages_picture_type_map
|
123
|
-
|
124
|
-
{
|
125
|
-
ipad: "MZPFT.SortedTabletMessagesScreenShot",
|
126
|
-
ipad105: "MZPFT.SortedJ207MessagesScreenShot",
|
127
|
-
ipadPro: "MZPFT.SortedJ99MessagesScreenShot",
|
128
|
-
ipadPro11: "MZPFT.SortedJ317MessagesScreenShot",
|
129
|
-
ipadPro129: "MZPFT.SortedJ320MessagesScreenShot",
|
130
|
-
iphone4: "MZPFT.SortedN41MessagesScreenShot",
|
131
|
-
iphone6: "MZPFT.SortedN61MessagesScreenShot",
|
132
|
-
iphone6Plus: "MZPFT.SortedN56MessagesScreenShot",
|
133
|
-
iphone58: "MZPFT.SortedD22MessagesScreenShot",
|
134
|
-
iphone65: "MZPFT.SortedD33MessagesScreenShot"
|
135
|
-
}
|
105
|
+
Spaceship::Tunes::DisplayFamily.all.select(&:messages_supported?).map { |v| [v.name.to_sym, v.messages_picture_type] }.to_h
|
136
106
|
end
|
137
107
|
|
138
108
|
def device_resolution_map
|
139
|
-
|
140
|
-
{
|
141
|
-
watch: [[312, 390]],
|
142
|
-
watchSeries4: [[368, 448]],
|
143
|
-
ipad: [[1024, 748], [1024, 768], [2048, 1496], [2048, 1536], [768, 1004], [768, 1024], [1536, 2008], [1536, 2048]],
|
144
|
-
ipad105: [[1668, 2224], [2224, 1668]],
|
145
|
-
ipadPro: [[2048, 2732], [2732, 2048]],
|
146
|
-
ipadPro11: [[1668, 2388], [2388, 1668]],
|
147
|
-
ipadPro129: [[2048, 2732], [2732, 2048]],
|
148
|
-
iphone35: [[640, 960], [640, 920], [960, 600], [960, 640]],
|
149
|
-
iphone4: [[640, 1096], [640, 1136], [1136, 600], [1136, 640]],
|
150
|
-
iphone6: [[750, 1334], [1334, 750]],
|
151
|
-
iphone6Plus: [[1242, 2208], [2208, 1242]],
|
152
|
-
iphone58: [[1125, 2436], [2436, 1125]],
|
153
|
-
iphone65: [[1242, 2688], [2688, 1242]],
|
154
|
-
appleTV: [[1920, 1080], [3840, 2160]],
|
155
|
-
desktop: [[1280, 800], [1440, 900], [2560, 1600], [2880, 1800]]
|
156
|
-
}
|
109
|
+
Spaceship::Tunes::DisplayFamily.all.map { |v| [v.name.to_sym, v.screenshot_resolutions] }.to_h
|
157
110
|
end
|
158
111
|
|
159
112
|
def screenshot_picture_type(device, is_messages)
|
@@ -2,7 +2,7 @@ require_relative 'tunes_client'
|
|
2
2
|
require_relative 'app_trailer'
|
3
3
|
require_relative 'app_screenshot'
|
4
4
|
require_relative 'app_image'
|
5
|
-
require_relative '
|
5
|
+
require_relative 'display_family'
|
6
6
|
require_relative 'app_version_generated_promocodes'
|
7
7
|
require_relative 'language_item'
|
8
8
|
require_relative 'transit_app_file'
|
@@ -692,7 +692,7 @@ module Spaceship
|
|
692
692
|
end
|
693
693
|
|
694
694
|
def container_data_for_language_and_device(data_field, language, device)
|
695
|
-
raise "#{device} isn't a valid device name" unless
|
695
|
+
raise "#{device} isn't a valid device name" unless DisplayFamily.find(device)
|
696
696
|
|
697
697
|
languages = raw_data_details.select { |d| d["language"] == language }
|
698
698
|
# IDEA: better error for non existing language
|
@@ -1,39 +1,16 @@
|
|
1
|
+
require_relative "display_family"
|
2
|
+
|
1
3
|
module Spaceship
|
2
4
|
module Tunes
|
3
5
|
# identifiers of devices that App Store Connect accepts screenshots for
|
4
6
|
class DeviceType
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
'iphone6', # 4.7-inch Display
|
10
|
-
'iphone6Plus', # 5.5-inch Display
|
11
|
-
'iphone58', # iPhone XS
|
12
|
-
'iphone65', # iPhone XS Max
|
13
|
-
|
14
|
-
# iPad
|
15
|
-
'ipad', # 9.7-inch Display
|
16
|
-
'ipad105',
|
17
|
-
'ipadPro',
|
18
|
-
'ipadPro11',
|
19
|
-
'ipadPro129',
|
20
|
-
|
21
|
-
# Apple Watch
|
22
|
-
'watch', # series 3
|
23
|
-
'watchSeries4',
|
24
|
-
|
25
|
-
# Apple TV
|
26
|
-
'appleTV',
|
27
|
-
|
28
|
-
# Mac
|
29
|
-
'desktop'
|
30
|
-
]
|
31
|
-
class << self
|
32
|
-
attr_accessor :types
|
7
|
+
def self.types
|
8
|
+
warn("Spaceship::Tunes::DeviceType has been deprecated, use Spaceship::Tunes::DisplayFamily instead. (https://github.com/fastlane/fastlane/pull/14574).")
|
9
|
+
return DisplayFamily.all.map(&:name)
|
10
|
+
end
|
33
11
|
|
34
|
-
|
35
|
-
|
36
|
-
end
|
12
|
+
def self.exists?(type)
|
13
|
+
types.include?(type)
|
37
14
|
end
|
38
15
|
end
|
39
16
|
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require_relative "../module"
|
2
|
+
|
3
|
+
module Spaceship
|
4
|
+
module Tunes
|
5
|
+
# A definition of different styled displays used by devices
|
6
|
+
# that App Store Connect supports storing screenshots.
|
7
|
+
# Display styles often only vary based on screen resolution
|
8
|
+
# however other aspects of a displays physical apperance are
|
9
|
+
# also factored (i.e if the home indicator is provided via
|
10
|
+
# a hardware button or a software interface).
|
11
|
+
class DisplayFamily
|
12
|
+
# The display family name from the App Store Connect API that
|
13
|
+
# is used when uploading or listing screenshots. This value is
|
14
|
+
# then assigned to the
|
15
|
+
# Spaceship::Tunes::AppScreenshot#device_type attribute.
|
16
|
+
attr_accessor :name
|
17
|
+
|
18
|
+
# The user friendly name of this defintion.
|
19
|
+
#
|
20
|
+
# Source: Media Manager in App Store Connect.
|
21
|
+
attr_accessor :friendly_name
|
22
|
+
|
23
|
+
# The user friendly category for this defintion (i.e iPhone,
|
24
|
+
# Apple TV or Desktop).
|
25
|
+
attr_accessor :friendly_category_name
|
26
|
+
|
27
|
+
# An array of supported screen resolutions (in pixels) that are
|
28
|
+
# supported for the associated device.
|
29
|
+
#
|
30
|
+
# Source: https://help.apple.com/app-store-connect/#/devd274dd925
|
31
|
+
attr_accessor :screenshot_resolutions
|
32
|
+
|
33
|
+
# An internal identifier for the same device definition used
|
34
|
+
# in the DUClient.
|
35
|
+
#
|
36
|
+
# Source: You can find this by uploading an image in App Store
|
37
|
+
# Connect using your browser and then look for the
|
38
|
+
# X-Apple-Upload-Validation-RuleSets value in the uploads
|
39
|
+
# request headers.
|
40
|
+
attr_accessor :picture_type
|
41
|
+
|
42
|
+
# Similar to `picture_type`, but for iMessage screenshots.
|
43
|
+
attr_accessor :messages_picture_type
|
44
|
+
|
45
|
+
# Identifies if the device definition supports iMessage screenshots.
|
46
|
+
def messages_supported?
|
47
|
+
true unless messages_picture_type.nil?
|
48
|
+
end
|
49
|
+
|
50
|
+
# Finds a DisplayFamily definition.
|
51
|
+
#
|
52
|
+
# @param name (Symbol|String) The name of the display family being searched for.
|
53
|
+
# @return DisplayFamily object matching the given name.
|
54
|
+
def self.find(name)
|
55
|
+
name = name.to_sym if name.kind_of?(String)
|
56
|
+
lookup[name]
|
57
|
+
end
|
58
|
+
|
59
|
+
# All DisplayFamily types currently supported by App Store Connect.
|
60
|
+
def self.all
|
61
|
+
lookup.values
|
62
|
+
end
|
63
|
+
|
64
|
+
private_class_method
|
65
|
+
|
66
|
+
def self.lookup
|
67
|
+
return @lookup if defined?(@lookup)
|
68
|
+
display_families = JSON.parse(File.read(File.join(Spaceship::ROOT, "lib", "assets", "displayFamilies.json")))
|
69
|
+
@lookup ||= display_families.map { |data| [data["name"].to_sym, DisplayFamily.new(data)] }.to_h
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def initialize(data)
|
75
|
+
@name = data["name"]
|
76
|
+
@friendly_name = data["friendly_name"]
|
77
|
+
@friendly_category_name = data["friendly_category_name"]
|
78
|
+
@screenshot_resolutions = data["screenshot_resolutions"]
|
79
|
+
@picture_type = data["picture_type"]
|
80
|
+
@messages_picture_type = data["messages_picture_type"]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
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.121.0.beta.
|
4
|
+
version: 2.121.0.beta.20190422200029
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kohki Miki
|
@@ -27,7 +27,7 @@ authors:
|
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2019-04-
|
30
|
+
date: 2019-04-22 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -1561,6 +1561,7 @@ files:
|
|
1561
1561
|
- snapshot/lib/snapshot/test_command_generator_xcode_8.rb
|
1562
1562
|
- snapshot/lib/snapshot/update.rb
|
1563
1563
|
- spaceship/README.md
|
1564
|
+
- spaceship/lib/assets/displayFamilies.json
|
1564
1565
|
- spaceship/lib/assets/languageMapping.json
|
1565
1566
|
- spaceship/lib/assets/languageMappingReadable.json
|
1566
1567
|
- spaceship/lib/spaceship.rb
|
@@ -1640,6 +1641,7 @@ files:
|
|
1640
1641
|
- spaceship/lib/spaceship/tunes/build_train.rb
|
1641
1642
|
- spaceship/lib/spaceship/tunes/developer_response.rb
|
1642
1643
|
- spaceship/lib/spaceship/tunes/device_type.rb
|
1644
|
+
- spaceship/lib/spaceship/tunes/display_family.rb
|
1643
1645
|
- spaceship/lib/spaceship/tunes/errors.rb
|
1644
1646
|
- spaceship/lib/spaceship/tunes/iap.rb
|
1645
1647
|
- spaceship/lib/spaceship/tunes/iap_detail.rb
|
@@ -1688,24 +1690,24 @@ metadata:
|
|
1688
1690
|
post_install_message:
|
1689
1691
|
rdoc_options: []
|
1690
1692
|
require_paths:
|
1691
|
-
-
|
1692
|
-
-
|
1693
|
-
- pilot/lib
|
1693
|
+
- fastlane_core/lib
|
1694
|
+
- produce/lib
|
1694
1695
|
- frameit/lib
|
1695
|
-
- match/lib
|
1696
|
-
- deliver/lib
|
1697
|
-
- gym/lib
|
1698
1696
|
- supply/lib
|
1699
|
-
-
|
1697
|
+
- fastlane/lib
|
1700
1698
|
- scan/lib
|
1701
|
-
-
|
1702
|
-
- spaceship/lib
|
1699
|
+
- precheck/lib
|
1703
1700
|
- screengrab/lib
|
1704
|
-
- fastlane_core/lib
|
1705
|
-
- sigh/lib
|
1706
1701
|
- cert/lib
|
1707
|
-
-
|
1702
|
+
- match/lib
|
1703
|
+
- pem/lib
|
1704
|
+
- deliver/lib
|
1708
1705
|
- credentials_manager/lib
|
1706
|
+
- snapshot/lib
|
1707
|
+
- spaceship/lib
|
1708
|
+
- sigh/lib
|
1709
|
+
- pilot/lib
|
1710
|
+
- gym/lib
|
1709
1711
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1710
1712
|
requirements:
|
1711
1713
|
- - ">="
|