fastlane 2.121.0.beta.20190421200026 → 2.121.0.beta.20190422200029
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/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
|
- - ">="
|