fastlane 2.149.0 → 2.150.0.rc4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +82 -82
- data/deliver/lib/deliver.rb +0 -1
- data/deliver/lib/deliver/app_screenshot.rb +26 -25
- data/deliver/lib/deliver/options.rb +6 -11
- data/deliver/lib/deliver/runner.rb +7 -21
- data/deliver/lib/deliver/setup.rb +5 -30
- data/deliver/lib/deliver/submit_for_review.rb +155 -90
- data/deliver/lib/deliver/upload_metadata.rb +355 -143
- data/deliver/lib/deliver/upload_price_tier.rb +22 -8
- data/deliver/lib/deliver/upload_screenshots.rb +134 -39
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +77 -96
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +3 -2
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +7 -1
- data/fastlane/lib/fastlane/actions/google_play_track_release_names.rb +74 -0
- data/fastlane/lib/fastlane/actions/set_changelog.rb +23 -20
- data/fastlane/lib/fastlane/actions/slack.rb +1 -1
- data/fastlane/lib/fastlane/actions/spm.rb +7 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +1 -32
- data/fastlane/lib/fastlane/lane.rb +3 -3
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +8 -4
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/ControlCommand.swift +1 -0
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +48 -12
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +3 -9
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +2 -5
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/RubyCommand.swift +29 -6
- data/fastlane/swift/RubyCommandable.swift +1 -0
- data/fastlane/swift/Runner.swift +85 -13
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +3 -3
- data/fastlane/swift/SocketClient.swift +76 -45
- data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
- data/fastlane/swift/SocketResponse.swift +1 -0
- data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +1 -3
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +89 -52
- data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +7 -0
- data/fastlane_core/lib/fastlane_core/project.rb +0 -1
- data/frameit/lib/frameit/device_types.rb +100 -100
- data/produce/lib/produce/itunes_connect.rb +32 -21
- data/produce/lib/produce/options.rb +3 -3
- data/sigh/lib/assets/resign.sh +7 -7
- data/snapshot/lib/assets/SnapshotHelper.swift +5 -5
- data/snapshot/lib/assets/SnapshotHelperXcode8.swift +3 -3
- data/snapshot/lib/snapshot/options.rb +0 -1
- data/snapshot/lib/snapshot/reports_generator.rb +8 -1
- data/spaceship/lib/spaceship/.DS_Store +0 -0
- data/spaceship/lib/spaceship/client.rb +4 -3
- data/spaceship/lib/spaceship/connect_api.rb +25 -2
- data/spaceship/lib/spaceship/connect_api/client.rb +97 -31
- data/spaceship/lib/spaceship/connect_api/file_uploader.rb +98 -0
- data/spaceship/lib/spaceship/connect_api/model.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +113 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +120 -3
- data/spaceship/lib/spaceship/connect_api/models/app_category.rb +94 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +67 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +38 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +129 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +71 -0
- data/spaceship/lib/spaceship/connect_api/models/app_price.rb +22 -0
- data/spaceship/lib/spaceship/connect_api/models/app_price_tier.rb +12 -0
- data/spaceship/lib/spaceship/connect_api/models/app_review_attachment.rb +71 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +93 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +101 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_review_detail.rb +51 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +183 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +86 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_phased_release.rb +36 -0
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_submission.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb +40 -0
- data/spaceship/lib/spaceship/connect_api/models/reset_ratings_request.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/territory.rb +27 -0
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +10 -3
- data/spaceship/lib/spaceship/connect_api/tunes/client.rb +33 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +841 -0
- data/spaceship/lib/spaceship/spaceauth_runner.rb +2 -2
- data/supply/lib/supply/client.rb +19 -0
- data/supply/lib/supply/reader.rb +16 -0
- metadata +44 -39
- data/deliver/lib/deliver/upload_assets.rb +0 -27
- data/fastlane/lib/assets/.s3_html_template.erb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.hipchat.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
- data/scan/lib/scan/.options.rb.swp +0 -0
@@ -17,7 +17,7 @@ import Foundation
|
|
17
17
|
protocol SocketClientDelegateProtocol: class {
|
18
18
|
func connectionsOpened()
|
19
19
|
func connectionsClosed()
|
20
|
-
func commandExecuted(serverResponse: SocketClientResponse)
|
20
|
+
func commandExecuted(serverResponse: SocketClientResponse, completion: (SocketClient) -> Void)
|
21
21
|
}
|
22
22
|
|
23
23
|
// Please don't remove the lines below
|
@@ -28,6 +28,7 @@ struct SocketResponse {
|
|
28
28
|
}
|
29
29
|
|
30
30
|
if status == "ready_for_next" {
|
31
|
+
verbose(message: "ready for next")
|
31
32
|
let returnedObject = statusDictionary["return_object"] as? String
|
32
33
|
let closureArgumentValue = statusDictionary["closure_argument_value"] as? String
|
33
34
|
self = .readyForNext(returnedObject: returnedObject, closureArgumentValue: closureArgumentValue)
|
@@ -239,64 +239,101 @@ module FastlaneCore
|
|
239
239
|
# escaping problems in its accompanying shell script.
|
240
240
|
class JavaTransporterExecutor < TransporterExecutor
|
241
241
|
def build_upload_command(username, password, source = "/tmp", provider_short_name = "")
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
242
|
+
if Helper.mac? && Helper.xcode_at_least?(11)
|
243
|
+
[
|
244
|
+
'xcrun iTMSTransporter',
|
245
|
+
'-m upload',
|
246
|
+
"-u #{username.shellescape}",
|
247
|
+
"-p #{password.shellescape}",
|
248
|
+
"-f #{source.shellescape}",
|
249
|
+
additional_upload_parameters, # that's here, because the user might overwrite the -t option
|
250
|
+
'-k 100000',
|
251
|
+
("-itc_provider #{provider_short_name}" unless provider_short_name.to_s.empty?),
|
252
|
+
'2>&1' # cause stderr to be written to stdout
|
253
|
+
].compact.join(' ') # compact gets rid of the possibly nil ENV value
|
254
|
+
else
|
255
|
+
[
|
256
|
+
Helper.transporter_java_executable_path.shellescape,
|
257
|
+
"-Djava.ext.dirs=#{Helper.transporter_java_ext_dir.shellescape}",
|
258
|
+
'-XX:NewSize=2m',
|
259
|
+
'-Xms32m',
|
260
|
+
'-Xmx1024m',
|
261
|
+
'-Xms1024m',
|
262
|
+
'-Djava.awt.headless=true',
|
263
|
+
'-Dsun.net.http.retryPost=false',
|
264
|
+
java_code_option,
|
265
|
+
'-m upload',
|
266
|
+
"-u #{username.shellescape}",
|
267
|
+
"-p #{password.shellescape}",
|
268
|
+
"-f #{source.shellescape}",
|
269
|
+
additional_upload_parameters, # that's here, because the user might overwrite the -t option
|
270
|
+
'-k 100000',
|
271
|
+
("-itc_provider #{provider_short_name}" unless provider_short_name.to_s.empty?),
|
272
|
+
'2>&1' # cause stderr to be written to stdout
|
273
|
+
].compact.join(' ') # compact gets rid of the possibly nil ENV value
|
274
|
+
end
|
261
275
|
end
|
262
276
|
|
263
277
|
def build_download_command(username, password, apple_id, destination = "/tmp", provider_short_name = "")
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
'
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
278
|
+
if Helper.mac? && Helper.xcode_at_least?(11)
|
279
|
+
[
|
280
|
+
'xcrun iTMSTransporter',
|
281
|
+
'-m lookupMetadata',
|
282
|
+
"-u #{username.shellescape}",
|
283
|
+
"-p #{password.shellescape}",
|
284
|
+
"-apple_id #{apple_id.shellescape}",
|
285
|
+
"-destination #{destination.shellescape}",
|
286
|
+
("-itc_provider #{provider_short_name}" unless provider_short_name.to_s.empty?),
|
287
|
+
'2>&1' # cause stderr to be written to stdout
|
288
|
+
].compact.join(' ')
|
289
|
+
else
|
290
|
+
[
|
291
|
+
Helper.transporter_java_executable_path.shellescape,
|
292
|
+
"-Djava.ext.dirs=#{Helper.transporter_java_ext_dir.shellescape}",
|
293
|
+
'-XX:NewSize=2m',
|
294
|
+
'-Xms32m',
|
295
|
+
'-Xmx1024m',
|
296
|
+
'-Xms1024m',
|
297
|
+
'-Djava.awt.headless=true',
|
298
|
+
'-Dsun.net.http.retryPost=false',
|
299
|
+
java_code_option,
|
300
|
+
'-m lookupMetadata',
|
301
|
+
"-u #{username.shellescape}",
|
302
|
+
"-p #{password.shellescape}",
|
303
|
+
"-apple_id #{apple_id.shellescape}",
|
304
|
+
"-destination #{destination.shellescape}",
|
305
|
+
("-itc_provider #{provider_short_name}" unless provider_short_name.to_s.empty?),
|
306
|
+
'2>&1' # cause stderr to be written to stdout
|
307
|
+
].compact.join(' ')
|
308
|
+
end
|
282
309
|
end
|
283
310
|
|
284
311
|
def build_provider_ids_command(username, password)
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
312
|
+
if Helper.mac? && Helper.xcode_at_least?(11)
|
313
|
+
[
|
314
|
+
'xcrun iTMSTransporter',
|
315
|
+
'-m provider',
|
316
|
+
"-u #{username.shellescape}",
|
317
|
+
"-p #{password.shellescape}",
|
318
|
+
'2>&1' # cause stderr to be written to stdout
|
319
|
+
].compact.join(' ')
|
320
|
+
else
|
321
|
+
[
|
322
|
+
Helper.transporter_java_executable_path.shellescape,
|
323
|
+
"-Djava.ext.dirs=#{Helper.transporter_java_ext_dir.shellescape}",
|
324
|
+
'-XX:NewSize=2m',
|
325
|
+
'-Xms32m',
|
326
|
+
'-Xmx1024m',
|
327
|
+
'-Xms1024m',
|
328
|
+
'-Djava.awt.headless=true',
|
329
|
+
'-Dsun.net.http.retryPost=false',
|
330
|
+
java_code_option,
|
331
|
+
'-m provider',
|
332
|
+
"-u #{username.shellescape}",
|
333
|
+
"-p #{password.shellescape}",
|
334
|
+
'2>&1' # cause stderr to be written to stdout
|
335
|
+
].compact.join(' ')
|
336
|
+
end
|
300
337
|
end
|
301
338
|
|
302
339
|
def java_code_option
|
@@ -17,6 +17,13 @@ module FastlaneCore
|
|
17
17
|
return nil
|
18
18
|
end
|
19
19
|
|
20
|
+
# Fetches the app version from the given pkg file.
|
21
|
+
def self.fetch_app_build(path)
|
22
|
+
xml = self.fetch_distribution_xml_file(path)
|
23
|
+
return xml.elements['installer-gui-script/pkg-ref/bundle-version/bundle'].attributes['CFBundleVersion'] if xml
|
24
|
+
return nil
|
25
|
+
end
|
26
|
+
|
20
27
|
def self.fetch_distribution_xml_file(path)
|
21
28
|
Dir.mktmpdir do |dir|
|
22
29
|
Helper.backticks("xar -C #{dir.shellescape} -xf #{path.shellescape}")
|
@@ -321,7 +321,6 @@ module FastlaneCore
|
|
321
321
|
proj << "-project #{options[:project].shellescape}" if options[:project]
|
322
322
|
proj << "-configuration #{options[:configuration].shellescape}" if options[:configuration]
|
323
323
|
proj << "-xcconfig #{options[:xcconfig].shellescape}" if options[:xcconfig]
|
324
|
-
proj << "-derivedDataPath #{options[:derived_data_path].shellescape}" if options[:derived_data_path]
|
325
324
|
|
326
325
|
if FastlaneCore::Helper.xcode_at_least?('11.0') && options[:cloned_source_packages_path]
|
327
326
|
proj << "-clonedSourcePackagesDirPath #{options[:cloned_source_packages_path].shellescape}"
|
@@ -1,50 +1,50 @@
|
|
1
|
-
require_relative 'device'
|
2
1
|
require_relative 'module'
|
2
|
+
require_relative './device'
|
3
3
|
require 'deliver/app_screenshot'
|
4
4
|
|
5
5
|
module Frameit
|
6
6
|
module Color
|
7
|
-
MATTE_BLACK
|
8
|
-
SPACE_GRAY
|
9
|
-
ROSE_GOLD
|
10
|
-
CLEARLY_WHITE
|
11
|
-
JUST_BLACK
|
12
|
-
NOT_PINK
|
13
|
-
SILVER_TITANIUM
|
14
|
-
ARCTIC_SILVER
|
15
|
-
CORAL_BLUE
|
16
|
-
MAPLE_GOLD
|
17
|
-
MIDNIGHT_BLACK
|
18
|
-
MIDNIGHT_GREEN
|
19
|
-
ORCHID_GRAY
|
20
|
-
BURGUNDY_RED
|
21
|
-
LILAC_PURPLE
|
22
|
-
SUNRISE_GOLD
|
23
|
-
TITANIUM_GRAY
|
24
|
-
FLAMINGO_PINK
|
25
|
-
PRISM_BLACK
|
26
|
-
PRISM_BLUE
|
27
|
-
PRISM_GREEN
|
28
|
-
PRISM_WHITE
|
29
|
-
CERAMIC_WHITE
|
30
|
-
OH_SO_ORANGE
|
31
|
-
AURA_BLACK
|
32
|
-
AURA_GLOW
|
33
|
-
AURA_PINK
|
34
|
-
AURA_RED
|
35
|
-
AURA_WHITE
|
36
|
-
AURA_BLUE
|
37
|
-
CORAL
|
38
|
-
BLACK
|
39
|
-
WHITE
|
40
|
-
GOLD
|
41
|
-
SILVER
|
42
|
-
BLUE
|
43
|
-
RED
|
44
|
-
YELLOW
|
45
|
-
GREEN
|
46
|
-
PINK
|
47
|
-
PURPLE
|
7
|
+
MATTE_BLACK ||= "Matte Black"
|
8
|
+
SPACE_GRAY ||= "Space Gray"
|
9
|
+
ROSE_GOLD ||= "Rose Gold"
|
10
|
+
CLEARLY_WHITE ||= "Clearly White"
|
11
|
+
JUST_BLACK ||= "Just Black"
|
12
|
+
NOT_PINK ||= "Not Pink"
|
13
|
+
SILVER_TITANIUM ||= "Silver Titanium"
|
14
|
+
ARCTIC_SILVER ||= "Arctic Silver"
|
15
|
+
CORAL_BLUE ||= "Coral Blue"
|
16
|
+
MAPLE_GOLD ||= "Maple Gold"
|
17
|
+
MIDNIGHT_BLACK ||= "Midnight Black"
|
18
|
+
MIDNIGHT_GREEN ||= "Midnight Green"
|
19
|
+
ORCHID_GRAY ||= "Orchid Gray"
|
20
|
+
BURGUNDY_RED ||= "Burgundy Red"
|
21
|
+
LILAC_PURPLE ||= "Lilac Purple"
|
22
|
+
SUNRISE_GOLD ||= "Sunrise Gold"
|
23
|
+
TITANIUM_GRAY ||= "Titanium Gray"
|
24
|
+
FLAMINGO_PINK ||= "Flamingo Pink"
|
25
|
+
PRISM_BLACK ||= "Prism Black"
|
26
|
+
PRISM_BLUE ||= "Prism Blue"
|
27
|
+
PRISM_GREEN ||= "Prism Green"
|
28
|
+
PRISM_WHITE ||= "Prism White"
|
29
|
+
CERAMIC_WHITE ||= "Ceramic White"
|
30
|
+
OH_SO_ORANGE ||= "Oh So Orange"
|
31
|
+
AURA_BLACK ||= "Aura Black"
|
32
|
+
AURA_GLOW ||= "Aura Glow"
|
33
|
+
AURA_PINK ||= "Aura Pink"
|
34
|
+
AURA_RED ||= "Aura Red"
|
35
|
+
AURA_WHITE ||= "Aura White"
|
36
|
+
AURA_BLUE ||= "Aura Blue"
|
37
|
+
CORAL ||= "Coral"
|
38
|
+
BLACK ||= "Black"
|
39
|
+
WHITE ||= "White"
|
40
|
+
GOLD ||= "Gold"
|
41
|
+
SILVER ||= "Silver"
|
42
|
+
BLUE ||= "Blue"
|
43
|
+
RED ||= "Red"
|
44
|
+
YELLOW ||= "Yellow"
|
45
|
+
GREEN ||= "Green"
|
46
|
+
PINK ||= "Pink"
|
47
|
+
PURPLE ||= "Purple"
|
48
48
|
|
49
49
|
def self.all_colors
|
50
50
|
Color.constants.map { |c| Color.const_get(c).upcase.gsub(' ', '_') }
|
@@ -52,14 +52,14 @@ module Frameit
|
|
52
52
|
end
|
53
53
|
|
54
54
|
module Orientation
|
55
|
-
PORTRAIT
|
56
|
-
LANDSCAPE
|
55
|
+
PORTRAIT ||= "PORTRAIT"
|
56
|
+
LANDSCAPE ||= "LANDSCAPE"
|
57
57
|
end
|
58
58
|
|
59
59
|
module Platform
|
60
|
-
ANDROID
|
61
|
-
IOS
|
62
|
-
ANY
|
60
|
+
ANDROID ||= "ANDROID"
|
61
|
+
IOS ||= "IOS"
|
62
|
+
ANY ||= "ANY"
|
63
63
|
|
64
64
|
def self.all_platforms
|
65
65
|
Platform.constants.map { |c| Platform.const_get(c) }
|
@@ -75,67 +75,67 @@ module Frameit
|
|
75
75
|
end
|
76
76
|
|
77
77
|
module Devices
|
78
|
-
GOOGLE_PIXEL_3
|
79
|
-
GOOGLE_PIXEL_3_XL
|
78
|
+
GOOGLE_PIXEL_3 ||= Frameit::Device.new("google-pixel-3", "Google Pixel 3", 7, [[1080, 2160], [2160, 1080]], 443, Color::JUST_BLACK, Platform::ANDROID)
|
79
|
+
GOOGLE_PIXEL_3_XL ||= Frameit::Device.new("google-pixel-3-xl", "Google Pixel 3 XL", 7, [[1440, 2960], [2960, 1440]], 523, Color::JUST_BLACK, Platform::ANDROID)
|
80
80
|
# Google Pixel 4's priority should be higher than Samsung Galaxy S10+ (priority 8):
|
81
|
-
GOOGLE_PIXEL_4
|
82
|
-
GOOGLE_PIXEL_4_XL
|
83
|
-
HTC_ONE_A9
|
84
|
-
HTC_ONE_M8
|
85
|
-
HUAWEI_P8
|
86
|
-
MOTOROLA_MOTO_E
|
87
|
-
MOTOROLA_MOTO_G
|
88
|
-
NEXUS_4
|
89
|
-
NEXUS_5X
|
90
|
-
NEXUS_6P
|
91
|
-
NEXUS_9
|
92
|
-
SAMSUNG_GALAXY_GRAND_PRIME
|
93
|
-
SAMSUNG_GALAXY_NOTE_5
|
94
|
-
SAMSUNG_GALAXY_NOTE_10
|
95
|
-
SAMSUNG_GALAXY_NOTE_10_PLUS
|
96
|
-
SAMSUNG_GALAXY_S_DUOS
|
97
|
-
SAMSUNG_GALAXY_S3
|
98
|
-
SAMSUNG_GALAXY_S5
|
99
|
-
SAMSUNG_GALAXY_S7
|
100
|
-
SAMSUNG_GALAXY_S8
|
101
|
-
SAMSUNG_GALAXY_S9
|
102
|
-
SAMSUNG_GALAXY_S10
|
103
|
-
SAMSUNG_GALAXY_S10_PLUS
|
104
|
-
XIAOMI_MI_MIX_ALPHA
|
105
|
-
IPHONE_5S
|
106
|
-
IPHONE_5C
|
107
|
-
IPHONE_SE
|
108
|
-
IPHONE_6S
|
109
|
-
IPHONE_6S_PLUS
|
110
|
-
IPHONE_7
|
111
|
-
IPHONE_7_PLUS
|
112
|
-
IPHONE_8
|
113
|
-
IPHONE_8_PLUS
|
114
|
-
IPHONE_X
|
115
|
-
IPHONE_XS
|
116
|
-
IPHONE_XR
|
117
|
-
IPHONE_XS_MAX
|
118
|
-
IPHONE_11
|
119
|
-
IPHONE_11_PRO
|
120
|
-
IPHONE_11_PRO_MAX
|
121
|
-
IPAD_10_2
|
122
|
-
IPAD_AIR_2
|
123
|
-
IPAD_AIR_2019
|
124
|
-
IPAD_MINI_4
|
125
|
-
IPAD_MINI_2019
|
81
|
+
GOOGLE_PIXEL_4 ||= Frameit::Device.new("google-pixel-4", "Google Pixel 4", 9, [[1080, 2280], [2280, 1080]], 444, Color::JUST_BLACK, Platform::ANDROID)
|
82
|
+
GOOGLE_PIXEL_4_XL ||= Frameit::Device.new("google-pixel-4-xl", "Google Pixel 4 XL", 9, [[1440, 3040], [3040, 1440]], 537, Color::JUST_BLACK, Platform::ANDROID)
|
83
|
+
HTC_ONE_A9 ||= Frameit::Device.new("htc-one-a9", "HTC One A9", 6, [[1080, 1920], [1920, 1080]], 441, Color::BLACK, Platform::ANDROID)
|
84
|
+
HTC_ONE_M8 ||= Frameit::Device.new("htc-one-m8", "HTC One M8", 3, [[1080, 1920], [1920, 1080]], 441, Color::BLACK, Platform::ANDROID)
|
85
|
+
HUAWEI_P8 ||= Frameit::Device.new("huawei-p8", "Huawei P8", 5, [[1080, 1920], [1920, 1080]], 424, Color::BLACK, Platform::ANDROID)
|
86
|
+
MOTOROLA_MOTO_E ||= Frameit::Device.new("motorola-moto-e", "Motorola Moto E", 3, [[540, 960], [960, 540]], 245, Color::BLACK, Platform::ANDROID)
|
87
|
+
MOTOROLA_MOTO_G ||= Frameit::Device.new("motorola-moto-g", "Motorola Moto G", 4, [[1080, 1920], [1920, 1080]], 401, nil, Platform::ANDROID, nil)
|
88
|
+
NEXUS_4 ||= Frameit::Device.new("nexus-4", "Nexus 4", 7, [[768, 1280], [1820, 768]], 318, nil, Platform::ANDROID)
|
89
|
+
NEXUS_5X ||= Frameit::Device.new("nexus-5x", "Nexus 5X", 7, [[1080, 1920], [1920, 1080]], 423, nil, Platform::ANDROID)
|
90
|
+
NEXUS_6P ||= Frameit::Device.new("nexus-6p", "Nexus 6P", 7, [[1440, 2560], [2560, 1440]], 518, nil, Platform::ANDROID)
|
91
|
+
NEXUS_9 ||= Frameit::Device.new("nexus-9", "Nexus 9", 7, [[1536, 2048], [2048, 1536]], 281, nil, Platform::ANDROID)
|
92
|
+
SAMSUNG_GALAXY_GRAND_PRIME ||= Frameit::Device.new("samsung-galaxy-grand-prime", "Samsung Galaxy Grand Prime", 5, [[540, 960], [960, 540]], 220, Color::BLACK, Platform::ANDROID)
|
93
|
+
SAMSUNG_GALAXY_NOTE_5 ||= Frameit::Device.new("samsung-galaxy-note-5", "Samsung Galaxy Note 5", 5, [[1440, 2560], [2560, 1440]], 518, Color::BLACK, Platform::ANDROID)
|
94
|
+
SAMSUNG_GALAXY_NOTE_10 ||= Frameit::Device.new("samsung-galaxy-note-10", "Samsung Galaxy Note 10", 6, [[1080, 2280], [2280, 1080]], 401, Color::AURA_BLACK, Platform::ANDROID)
|
95
|
+
SAMSUNG_GALAXY_NOTE_10_PLUS ||= Frameit::Device.new("samsung-galaxy-note-10-plus", "Samsung Galaxy Note 10+", 7, [[1440, 3040], [3040, 1440]], 498, Color::AURA_BLACK, Platform::ANDROID)
|
96
|
+
SAMSUNG_GALAXY_S_DUOS ||= Frameit::Device.new("samsung-galaxy-s-duos", "Samsung Galaxy S Duos", 3, [[480, 800], [800, 480]], 233, nil, Platform::ANDROID)
|
97
|
+
SAMSUNG_GALAXY_S3 ||= Frameit::Device.new("samsung-galaxy-s3", "Samsung Galaxy S3", 3, [[720, 1280], [1280, 720]], 306, nil, Platform::ANDROID)
|
98
|
+
SAMSUNG_GALAXY_S5 ||= Frameit::Device.new("samsung-galaxy-s5", "Samsung Galaxy S5", 3, [[1080, 1920], [1920, 1080]], 432, Color::BLACK, Platform::ANDROID)
|
99
|
+
SAMSUNG_GALAXY_S7 ||= Frameit::Device.new("samsung-galaxy-s7", "Samsung Galaxy S7", 4, [[1440, 2560], [2560, 1440]], 577, Color::BLACK, Platform::ANDROID)
|
100
|
+
SAMSUNG_GALAXY_S8 ||= Frameit::Device.new("samsung-galaxy-s8", "Samsung Galaxy S8", 5, [[1440, 2960], [2960, 1440]], 570, Color::MIDNIGHT_BLACK, Platform::ANDROID)
|
101
|
+
SAMSUNG_GALAXY_S9 ||= Frameit::Device.new("samsung-galaxy-s9", "Samsung Galaxy S9", 6, [[1440, 2960], [2960, 1440]], 570, Color::MIDNIGHT_BLACK, Platform::ANDROID)
|
102
|
+
SAMSUNG_GALAXY_S10 ||= Frameit::Device.new("samsung-galaxy-s10", "Samsung Galaxy S10", 7, [[1440, 3040], [3040, 1440]], 550, Color::PRISM_BLACK, Platform::ANDROID)
|
103
|
+
SAMSUNG_GALAXY_S10_PLUS ||= Frameit::Device.new("samsung-galaxy-s10-plus", "Samsung Galaxy S10+", 8, [[1440, 3040], [3040, 1440]], 522, Color::PRISM_BLACK, Platform::ANDROID)
|
104
|
+
XIAOMI_MI_MIX_ALPHA ||= Frameit::Device.new("xiaomi-mi-mix-alpha", "Xiaomi Mi Mix Alpha", 1, [[2088, 2250], [2250, 2088]], 388, nil, Platform::ANDROID)
|
105
|
+
IPHONE_5S ||= Frameit::Device.new("iphone-5s", "Apple iPhone 5s", 2, [[640, 1096], [640, 1136], [1136, 600], [1136, 640]], 326, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_40, :use_legacy_iphone5s)
|
106
|
+
IPHONE_5C ||= Frameit::Device.new("iphone-5c", "Apple iPhone 5c", 2, [[640, 1136], [1136, 640]], 326, Color::WHITE)
|
107
|
+
IPHONE_SE ||= Frameit::Device.new("iphone-se", "Apple iPhone SE", 3, [[640, 1096], [640, 1136], [1136, 600], [1136, 640]], 326, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_40)
|
108
|
+
IPHONE_6S ||= Frameit::Device.new("iphone-6s", "Apple iPhone 6s", 4, [[750, 1334], [1334, 750]], 326, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_47, :use_legacy_iphone6s)
|
109
|
+
IPHONE_6S_PLUS ||= Frameit::Device.new("iphone-6s-plus", "Apple iPhone 6s Plus", 4, [[1242, 2208], [2208, 1242]], 401, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_55, :use_legacy_iphone6s)
|
110
|
+
IPHONE_7 ||= Frameit::Device.new("iphone-7", "Apple iPhone 7", 5, [[750, 1334], [1334, 750]], 326, Color::MATTE_BLACK, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_47, :use_legacy_iphone7)
|
111
|
+
IPHONE_7_PLUS ||= Frameit::Device.new("iphone-7-plus", "Apple iPhone 7 Plus", 5, [[1242, 2208], [2208, 1242]], 401, Color::MATTE_BLACK, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_55, :use_legacy_iphone7)
|
112
|
+
IPHONE_8 ||= Frameit::Device.new("iphone-8", "Apple iPhone 8", 6, [[750, 1334], [1334, 750]], 326, Color::SPACE_GRAY)
|
113
|
+
IPHONE_8_PLUS ||= Frameit::Device.new("iphone-8-plus", "Apple iPhone 8 Plus", 6, [[1080, 1920], [1920, 1080]], 401, Color::SPACE_GRAY)
|
114
|
+
IPHONE_X ||= Frameit::Device.new("iphone-X", "Apple iPhone X", 7, [[1125, 2436], [2436, 1125]], 458, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_58, :use_legacy_iphonex)
|
115
|
+
IPHONE_XS ||= Frameit::Device.new("iphone-XS", "Apple iPhone XS", 8, [[1125, 2436], [2436, 1125]], 458, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_58, :use_legacy_iphonexs)
|
116
|
+
IPHONE_XR ||= Frameit::Device.new("iphone-XR", "Apple iPhone XR", 8, [[828, 1792], [1792, 828]], 326, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_61, :use_legacy_iphonexr)
|
117
|
+
IPHONE_XS_MAX ||= Frameit::Device.new("iphone-XS-Max", "Apple iPhone XS Max", 8, [[1242, 2688], [2688, 1242]], 458, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_65, :use_legacy_iphonexsmax)
|
118
|
+
IPHONE_11 ||= Frameit::Device.new("iphone-11", "Apple iPhone 11", 9, [[828, 1792], [1792, 828]], 326, Color::BLACK, Platform::IOS)
|
119
|
+
IPHONE_11_PRO ||= Frameit::Device.new("iphone-11-pro", "Apple iPhone 11 Pro", 9, [[1125, 2436], [2436, 1125]], 458, Color::SPACE_GRAY, Platform::IOS)
|
120
|
+
IPHONE_11_PRO_MAX ||= Frameit::Device.new("iphone11-pro-max", "Apple iPhone 11 Pro Max", 9, [[1242, 2688], [2688, 1242]], 458, Color::SPACE_GRAY, Platform::IOS)
|
121
|
+
IPAD_10_2 ||= Frameit::Device.new("ipad-10-2", "Apple iPad 10.2", 1, [[1620, 2160], [2160, 1620]], 264, Color::SPACE_GRAY, Platform::IOS)
|
122
|
+
IPAD_AIR_2 ||= Frameit::Device.new("ipad-air-2", "Apple iPad Air 2", 1, [[1536, 2048], [2048, 1536]], 264, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_IPAD)
|
123
|
+
IPAD_AIR_2019 ||= Frameit::Device.new("ipad-air-2019", "Apple iPad Air (2019)", 2, [[1668, 2224], [2224, 1668]], 265, Color::SPACE_GRAY, Platform::IOS)
|
124
|
+
IPAD_MINI_4 ||= Frameit::Device.new("ipad-mini-4", "Apple iPad Mini 4", 2, [[1536, 2048], [2048, 1536]], 324, Color::SPACE_GRAY)
|
125
|
+
IPAD_MINI_2019 ||= Frameit::Device.new("ipad-mini-2019", "Apple iPad Mini (2019)", 3, [[1536, 2048], [2048, 1536]], 324, Color::SPACE_GRAY)
|
126
126
|
# this is 1st or 2nd gen of iPad Pro 12.9:
|
127
|
-
IPAD_PRO
|
127
|
+
IPAD_PRO ||= Frameit::Device.new("ipad-pro", "Apple iPad Pro", 3, [[2048, 2732], [2732, 2048]], 264, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_IPAD_PRO)
|
128
128
|
# 3rd generation:
|
129
|
-
IPAD_PRO_12_9
|
129
|
+
IPAD_PRO_12_9 ||= Frameit::Device.new("ipadPro129", "Apple iPad Pro (12.9-inch) (3rd generation)", 4, [[2048, 2732], [2732, 2048]], 264, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_IPAD_PRO_12_9)
|
130
130
|
# 4th generation:
|
131
|
-
IPAD_PRO_12_9_4
|
131
|
+
IPAD_PRO_12_9_4 ||= Frameit::Device.new("ipadPro129", "Apple iPad Pro (12.9-inch) (4th generation)", 5, [[2048, 2732], [2732, 2048]], 264, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_IPAD_PRO_12_9)
|
132
132
|
# iPad Pro (10.5-inch) is not in frameit-frames repo, but must be included so that we are backward compatible with PR #15373
|
133
133
|
# priority must be lower so that users who didn't copy the frame to their frameit frames folder will not get an error
|
134
134
|
# ID and formatted name must be exactly as specified so that device.detect_device() will select this device if the filename includes them
|
135
|
-
IPAD_PRO_10_5
|
136
|
-
IPAD_PRO_11
|
135
|
+
IPAD_PRO_10_5 ||= Frameit::Device.new("ipad105", "Apple iPad Pro (10.5-inch)", 1, [[1668, 2224], [2224, 1668]], 265, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_IPAD_10_5)
|
136
|
+
IPAD_PRO_11 ||= Frameit::Device.new("ipadPro11", "Apple iPad Pro (11-inch)", 1, [[1668, 2388], [2388, 1668]], 265, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::IOS_IPAD_11)
|
137
137
|
|
138
|
-
MAC
|
138
|
+
MAC ||= Frameit::Device.new("mac", "Apple MacBook", 0, [[1280, 800], [1440, 900], [2560, 1600], [2880, 1800]], nil, Color::SPACE_GRAY, Platform::IOS, Deliver::AppScreenshot::ScreenSize::MAC)
|
139
139
|
|
140
140
|
def self.all_device_names_without_apple
|
141
141
|
Devices.constants.map { |c| Devices.const_get(c).formatted_name_without_apple }
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spaceship'
|
2
2
|
require 'spaceship/tunes/tunes'
|
3
|
+
require 'fastlane_core/languages'
|
3
4
|
require_relative 'module'
|
4
|
-
require_relative 'available_default_languages'
|
5
5
|
|
6
6
|
module Produce
|
7
7
|
class ItunesConnect
|
@@ -18,24 +18,27 @@ module Produce
|
|
18
18
|
def create_new_app
|
19
19
|
application = fetch_application
|
20
20
|
if application
|
21
|
-
UI.success("App '#{Produce.config[:app_identifier]}' already exists (#{application.
|
21
|
+
UI.success("App '#{Produce.config[:app_identifier]}' already exists (#{application.id}), nothing to do on App Store Connect")
|
22
22
|
# Nothing to do here
|
23
23
|
else
|
24
24
|
UI.success("Creating new app '#{Produce.config[:app_name]}' on App Store Connect")
|
25
25
|
|
26
26
|
platforms = Produce.config[:platforms] || [Produce.config[:platform]]
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
sku: Produce.config[:sku].to_s, # might be an int
|
32
|
-
bundle_id: app_identifier,
|
33
|
-
bundle_id_suffix: Produce.config[:bundle_identifier_suffix],
|
34
|
-
company_name: Produce.config[:company_name],
|
35
|
-
platforms: platforms,
|
36
|
-
itunes_connect_users: Produce.config[:itc_users])
|
28
|
+
platforms = platforms.map do |platform|
|
29
|
+
Spaceship::ConnectAPI::Platform.map(platform)
|
30
|
+
end
|
37
31
|
|
38
|
-
|
32
|
+
# Produce.config[:company_name]
|
33
|
+
# Produce.config[:itc_users]
|
34
|
+
application = Spaceship::ConnectAPI::App.create(
|
35
|
+
name: Produce.config[:app_name],
|
36
|
+
version_string: Produce.config[:app_version] || "1.0",
|
37
|
+
sku: Produce.config[:sku].to_s,
|
38
|
+
primary_locale: language,
|
39
|
+
bundle_id: app_identifier,
|
40
|
+
platforms: platforms
|
41
|
+
)
|
39
42
|
|
40
43
|
application = fetch_application
|
41
44
|
counter = 0
|
@@ -57,10 +60,10 @@ module Produce
|
|
57
60
|
application.ensure_version!(Produce.config[:app_version], platform: platform) if Produce.config[:app_version]
|
58
61
|
end
|
59
62
|
|
60
|
-
UI.success("Successfully created new app '#{Produce.config[:app_name]}' on App Store Connect with ID #{application.
|
63
|
+
UI.success("Successfully created new app '#{Produce.config[:app_name]}' on App Store Connect with ID #{application.id}")
|
61
64
|
end
|
62
65
|
|
63
|
-
return
|
66
|
+
return application.id
|
64
67
|
end
|
65
68
|
|
66
69
|
private
|
@@ -70,7 +73,7 @@ module Produce
|
|
70
73
|
end
|
71
74
|
|
72
75
|
def fetch_application
|
73
|
-
Spaceship::
|
76
|
+
Spaceship::ConnectAPI::App.find(@full_bundle_identifier)
|
74
77
|
end
|
75
78
|
|
76
79
|
def wildcard_bundle?
|
@@ -82,16 +85,24 @@ module Produce
|
|
82
85
|
end
|
83
86
|
|
84
87
|
# Makes sure to get the value for the language
|
85
|
-
# Instead of using the user's value `UK English` spaceship should send
|
86
|
-
# `English_UK` to the server
|
88
|
+
# Instead of using the user's value `UK English` spaceship should send `en-UK`
|
87
89
|
def language
|
88
90
|
@language = Produce.config[:language]
|
89
91
|
|
90
|
-
|
91
|
-
|
92
|
+
unless FastlaneCore::Languages::ALL_LANGUAGES.include?(@language)
|
93
|
+
mapped_language = Spaceship::Tunes::LanguageConverter.from_standard_to_itc_locale(@language)
|
94
|
+
if mapped_language.to_s.empty?
|
95
|
+
message = [
|
96
|
+
"Sending language name is deprecated. Could not map '#{@language}' to a locale.",
|
97
|
+
"Please enter one of available languages: #{FastlaneCore::Languages::ALL_LANGUAGES}"
|
98
|
+
].join("\n")
|
99
|
+
UI.user_error!(message)
|
100
|
+
end
|
101
|
+
|
102
|
+
UI.deprecated("Sending language name is deprecated. '#{@language}' has been mapped to '#{mapped_language}'.")
|
103
|
+
UI.deprecated("Please enter one of available languages: #{FastlaneCore::Languages::ALL_LANGUAGES}")
|
92
104
|
|
93
|
-
|
94
|
-
UI.user_error!("Please enter one of available languages: #{AvailableDefaultLanguages.all_languages}")
|
105
|
+
@language = mapped_language
|
95
106
|
end
|
96
107
|
|
97
108
|
return @language
|