fastlane 2.148.0 → 2.150.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +86 -86
- data/deliver/lib/deliver.rb +0 -1
- data/deliver/lib/deliver/app_screenshot.rb +28 -27
- 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 +112 -37
- data/fastlane/lib/assets/s3_html_template.erb +1 -1
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +42 -2
- 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/hipchat.rb +1 -1
- data/fastlane/lib/fastlane/actions/set_changelog.rb +23 -20
- data/fastlane/lib/fastlane/actions/slack.rb +2 -2
- data/fastlane/lib/fastlane/actions/slather.rb +8 -1
- data/fastlane/lib/fastlane/actions/spm.rb +7 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +2 -33
- data/fastlane/lib/fastlane/documentation/actions_list.rb +1 -1
- data/fastlane/lib/fastlane/lane.rb +3 -3
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +1 -1
- data/fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml +29 -0
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +22 -5
- 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 +79 -22
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme +3 -9
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.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 +2 -2
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +9 -1
- 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/pkg_file_analyser.rb +7 -0
- data/frameit/lib/frameit/device_types.rb +100 -100
- data/gym/lib/gym/options.rb +1 -1
- data/match/lib/match/nuke.rb +21 -16
- data/match/lib/match/storage/git_storage.rb +4 -0
- data/match/lib/match/storage/google_cloud_storage.rb +4 -0
- data/match/lib/match/storage/interface.rb +4 -0
- data/match/lib/match/storage/s3_storage.rb +4 -0
- data/produce/lib/produce/itunes_connect.rb +32 -21
- data/produce/lib/produce/options.rb +3 -3
- data/scan/lib/scan/options.rb +1 -1
- data/scan/lib/scan/test_result_parser.rb +9 -2
- 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 +11 -1
- data/snapshot/lib/snapshot/reports_generator.rb +8 -1
- data/snapshot/lib/snapshot/test_command_generator.rb +8 -3
- data/spaceship/lib/spaceship/.DS_Store +0 -0
- data/spaceship/lib/spaceship/client.rb +13 -4
- 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 +66 -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 +117 -3
- data/spaceship/lib/spaceship/connect_api/models/app_category.rb +94 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +66 -0
- data/spaceship/lib/spaceship/connect_api/models/app_info_localization.rb +38 -0
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +77 -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 +81 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +97 -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 +182 -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 +832 -0
- data/spaceship/lib/spaceship/errors.rb +3 -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 +50 -42
- data/deliver/lib/deliver/upload_assets.rb +0 -27
- data/snapshot/lib/snapshot/.options.rb.swp +0 -0
- data/snapshot/lib/snapshot/.test_command_generator_base.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)
|
@@ -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}")
|
@@ -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 }
|
data/gym/lib/gym/options.rb
CHANGED
@@ -155,7 +155,7 @@ module Gym
|
|
155
155
|
end),
|
156
156
|
FastlaneCore::ConfigItem.new(key: :installer_cert_name,
|
157
157
|
env_name: "GYM_INSTALLER_CERT_NAME",
|
158
|
-
description: "Full name of 3rd Party Mac Developer Installer or
|
158
|
+
description: "Full name of 3rd Party Mac Developer Installer or Developer ID Installer certificate. Example: `3rd Party Mac Developer Installer: Your Company (ABC1234XWYZ)`",
|
159
159
|
type: String,
|
160
160
|
optional: true),
|
161
161
|
# Very optional
|
data/match/lib/match/nuke.rb
CHANGED
@@ -27,6 +27,8 @@ module Match
|
|
27
27
|
|
28
28
|
update_optional_values_depending_on_storage_type(params)
|
29
29
|
|
30
|
+
spaceship_login
|
31
|
+
|
30
32
|
self.storage = Storage.for_mode(params[:storage_mode], {
|
31
33
|
git_url: params[:git_url],
|
32
34
|
shallow_clone: params[:shallow_clone],
|
@@ -41,7 +43,8 @@ module Match
|
|
41
43
|
s3_region: params[:s3_region].to_s,
|
42
44
|
s3_access_key: params[:s3_access_key].to_s,
|
43
45
|
s3_secret_access_key: params[:s3_secret_access_key].to_s,
|
44
|
-
s3_bucket: params[:s3_bucket].to_s
|
46
|
+
s3_bucket: params[:s3_bucket].to_s,
|
47
|
+
team_id: params[:team_id] || Spaceship.client.team_id
|
45
48
|
})
|
46
49
|
self.storage.download
|
47
50
|
|
@@ -93,17 +96,7 @@ module Match
|
|
93
96
|
end
|
94
97
|
end
|
95
98
|
|
96
|
-
|
97
|
-
def prepare_list
|
98
|
-
UI.message("Fetching certificates and profiles...")
|
99
|
-
cert_type = Match.cert_type_sym(type)
|
100
|
-
cert_types = [cert_type]
|
101
|
-
|
102
|
-
prov_types = []
|
103
|
-
prov_types = [:development] if cert_type == :development
|
104
|
-
prov_types = [:appstore, :adhoc, :developer_id] if cert_type == :distribution
|
105
|
-
prov_types = [:enterprise] if cert_type == :enterprise
|
106
|
-
|
99
|
+
def spaceship_login
|
107
100
|
Spaceship.login(params[:username])
|
108
101
|
Spaceship.select_team(team_id: params[:team_id], team_name: params[:team_name])
|
109
102
|
|
@@ -116,6 +109,18 @@ module Match
|
|
116
109
|
|
117
110
|
UI.user_error!("Enterprise account nuke cancelled") unless UI.confirm("Do you really want to nuke your Enterprise account?")
|
118
111
|
end
|
112
|
+
end
|
113
|
+
|
114
|
+
# Collect all the certs/profiles
|
115
|
+
def prepare_list
|
116
|
+
UI.message("Fetching certificates and profiles...")
|
117
|
+
cert_type = Match.cert_type_sym(type)
|
118
|
+
cert_types = [cert_type]
|
119
|
+
|
120
|
+
prov_types = []
|
121
|
+
prov_types = [:development] if cert_type == :development
|
122
|
+
prov_types = [:appstore, :adhoc, :developer_id] if cert_type == :distribution
|
123
|
+
prov_types = [:enterprise] if cert_type == :enterprise
|
119
124
|
|
120
125
|
# Get all iOS and macOS profile
|
121
126
|
self.profiles = []
|
@@ -141,15 +146,15 @@ module Match
|
|
141
146
|
certs = []
|
142
147
|
keys = []
|
143
148
|
cert_types.each do |ct|
|
144
|
-
certs +=
|
145
|
-
keys +=
|
149
|
+
certs += self.storage.list_files(file_name: ct.to_s, file_ext: "cer")
|
150
|
+
keys += self.storage.list_files(file_name: ct.to_s, file_ext: "p12")
|
146
151
|
end
|
147
152
|
|
148
153
|
# Finds all the iOS and macOS profofiles in the file storage
|
149
154
|
profiles = []
|
150
155
|
prov_types.each do |prov_type|
|
151
|
-
profiles +=
|
152
|
-
profiles +=
|
156
|
+
profiles += self.storage.list_files(file_name: prov_type.to_s, file_ext: "mobileprovision")
|
157
|
+
profiles += self.storage.list_files(file_name: prov_type.to_s, file_ext: "provisionprofile")
|
153
158
|
end
|
154
159
|
|
155
160
|
self.files = certs + keys + profiles
|
@@ -152,6 +152,10 @@ module Match
|
|
152
152
|
return "git_url(\"#{url}\")"
|
153
153
|
end
|
154
154
|
|
155
|
+
def list_files(file_name: "", file_ext: "")
|
156
|
+
Dir[File.join(working_directory, "**", file_name, "*.#{file_ext}")]
|
157
|
+
end
|
158
|
+
|
155
159
|
private
|
156
160
|
|
157
161
|
# Create and checkout an specific branch in the git repo
|
@@ -180,6 +180,10 @@ module Match
|
|
180
180
|
false
|
181
181
|
end
|
182
182
|
|
183
|
+
def list_files(file_name: "", file_ext: "")
|
184
|
+
Dir[File.join(working_directory, self.team_id, "**", file_name, "*.#{file_ext}")]
|
185
|
+
end
|
186
|
+
|
183
187
|
def generate_matchfile_content
|
184
188
|
return "google_cloud_bucket_name(\"#{self.bucket_name}\")"
|
185
189
|
end
|
@@ -96,6 +96,10 @@ module Match
|
|
96
96
|
not_implemented(__method__)
|
97
97
|
end
|
98
98
|
|
99
|
+
def list_files(file_name: "", file_ext: "")
|
100
|
+
not_implemented(__method__)
|
101
|
+
end
|
102
|
+
|
99
103
|
# Implement this for the `fastlane match init` command
|
100
104
|
# This method must return the content of the Matchfile
|
101
105
|
# that should be generated
|
@@ -139,6 +139,10 @@ module Match
|
|
139
139
|
false
|
140
140
|
end
|
141
141
|
|
142
|
+
def list_files(file_name: "", file_ext: "")
|
143
|
+
Dir[File.join(working_directory, self.team_id, "**", file_name, "*.#{file_ext}")]
|
144
|
+
end
|
145
|
+
|
142
146
|
# Implement this for the `fastlane match init` command
|
143
147
|
# This method must return the content of the Matchfile
|
144
148
|
# that should be generated
|
@@ -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
|