fastlane 2.153.1 → 2.154.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +76 -76
- data/deliver/lib/deliver/setup.rb +1 -3
- data/deliver/lib/deliver/upload_metadata.rb +21 -4
- data/fastlane/lib/fastlane/actions/carthage.rb +7 -0
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +21 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +3 -3
- data/fastlane/lib/fastlane/actions/git_pull.rb +13 -2
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +29 -7
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +5 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +5 -1
- data/fastlane_core/lib/fastlane_core/device_manager.rb +7 -2
- data/frameit/lib/frameit/editor.rb +3 -1
- data/gym/lib/gym/module.rb +8 -0
- data/gym/lib/gym/runner.rb +16 -9
- data/match/lib/match/options.rb +9 -2
- data/match/lib/match/runner.rb +1 -0
- data/match/lib/match/storage/git_storage.rb +16 -2
- data/pilot/lib/pilot/build_manager.rb +9 -0
- data/pilot/lib/pilot/options.rb +1 -1
- data/snapshot/lib/snapshot/options.rb +5 -0
- data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/app.rb +19 -1
- metadata +17 -22
- data/deliver/lib/deliver/.upload_metadata.rb.swp +0 -0
- data/frameit/lib/frameit/.editor.rb.swp +0 -0
- data/spaceship/lib/spaceship/connect_api/.model.rb.swp +0 -0
- data/spaceship/lib/spaceship/connect_api/models/.app_store_review_detail.rb.swp +0 -0
- data/spaceship/lib/spaceship/connect_api/models/.app_store_version.rb.swp +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70c5a33bcf7a92f427b7c09b26e1269a00807a2975f484c6be1159df830a0ffb
|
4
|
+
data.tar.gz: 36610a4cd508042f7a9632fe30088e84609b805bb6722f5b2752589a69cce12a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6195726b19d99f0d0b7b8980e2facb389f18189bbba530d09d7dabdc60c6959e1a00b7bc4c4f8c43a0b6bdfc4211d580909ef8e941a83fb061583bae1eec0cae
|
7
|
+
data.tar.gz: f0854bb26324cb229428f971159d2b7713fb137ef5c37dff1eee843bb52652afc3bf4621bf98aa0438b94fa476971bd064546ad4a5780108dba4475f438c74a8
|
data/README.md
CHANGED
@@ -34,23 +34,29 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
34
34
|
<!-- This table is regenerated and resorted on each release -->
|
35
35
|
<table id='team'>
|
36
36
|
<tr>
|
37
|
-
<td id='
|
38
|
-
<a href='https://github.com/
|
39
|
-
<img src='https://github.com/
|
37
|
+
<td id='jérôme-lacoste'>
|
38
|
+
<a href='https://github.com/lacostej'>
|
39
|
+
<img src='https://github.com/lacostej.png?size=140'>
|
40
40
|
</a>
|
41
|
-
<h4 align='center'><a href='https://twitter.com/
|
41
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
42
42
|
</td>
|
43
|
-
<td id='
|
44
|
-
<a href='https://github.com/
|
45
|
-
<img src='https://github.com/
|
43
|
+
<td id='kohki-miki'>
|
44
|
+
<a href='https://github.com/giginet'>
|
45
|
+
<img src='https://github.com/giginet.png?size=140'>
|
46
46
|
</a>
|
47
|
-
<h4 align='center'><a href='https://twitter.com/
|
47
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
48
48
|
</td>
|
49
|
-
<td id='
|
50
|
-
<a href='https://github.com/
|
51
|
-
<img src='https://github.com/
|
49
|
+
<td id='maksym-grebenets'>
|
50
|
+
<a href='https://github.com/mgrebenets'>
|
51
|
+
<img src='https://github.com/mgrebenets.png?size=140'>
|
52
52
|
</a>
|
53
|
-
<h4 align='center'><a href='https://twitter.com/
|
53
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
54
|
+
</td>
|
55
|
+
<td id='daniel-jankowski'>
|
56
|
+
<a href='https://github.com/mollyIV'>
|
57
|
+
<img src='https://github.com/mollyIV.png?size=140'>
|
58
|
+
</a>
|
59
|
+
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
54
60
|
</td>
|
55
61
|
<td id='olivier-halligon'>
|
56
62
|
<a href='https://github.com/AliSoftware'>
|
@@ -58,31 +64,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
58
64
|
</a>
|
59
65
|
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
60
66
|
</td>
|
61
|
-
<td id='aaron-brager'>
|
62
|
-
<a href='https://github.com/getaaron'>
|
63
|
-
<img src='https://github.com/getaaron.png?size=140'>
|
64
|
-
</a>
|
65
|
-
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
66
|
-
</td>
|
67
67
|
</tr>
|
68
68
|
<tr>
|
69
|
-
<td id='
|
70
|
-
<a href='https://github.com/
|
71
|
-
<img src='https://github.com/
|
69
|
+
<td id='stefan-natchev'>
|
70
|
+
<a href='https://github.com/snatchev'>
|
71
|
+
<img src='https://github.com/snatchev.png?size=140'>
|
72
72
|
</a>
|
73
|
-
<h4 align='center'>
|
73
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
74
74
|
</td>
|
75
|
-
<td id='
|
76
|
-
<a href='https://github.com/
|
77
|
-
<img src='https://github.com/
|
75
|
+
<td id='jan-piotrowski'>
|
76
|
+
<a href='https://github.com/janpio'>
|
77
|
+
<img src='https://github.com/janpio.png?size=140'>
|
78
78
|
</a>
|
79
|
-
<h4 align='center'><a href='https://twitter.com/
|
79
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
80
80
|
</td>
|
81
|
-
<td id='
|
82
|
-
<a href='https://github.com/
|
83
|
-
<img src='https://github.com/
|
81
|
+
<td id='helmut-januschka'>
|
82
|
+
<a href='https://github.com/hjanuschka'>
|
83
|
+
<img src='https://github.com/hjanuschka.png?size=140'>
|
84
84
|
</a>
|
85
|
-
<h4 align='center'><a href='https://twitter.com/
|
85
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
86
86
|
</td>
|
87
87
|
<td id='fumiya-nakamura'>
|
88
88
|
<a href='https://github.com/nafu'>
|
@@ -90,83 +90,83 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
90
90
|
</a>
|
91
91
|
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
92
92
|
</td>
|
93
|
-
<td id='
|
94
|
-
<a href='https://github.com/
|
95
|
-
<img src='https://github.com/
|
93
|
+
<td id='iulian-onofrei'>
|
94
|
+
<a href='https://github.com/revolter'>
|
95
|
+
<img src='https://github.com/revolter.png?size=140'>
|
96
96
|
</a>
|
97
|
-
<h4 align='center'><a href='https://twitter.com/
|
97
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
98
98
|
</td>
|
99
99
|
</tr>
|
100
100
|
<tr>
|
101
|
+
<td id='danielle-tomlinson'>
|
102
|
+
<a href='https://github.com/endocrimes'>
|
103
|
+
<img src='https://github.com/endocrimes.png?size=140'>
|
104
|
+
</a>
|
105
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
106
|
+
</td>
|
101
107
|
<td id='josh-holtz'>
|
102
108
|
<a href='https://github.com/joshdholtz'>
|
103
109
|
<img src='https://github.com/joshdholtz.png?size=140'>
|
104
110
|
</a>
|
105
111
|
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
106
112
|
</td>
|
107
|
-
<td id='
|
108
|
-
<a href='https://github.com/
|
109
|
-
<img src='https://github.com/
|
110
|
-
</a>
|
111
|
-
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
112
|
-
</td>
|
113
|
-
<td id='helmut-januschka'>
|
114
|
-
<a href='https://github.com/hjanuschka'>
|
115
|
-
<img src='https://github.com/hjanuschka.png?size=140'>
|
113
|
+
<td id='jimmy-dee'>
|
114
|
+
<a href='https://github.com/jdee'>
|
115
|
+
<img src='https://github.com/jdee.png?size=140'>
|
116
116
|
</a>
|
117
|
-
<h4 align='center'
|
117
|
+
<h4 align='center'>Jimmy Dee</h4>
|
118
118
|
</td>
|
119
|
-
<td id='
|
120
|
-
<a href='https://github.com/
|
121
|
-
<img src='https://github.com/
|
119
|
+
<td id='joshua-liebowitz'>
|
120
|
+
<a href='https://github.com/taquitos'>
|
121
|
+
<img src='https://github.com/taquitos.png?size=140'>
|
122
122
|
</a>
|
123
|
-
<h4 align='center'><a href='https://twitter.com/
|
123
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
124
124
|
</td>
|
125
|
-
<td id='
|
126
|
-
<a href='https://github.com/
|
127
|
-
<img src='https://github.com/
|
125
|
+
<td id='andrew-mcburney'>
|
126
|
+
<a href='https://github.com/armcburney'>
|
127
|
+
<img src='https://github.com/armcburney.png?size=140'>
|
128
128
|
</a>
|
129
|
-
<h4 align='center'><a href='https://twitter.com/
|
129
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
130
130
|
</td>
|
131
131
|
</tr>
|
132
132
|
<tr>
|
133
|
-
<td id='
|
134
|
-
<a href='https://github.com/
|
135
|
-
<img src='https://github.com/
|
133
|
+
<td id='manu-wallner'>
|
134
|
+
<a href='https://github.com/milch'>
|
135
|
+
<img src='https://github.com/milch.png?size=140'>
|
136
136
|
</a>
|
137
|
-
<h4 align='center'><a href='https://twitter.com/
|
137
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
138
138
|
</td>
|
139
|
-
<td id='
|
140
|
-
<a href='https://github.com/
|
141
|
-
<img src='https://github.com/
|
139
|
+
<td id='matthew-ellis'>
|
140
|
+
<a href='https://github.com/matthewellis'>
|
141
|
+
<img src='https://github.com/matthewellis.png?size=140'>
|
142
142
|
</a>
|
143
|
-
<h4 align='center'><a href='https://twitter.com/
|
143
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
144
144
|
</td>
|
145
|
-
<td id='
|
146
|
-
<a href='https://github.com/
|
147
|
-
<img src='https://github.com/
|
145
|
+
<td id='felix-krause'>
|
146
|
+
<a href='https://github.com/KrauseFx'>
|
147
|
+
<img src='https://github.com/KrauseFx.png?size=140'>
|
148
148
|
</a>
|
149
|
-
<h4 align='center'><a href='https://twitter.com/
|
149
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
150
150
|
</td>
|
151
|
-
<td id='
|
152
|
-
<a href='https://github.com/
|
153
|
-
<img src='https://github.com/
|
151
|
+
<td id='jorge-revuelta-h'>
|
152
|
+
<a href='https://github.com/minuscorp'>
|
153
|
+
<img src='https://github.com/minuscorp.png?size=140'>
|
154
154
|
</a>
|
155
|
-
<h4 align='center'><a href='https://twitter.com/
|
155
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
156
156
|
</td>
|
157
|
-
<td id='
|
158
|
-
<a href='https://github.com/
|
159
|
-
<img src='https://github.com/
|
157
|
+
<td id='aaron-brager'>
|
158
|
+
<a href='https://github.com/getaaron'>
|
159
|
+
<img src='https://github.com/getaaron.png?size=140'>
|
160
160
|
</a>
|
161
|
-
<h4 align='center'><a href='https://twitter.com/
|
161
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
162
162
|
</td>
|
163
163
|
</tr>
|
164
164
|
<tr>
|
165
|
-
<td id='
|
166
|
-
<a href='https://github.com/
|
167
|
-
<img src='https://github.com/
|
165
|
+
<td id='max-ott'>
|
166
|
+
<a href='https://github.com/max-ott'>
|
167
|
+
<img src='https://github.com/max-ott.png?size=140'>
|
168
168
|
</a>
|
169
|
-
<h4 align='center'><a href='https://twitter.com/
|
169
|
+
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
170
170
|
</td>
|
171
171
|
<td id='luka-mirosevic'>
|
172
172
|
<a href='https://github.com/lmirosevic'>
|
@@ -130,14 +130,12 @@ module Deliver
|
|
130
130
|
end # errors if doesn't exist
|
131
131
|
UploadMetadata::REVIEW_INFORMATION_VALUES.each do |file_key, attribute_name|
|
132
132
|
if app_store_review_detail
|
133
|
-
content = app_store_review_detail.send(attribute_name)
|
133
|
+
content = app_store_review_detail.send(attribute_name) || ""
|
134
134
|
else
|
135
135
|
content = ""
|
136
136
|
end
|
137
137
|
content += "\n"
|
138
138
|
|
139
|
-
file_key = UploadMetadata::REVIEW_INFORMATION_VALUES_LEGACY.key(file_key)
|
140
|
-
|
141
139
|
base_dir = File.join(path, UploadMetadata::REVIEW_INFORMATION_DIR)
|
142
140
|
resulting_path = File.join(base_dir, "#{file_key}.txt")
|
143
141
|
FileUtils.mkdir_p(File.expand_path('..', resulting_path))
|
@@ -507,13 +507,30 @@ module Deliver
|
|
507
507
|
end
|
508
508
|
|
509
509
|
# Load review information
|
510
|
-
|
511
|
-
|
510
|
+
# This is used to find the file path for both new and legacy review information filenames
|
511
|
+
resolve_review_info_path = lambda do |option_name|
|
512
512
|
path = File.join(options[:metadata_path], REVIEW_INFORMATION_DIR, "#{option_name}.txt")
|
513
|
-
|
514
|
-
|
513
|
+
return nil unless File.exist?(path)
|
514
|
+
return nil if options[:app_review_information][option_name].to_s.length > 0
|
515
515
|
|
516
516
|
UI.message("Loading '#{path}'...")
|
517
|
+
return path
|
518
|
+
end
|
519
|
+
|
520
|
+
# First try and load review information from legacy filenames
|
521
|
+
options[:app_review_information] ||= {}
|
522
|
+
REVIEW_INFORMATION_VALUES_LEGACY.each do |legacy_option_name, option_name|
|
523
|
+
path = resolve_review_info_path.call(legacy_option_name)
|
524
|
+
next if path.nil?
|
525
|
+
options[:app_review_information][option_name] ||= File.read(path)
|
526
|
+
|
527
|
+
UI.deprecated("Review rating option '#{legacy_option_name}' from iTunesConnect has been deprecated. Please replace with '#{option_name}'")
|
528
|
+
end
|
529
|
+
|
530
|
+
# Then load review information from new App Store Connect filenames
|
531
|
+
REVIEW_INFORMATION_VALUES.keys.each do |option_name|
|
532
|
+
path = resolve_review_info_path.call(option_name)
|
533
|
+
next if path.nil?
|
517
534
|
options[:app_review_information][option_name] ||= File.read(path)
|
518
535
|
end
|
519
536
|
end
|
@@ -20,6 +20,7 @@ module Fastlane
|
|
20
20
|
cmd << "--output #{params[:output]}" if params[:output]
|
21
21
|
cmd << "--use-ssh" if params[:use_ssh]
|
22
22
|
cmd << "--use-submodules" if params[:use_submodules]
|
23
|
+
cmd << "--use-netrc" if params[:use_netrc]
|
23
24
|
cmd << "--no-use-binaries" if params[:use_binaries] == false
|
24
25
|
cmd << "--no-checkout" if params[:no_checkout] == true
|
25
26
|
cmd << "--no-build" if params[:no_build] == true
|
@@ -89,6 +90,12 @@ module Fastlane
|
|
89
90
|
is_string: false,
|
90
91
|
type: Boolean,
|
91
92
|
optional: true),
|
93
|
+
FastlaneCore::ConfigItem.new(key: :use_netrc,
|
94
|
+
env_name: "FL_CARTHAGE_USE_NETRC",
|
95
|
+
description: "Use .netrc for downloading frameworks",
|
96
|
+
is_string: false,
|
97
|
+
type: Boolean,
|
98
|
+
optional: true),
|
92
99
|
FastlaneCore::ConfigItem.new(key: :use_binaries,
|
93
100
|
env_name: "FL_CARTHAGE_USE_BINARIES",
|
94
101
|
description: "Check out dependency repositories even when prebuilt frameworks exist",
|
@@ -111,6 +111,25 @@ match
|
|
111
111
|
|
112
112
|
You can find more information about GitHub basic authentication and personal token generation here: [https://developer.github.com/v3/auth/#basic-authentication](https://developer.github.com/v3/auth/#basic-authentication)
|
113
113
|
|
114
|
+
##### Git Storage on GitHub - Deploy keys
|
115
|
+
|
116
|
+
If your machine does not have a private key set up for your certificates repository, you can give _match_ a path for one:
|
117
|
+
|
118
|
+
Using parameter:
|
119
|
+
|
120
|
+
```
|
121
|
+
match(git_private_key: '<PATH TO YOUR KEY>')
|
122
|
+
```
|
123
|
+
|
124
|
+
Using environment variable:
|
125
|
+
|
126
|
+
```
|
127
|
+
ENV['MATCH_GIT_PRIVATE_KEY'] = '<PATH TO YOUR KEY>'
|
128
|
+
match
|
129
|
+
```
|
130
|
+
|
131
|
+
You can find more information about GitHub basic authentication and personal token generation here: [https://developer.github.com/v3/auth/#basic-authentication](https://developer.github.com/v3/auth/#basic-authentication)
|
132
|
+
|
114
133
|
##### Git Storage on Azure Devops
|
115
134
|
|
116
135
|
If you're running a pipeline on Azure Devops and using git storage in a another repository on the same project, you might want to use `bearer` token authentication.
|
@@ -488,14 +507,14 @@ _match_ stores the certificate (`.cer`) and the private key (`.p12`) files separ
|
|
488
507
|
Decrypt your cert found in `certs/<type>/<unique-id>.cer` as a pem file:
|
489
508
|
|
490
509
|
```no-highlight
|
491
|
-
openssl aes-256-cbc -k "<password>" -in "certs/<type>/<unique-id>.cer" -out "cert.der" -a -d
|
510
|
+
openssl aes-256-cbc -k "<password>" -in "certs/<type>/<unique-id>.cer" -out "cert.der" -a -d -md [md5|sha256]
|
492
511
|
openssl x509 -inform der -in cert.der -out cert.pem
|
493
512
|
```
|
494
513
|
|
495
514
|
Decrypt your private key found in `certs/<type>/<unique-id>.p12` as a pem file:
|
496
515
|
|
497
516
|
```no-highlight
|
498
|
-
openssl aes-256-cbc -k "<password>" -in "certs/distribution/<unique-id>.p12" -out "key.pem" -a -d
|
517
|
+
openssl aes-256-cbc -k "<password>" -in "certs/distribution/<unique-id>.p12" -out "key.pem" -a -d -md [md5|sha256]
|
499
518
|
```
|
500
519
|
|
501
520
|
Generate an encrypted p12 file with the same or new password:
|
@@ -485,10 +485,10 @@ Key | Editable While Live | Directory | Filename
|
|
485
485
|
|
486
486
|
### Review Information Metadata
|
487
487
|
|
488
|
-
Key | Editable While Live | Directory | Filename
|
489
|
-
|
488
|
+
Key | Editable While Live | Directory | Filename | Deprecated Filename
|
489
|
+
----|--------|--------|--------|--------
|
490
490
|
<%- Deliver::UploadMetadata::REVIEW_INFORMATION_VALUES_LEGACY.each do |key, value| -%>
|
491
|
-
`<%= value %>` | Yes | `<metadata_path>/<%= Deliver::UploadMetadata::REVIEW_INFORMATION_DIR %>` | `<%= value %>.txt`
|
491
|
+
`<%= value %>` | Yes | `<metadata_path>/<%= Deliver::UploadMetadata::REVIEW_INFORMATION_DIR %>` | `<%= value %>.txt` | `<%= key %>.txt`
|
492
492
|
<%- end %>
|
493
493
|
|
494
494
|
## Reference
|
@@ -5,7 +5,9 @@ module Fastlane
|
|
5
5
|
commands = []
|
6
6
|
|
7
7
|
unless params[:only_tags]
|
8
|
-
|
8
|
+
command = "git pull"
|
9
|
+
command << " --rebase" if params[:rebase]
|
10
|
+
commands += ["#{command} &&"]
|
9
11
|
end
|
10
12
|
|
11
13
|
commands += ["git fetch --tags"]
|
@@ -26,6 +28,14 @@ module Fastlane
|
|
26
28
|
default_value: false,
|
27
29
|
verify_block: proc do |value|
|
28
30
|
UI.user_error!("Please pass a valid value for only_tags. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
|
31
|
+
end),
|
32
|
+
FastlaneCore::ConfigItem.new(key: :rebase,
|
33
|
+
description: "Rebase on top of the remote branch instead of merge",
|
34
|
+
is_string: false,
|
35
|
+
optional: true,
|
36
|
+
default_value: false,
|
37
|
+
verify_block: proc do |value|
|
38
|
+
UI.user_error!("Please pass a valid value for rebase. Use one of the following: true, false") unless value.kind_of?(TrueClass) || value.kind_of?(FalseClass)
|
29
39
|
end)
|
30
40
|
]
|
31
41
|
end
|
@@ -41,7 +51,8 @@ module Fastlane
|
|
41
51
|
def self.example_code
|
42
52
|
[
|
43
53
|
'git_pull',
|
44
|
-
'git_pull(only_tags: true) # only the tags, no commits'
|
54
|
+
'git_pull(only_tags: true) # only the tags, no commits',
|
55
|
+
'git_pull(rebase: true) # use --rebase with pull'
|
45
56
|
]
|
46
57
|
end
|
47
58
|
|
@@ -1442,6 +1442,7 @@ func captureAndroidScreenshots(androidHome: String? = nil,
|
|
1442
1442
|
- clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
|
1443
1443
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
1444
1444
|
- eraseSimulator: Enabling this option will automatically erase the simulator before running the application
|
1445
|
+
- headless: Enabling this option will prevent displaying the simulator window
|
1445
1446
|
- overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
|
1446
1447
|
- localizeSimulator: Enabling this option will configure the Simulator's system language
|
1447
1448
|
- darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
|
@@ -1485,6 +1486,7 @@ func captureIosScreenshots(workspace: String? = nil,
|
|
1485
1486
|
clearPreviousScreenshots: Bool = false,
|
1486
1487
|
reinstallApp: Bool = false,
|
1487
1488
|
eraseSimulator: Bool = false,
|
1489
|
+
headless: Bool = true,
|
1488
1490
|
overrideStatusBar: Bool = false,
|
1489
1491
|
localizeSimulator: Bool = false,
|
1490
1492
|
darkMode: Bool? = nil,
|
@@ -1527,6 +1529,7 @@ func captureIosScreenshots(workspace: String? = nil,
|
|
1527
1529
|
RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
|
1528
1530
|
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
1529
1531
|
RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
|
1532
|
+
RubyCommand.Argument(name: "headless", value: headless),
|
1530
1533
|
RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
|
1531
1534
|
RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
|
1532
1535
|
RubyCommand.Argument(name: "dark_mode", value: darkMode),
|
@@ -1576,6 +1579,7 @@ func captureIosScreenshots(workspace: String? = nil,
|
|
1576
1579
|
- clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
|
1577
1580
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
1578
1581
|
- eraseSimulator: Enabling this option will automatically erase the simulator before running the application
|
1582
|
+
- headless: Enabling this option will prevent displaying the simulator window
|
1579
1583
|
- overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
|
1580
1584
|
- localizeSimulator: Enabling this option will configure the Simulator's system language
|
1581
1585
|
- darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
|
@@ -1619,6 +1623,7 @@ func captureScreenshots(workspace: String? = nil,
|
|
1619
1623
|
clearPreviousScreenshots: Bool = false,
|
1620
1624
|
reinstallApp: Bool = false,
|
1621
1625
|
eraseSimulator: Bool = false,
|
1626
|
+
headless: Bool = true,
|
1622
1627
|
overrideStatusBar: Bool = false,
|
1623
1628
|
localizeSimulator: Bool = false,
|
1624
1629
|
darkMode: Bool? = nil,
|
@@ -1661,6 +1666,7 @@ func captureScreenshots(workspace: String? = nil,
|
|
1661
1666
|
RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
|
1662
1667
|
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
1663
1668
|
RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
|
1669
|
+
RubyCommand.Argument(name: "headless", value: headless),
|
1664
1670
|
RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
|
1665
1671
|
RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
|
1666
1672
|
RubyCommand.Argument(name: "dark_mode", value: darkMode),
|
@@ -1699,6 +1705,7 @@ func captureScreenshots(workspace: String? = nil,
|
|
1699
1705
|
- dependencies: Carthage dependencies to update, build or bootstrap
|
1700
1706
|
- useSsh: Use SSH for downloading GitHub repositories
|
1701
1707
|
- useSubmodules: Add dependencies as Git submodules
|
1708
|
+
- useNetrc: Use .netrc for downloading frameworks
|
1702
1709
|
- useBinaries: Check out dependency repositories even when prebuilt frameworks exist
|
1703
1710
|
- noCheckout: When bootstrapping Carthage do not checkout
|
1704
1711
|
- noBuild: When bootstrapping Carthage do not build
|
@@ -1720,6 +1727,7 @@ func carthage(command: String = "bootstrap",
|
|
1720
1727
|
dependencies: [String] = [],
|
1721
1728
|
useSsh: Bool? = nil,
|
1722
1729
|
useSubmodules: Bool? = nil,
|
1730
|
+
useNetrc: Bool? = nil,
|
1723
1731
|
useBinaries: Bool? = nil,
|
1724
1732
|
noCheckout: Bool? = nil,
|
1725
1733
|
noBuild: Bool? = nil,
|
@@ -1740,6 +1748,7 @@ func carthage(command: String = "bootstrap",
|
|
1740
1748
|
RubyCommand.Argument(name: "dependencies", value: dependencies),
|
1741
1749
|
RubyCommand.Argument(name: "use_ssh", value: useSsh),
|
1742
1750
|
RubyCommand.Argument(name: "use_submodules", value: useSubmodules),
|
1751
|
+
RubyCommand.Argument(name: "use_netrc", value: useNetrc),
|
1743
1752
|
RubyCommand.Argument(name: "use_binaries", value: useBinaries),
|
1744
1753
|
RubyCommand.Argument(name: "no_checkout", value: noCheckout),
|
1745
1754
|
RubyCommand.Argument(name: "no_build", value: noBuild),
|
@@ -3558,10 +3567,14 @@ func gitCommit(path: Any,
|
|
3558
3567
|
/**
|
3559
3568
|
Executes a simple git pull command
|
3560
3569
|
|
3561
|
-
-
|
3570
|
+
- parameters:
|
3571
|
+
- onlyTags: Simply pull the tags, and not bring new commits to the current branch from the remote
|
3572
|
+
- rebase: Rebase on top of the remote branch instead of merge
|
3562
3573
|
*/
|
3563
|
-
func gitPull(onlyTags: Bool = false
|
3564
|
-
|
3574
|
+
func gitPull(onlyTags: Bool = false,
|
3575
|
+
rebase: Bool = false) {
|
3576
|
+
let command = RubyCommand(commandID: "", methodName: "git_pull", className: nil, args: [RubyCommand.Argument(name: "only_tags", value: onlyTags),
|
3577
|
+
RubyCommand.Argument(name: "rebase", value: rebase)])
|
3565
3578
|
_ = runner.executeCommand(command)
|
3566
3579
|
}
|
3567
3580
|
|
@@ -4555,6 +4568,7 @@ func makeChangelogFromJenkins(fallbackChangelog: String = "",
|
|
4555
4568
|
- cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
|
4556
4569
|
- gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
|
4557
4570
|
- gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
|
4571
|
+
- gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
|
4558
4572
|
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
4559
4573
|
- googleCloudKeysFile: Path to the gc_keys.json file
|
4560
4574
|
- googleCloudProjectId: ID of the Google Cloud project to use for authentication
|
@@ -4596,6 +4610,7 @@ func match(type: Any = matchfile.type,
|
|
4596
4610
|
cloneBranchDirectly: Bool = matchfile.cloneBranchDirectly,
|
4597
4611
|
gitBasicAuthorization: Any? = matchfile.gitBasicAuthorization,
|
4598
4612
|
gitBearerAuthorization: Any? = matchfile.gitBearerAuthorization,
|
4613
|
+
gitPrivateKey: Any? = matchfile.gitPrivateKey,
|
4599
4614
|
googleCloudBucketName: Any? = matchfile.googleCloudBucketName,
|
4600
4615
|
googleCloudKeysFile: Any? = matchfile.googleCloudKeysFile,
|
4601
4616
|
googleCloudProjectId: Any? = matchfile.googleCloudProjectId,
|
@@ -4634,6 +4649,7 @@ func match(type: Any = matchfile.type,
|
|
4634
4649
|
RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
|
4635
4650
|
RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
|
4636
4651
|
RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
|
4652
|
+
RubyCommand.Argument(name: "git_private_key", value: gitPrivateKey),
|
4637
4653
|
RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
|
4638
4654
|
RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
|
4639
4655
|
RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
|
@@ -5038,7 +5054,7 @@ func pem(development: Bool = false,
|
|
5038
5054
|
- betaAppDescription: Provide the 'Beta App Description' when uploading a new build
|
5039
5055
|
- betaAppFeedbackEmail: Provide the beta app email when uploading a new build
|
5040
5056
|
- localizedBuildInfo: Localized beta app test info for what's new
|
5041
|
-
- changelog: Provide the 'What to Test' text when uploading a new build
|
5057
|
+
- changelog: Provide the 'What to Test' text when uploading a new build
|
5042
5058
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
5043
5059
|
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
5044
5060
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
@@ -6870,6 +6886,7 @@ func slather(buildDirectory: String? = nil,
|
|
6870
6886
|
- clearPreviousScreenshots: Enabling this option will automatically clear previously generated screenshots before running snapshot
|
6871
6887
|
- reinstallApp: Enabling this option will automatically uninstall the application before running it
|
6872
6888
|
- eraseSimulator: Enabling this option will automatically erase the simulator before running the application
|
6889
|
+
- headless: Enabling this option will prevent displaying the simulator window
|
6873
6890
|
- overrideStatusBar: Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
|
6874
6891
|
- localizeSimulator: Enabling this option will configure the Simulator's system language
|
6875
6892
|
- darkMode: Enabling this option will configure the Simulator to be in dark mode (false for light, true for dark)
|
@@ -6913,6 +6930,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
|
|
6913
6930
|
clearPreviousScreenshots: Bool = snapshotfile.clearPreviousScreenshots,
|
6914
6931
|
reinstallApp: Bool = snapshotfile.reinstallApp,
|
6915
6932
|
eraseSimulator: Bool = snapshotfile.eraseSimulator,
|
6933
|
+
headless: Bool = snapshotfile.headless,
|
6916
6934
|
overrideStatusBar: Bool = snapshotfile.overrideStatusBar,
|
6917
6935
|
localizeSimulator: Bool = snapshotfile.localizeSimulator,
|
6918
6936
|
darkMode: Bool? = snapshotfile.darkMode,
|
@@ -6955,6 +6973,7 @@ func snapshot(workspace: Any? = snapshotfile.workspace,
|
|
6955
6973
|
RubyCommand.Argument(name: "clear_previous_screenshots", value: clearPreviousScreenshots),
|
6956
6974
|
RubyCommand.Argument(name: "reinstall_app", value: reinstallApp),
|
6957
6975
|
RubyCommand.Argument(name: "erase_simulator", value: eraseSimulator),
|
6976
|
+
RubyCommand.Argument(name: "headless", value: headless),
|
6958
6977
|
RubyCommand.Argument(name: "override_status_bar", value: overrideStatusBar),
|
6959
6978
|
RubyCommand.Argument(name: "localize_simulator", value: localizeSimulator),
|
6960
6979
|
RubyCommand.Argument(name: "dark_mode", value: darkMode),
|
@@ -7353,6 +7372,7 @@ func swiftlint(mode: Any = "lint",
|
|
7353
7372
|
- cloneBranchDirectly: Clone just the branch specified, instead of the whole repo. This requires that the branch already exists. Otherwise the command will fail
|
7354
7373
|
- gitBasicAuthorization: Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64
|
7355
7374
|
- gitBearerAuthorization: Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
|
7375
|
+
- gitPrivateKey: Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
|
7356
7376
|
- googleCloudBucketName: Name of the Google Cloud Storage bucket to use
|
7357
7377
|
- googleCloudKeysFile: Path to the gc_keys.json file
|
7358
7378
|
- googleCloudProjectId: ID of the Google Cloud project to use for authentication
|
@@ -7394,6 +7414,7 @@ func syncCodeSigning(type: String = "development",
|
|
7394
7414
|
cloneBranchDirectly: Bool = false,
|
7395
7415
|
gitBasicAuthorization: String? = nil,
|
7396
7416
|
gitBearerAuthorization: String? = nil,
|
7417
|
+
gitPrivateKey: String? = nil,
|
7397
7418
|
googleCloudBucketName: String? = nil,
|
7398
7419
|
googleCloudKeysFile: String? = nil,
|
7399
7420
|
googleCloudProjectId: String? = nil,
|
@@ -7432,6 +7453,7 @@ func syncCodeSigning(type: String = "development",
|
|
7432
7453
|
RubyCommand.Argument(name: "clone_branch_directly", value: cloneBranchDirectly),
|
7433
7454
|
RubyCommand.Argument(name: "git_basic_authorization", value: gitBasicAuthorization),
|
7434
7455
|
RubyCommand.Argument(name: "git_bearer_authorization", value: gitBearerAuthorization),
|
7456
|
+
RubyCommand.Argument(name: "git_private_key", value: gitPrivateKey),
|
7435
7457
|
RubyCommand.Argument(name: "google_cloud_bucket_name", value: googleCloudBucketName),
|
7436
7458
|
RubyCommand.Argument(name: "google_cloud_keys_file", value: googleCloudKeysFile),
|
7437
7459
|
RubyCommand.Argument(name: "google_cloud_project_id", value: googleCloudProjectId),
|
@@ -7535,7 +7557,7 @@ func testfairy(apiKey: String,
|
|
7535
7557
|
- betaAppDescription: Provide the 'Beta App Description' when uploading a new build
|
7536
7558
|
- betaAppFeedbackEmail: Provide the beta app email when uploading a new build
|
7537
7559
|
- localizedBuildInfo: Localized beta app test info for what's new
|
7538
|
-
- changelog: Provide the 'What to Test' text when uploading a new build
|
7560
|
+
- changelog: Provide the 'What to Test' text when uploading a new build
|
7539
7561
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
7540
7562
|
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
7541
7563
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
@@ -8453,7 +8475,7 @@ func uploadToPlayStoreInternalAppSharing(packageName: String,
|
|
8453
8475
|
- betaAppDescription: Provide the 'Beta App Description' when uploading a new build
|
8454
8476
|
- betaAppFeedbackEmail: Provide the beta app email when uploading a new build
|
8455
8477
|
- localizedBuildInfo: Localized beta app test info for what's new
|
8456
|
-
- changelog: Provide the 'What to Test' text when uploading a new build
|
8478
|
+
- changelog: Provide the 'What to Test' text when uploading a new build
|
8457
8479
|
- skipSubmission: Skip the distributing action of pilot and only upload the ipa file
|
8458
8480
|
- skipWaitingForBuildProcessing: If set to true, the `distribute_external` option won't work and no build will be distributed to testers. (You might want to use this option if you are using this action on CI and have to pay for 'minutes used' on your CI plan). If set to `true` and a changelog is provided, it will partially wait for the build to appear on AppStore Connect so the changelog can be set, and skip the remaining processing steps
|
8459
8481
|
- updateBuildInfoOnUpload: **DEPRECATED!** Update build info immediately after validation. This is deprecated and will be removed in a future release. App Store Connect no longer supports setting build info until after build processing has completed, which is when build info is updated by default
|
@@ -8989,4 +9011,4 @@ let snapshotfile: Snapshotfile = Snapshotfile()
|
|
8989
9011
|
|
8990
9012
|
// Please don't remove the lines below
|
8991
9013
|
// They are used to detect outdated files
|
8992
|
-
// FastlaneRunnerAPIVersion [0.9.
|
9014
|
+
// FastlaneRunnerAPIVersion [0.9.81]
|
@@ -53,6 +53,9 @@ protocol MatchfileProtocol: class {
|
|
53
53
|
/// Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64
|
54
54
|
var gitBearerAuthorization: String? { get }
|
55
55
|
|
56
|
+
/// Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof
|
57
|
+
var gitPrivateKey: String? { get }
|
58
|
+
|
56
59
|
/// Name of the Google Cloud Storage bucket to use
|
57
60
|
var googleCloudBucketName: String? { get }
|
58
61
|
|
@@ -133,6 +136,7 @@ extension MatchfileProtocol {
|
|
133
136
|
var cloneBranchDirectly: Bool { return false }
|
134
137
|
var gitBasicAuthorization: String? { return nil }
|
135
138
|
var gitBearerAuthorization: String? { return nil }
|
139
|
+
var gitPrivateKey: String? { return nil }
|
136
140
|
var googleCloudBucketName: String? { return nil }
|
137
141
|
var googleCloudKeysFile: String? { return nil }
|
138
142
|
var googleCloudProjectId: String? { return nil }
|
@@ -157,4 +161,4 @@ extension MatchfileProtocol {
|
|
157
161
|
|
158
162
|
// Please don't remove the lines below
|
159
163
|
// They are used to detect outdated files
|
160
|
-
// FastlaneRunnerAPIVersion [0.9.
|
164
|
+
// FastlaneRunnerAPIVersion [0.9.25]
|
@@ -44,6 +44,9 @@ protocol SnapshotfileProtocol: class {
|
|
44
44
|
/// Enabling this option will automatically erase the simulator before running the application
|
45
45
|
var eraseSimulator: Bool { get }
|
46
46
|
|
47
|
+
/// Enabling this option will prevent displaying the simulator window
|
48
|
+
var headless: Bool { get }
|
49
|
+
|
47
50
|
/// Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception
|
48
51
|
var overrideStatusBar: Bool { get }
|
49
52
|
|
@@ -142,6 +145,7 @@ extension SnapshotfileProtocol {
|
|
142
145
|
var clearPreviousScreenshots: Bool { return false }
|
143
146
|
var reinstallApp: Bool { return false }
|
144
147
|
var eraseSimulator: Bool { return false }
|
148
|
+
var headless: Bool { return true }
|
145
149
|
var overrideStatusBar: Bool { return false }
|
146
150
|
var localizeSimulator: Bool { return false }
|
147
151
|
var darkMode: Bool? { return nil }
|
@@ -173,4 +177,4 @@ extension SnapshotfileProtocol {
|
|
173
177
|
|
174
178
|
// Please don't remove the lines below
|
175
179
|
// They are used to detect outdated files
|
176
|
-
// FastlaneRunnerAPIVersion [0.9.
|
180
|
+
// FastlaneRunnerAPIVersion [0.9.20]
|
@@ -202,17 +202,22 @@ module FastlaneCore
|
|
202
202
|
def boot
|
203
203
|
return unless is_simulator
|
204
204
|
return unless os_type == "iOS"
|
205
|
+
return if self.state == 'Booted'
|
205
206
|
|
206
207
|
UI.message("Booting #{self}")
|
207
|
-
|
208
|
+
|
209
|
+
`xcrun simctl boot #{self.udid} 2>/dev/null`
|
210
|
+
self.state = 'Booted'
|
208
211
|
end
|
209
212
|
|
210
213
|
def shutdown
|
211
214
|
return unless is_simulator
|
212
215
|
return unless os_type == "iOS"
|
216
|
+
return if self.state != 'Booted'
|
213
217
|
|
214
218
|
UI.message("Shutting down #{self.udid}")
|
215
|
-
`xcrun simctl shutdown #{self.udid}`
|
219
|
+
`xcrun simctl shutdown #{self.udid} 2>/dev/null`
|
220
|
+
self.state = 'Shutdown'
|
216
221
|
end
|
217
222
|
|
218
223
|
def reset
|
@@ -500,7 +500,9 @@ module Frameit
|
|
500
500
|
UI.user_error!("Valid parameters :keyword, :title") unless [:keyword, :title].include?(type)
|
501
501
|
|
502
502
|
# Try to get it from a keyword.strings or title.strings file
|
503
|
-
strings_path = File.join(File.expand_path("
|
503
|
+
strings_path = File.join(File.expand_path("../", screenshot.path), "#{type}.strings")
|
504
|
+
strings_path = File.join(File.expand_path("../../", screenshot.path), "#{type}.strings") unless File.exist?(strings_path)
|
505
|
+
strings_path = File.join(File.expand_path("../../../", screenshot.path), "#{type}.strings") unless File.exist?(strings_path)
|
504
506
|
if File.exist?(strings_path)
|
505
507
|
parsed = StringsParser.parse(strings_path)
|
506
508
|
text_array = parsed.find { |k, v| screenshot.path.upcase.include?(k.upcase) }
|
data/gym/lib/gym/module.rb
CHANGED
@@ -32,6 +32,14 @@ module Gym
|
|
32
32
|
def building_mac_catalyst_for_mac?
|
33
33
|
Gym.project.supports_mac_catalyst? && Gym.config[:catalyst_platform] == "macos"
|
34
34
|
end
|
35
|
+
|
36
|
+
def export_destination_upload?
|
37
|
+
config_path = Gym.cache[:config_path]
|
38
|
+
return false if config_path.nil?
|
39
|
+
|
40
|
+
result = CFPropertyList.native_types(CFPropertyList::List.new(file: config_path).value)
|
41
|
+
return result["destination"] == "upload"
|
42
|
+
end
|
35
43
|
end
|
36
44
|
|
37
45
|
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
data/gym/lib/gym/runner.rb
CHANGED
@@ -13,6 +13,7 @@ require_relative 'error_handler'
|
|
13
13
|
module Gym
|
14
14
|
class Runner
|
15
15
|
# @return (String) The path to the resulting ipa
|
16
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
16
17
|
def run
|
17
18
|
unless Gym.config[:skip_build_archive]
|
18
19
|
build_app
|
@@ -34,13 +35,16 @@ module Gym
|
|
34
35
|
|
35
36
|
package_app
|
36
37
|
compress_and_move_dsym
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
38
|
+
|
39
|
+
unless Gym.export_destination_upload?
|
40
|
+
path = move_ipa
|
41
|
+
move_manifest
|
42
|
+
move_app_thinning
|
43
|
+
move_app_thinning_size_report
|
44
|
+
move_apps_folder
|
45
|
+
move_asset_packs
|
46
|
+
move_appstore_info
|
47
|
+
end
|
44
48
|
elsif is_mac
|
45
49
|
path = File.expand_path(Gym.config[:output_directory])
|
46
50
|
compress_and_move_dsym
|
@@ -49,14 +53,17 @@ module Gym
|
|
49
53
|
return path if Gym.config[:skip_package_pkg]
|
50
54
|
|
51
55
|
package_app
|
52
|
-
|
53
|
-
|
56
|
+
unless Gym.export_destination_upload?
|
57
|
+
path = move_pkg
|
58
|
+
move_appstore_info
|
59
|
+
end
|
54
60
|
return path
|
55
61
|
end
|
56
62
|
copy_files_from_path(File.join(BuildCommandGenerator.archive_path, "Products/usr/local/bin/*")) if Gym.project.command_line_tool?
|
57
63
|
end
|
58
64
|
return path
|
59
65
|
end
|
66
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
60
67
|
|
61
68
|
#####################################################
|
62
69
|
# @!group Printing out things
|
data/match/lib/match/options.rb
CHANGED
@@ -141,14 +141,21 @@ module Match
|
|
141
141
|
env_name: "MATCH_GIT_BASIC_AUTHORIZATION",
|
142
142
|
sensitive: true,
|
143
143
|
description: "Use a basic authorization header to access the git repo (e.g.: access via HTTPS, GitHub Actions, etc), usually a string in Base64",
|
144
|
-
conflicting_options: [:git_bearer_authorization],
|
144
|
+
conflicting_options: [:git_bearer_authorization, :git_private_key],
|
145
145
|
optional: true,
|
146
146
|
default_value: nil),
|
147
147
|
FastlaneCore::ConfigItem.new(key: :git_bearer_authorization,
|
148
148
|
env_name: "MATCH_GIT_BEARER_AUTHORIZATION",
|
149
149
|
sensitive: true,
|
150
150
|
description: "Use a bearer authorization header to access the git repo (e.g.: access to an Azure Devops repository), usually a string in Base64",
|
151
|
-
conflicting_options: [:git_basic_authorization],
|
151
|
+
conflicting_options: [:git_basic_authorization, :git_private_key],
|
152
|
+
optional: true,
|
153
|
+
default_value: nil),
|
154
|
+
FastlaneCore::ConfigItem.new(key: :git_private_key,
|
155
|
+
env_name: "MATCH_GIT_PRIVATE_KEY",
|
156
|
+
sensitive: true,
|
157
|
+
description: "Use a private key to access the git repo (e.g.: access to GitHub repository via Deploy keys), usually a id_rsa named file or the contents hereof",
|
158
|
+
conflicting_options: [:git_basic_authorization, :git_bearer_authorization],
|
152
159
|
optional: true,
|
153
160
|
default_value: nil),
|
154
161
|
|
data/match/lib/match/runner.rb
CHANGED
@@ -40,6 +40,7 @@ module Match
|
|
40
40
|
clone_branch_directly: params[:clone_branch_directly],
|
41
41
|
git_basic_authorization: params[:git_basic_authorization],
|
42
42
|
git_bearer_authorization: params[:git_bearer_authorization],
|
43
|
+
git_private_key: params[:git_private_key],
|
43
44
|
type: params[:type].to_s,
|
44
45
|
generate_apple_certs: params[:generate_apple_certs],
|
45
46
|
platform: params[:platform].to_s,
|
@@ -19,6 +19,7 @@ module Match
|
|
19
19
|
attr_accessor :platform
|
20
20
|
attr_accessor :git_basic_authorization
|
21
21
|
attr_accessor :git_bearer_authorization
|
22
|
+
attr_accessor :git_private_key
|
22
23
|
|
23
24
|
def self.configure(params)
|
24
25
|
return self.new(
|
@@ -32,7 +33,8 @@ module Match
|
|
32
33
|
git_user_email: params[:git_user_email],
|
33
34
|
clone_branch_directly: params[:clone_branch_directly],
|
34
35
|
git_basic_authorization: params[:git_basic_authorization],
|
35
|
-
git_bearer_authorization: params[:git_bearer_authorization]
|
36
|
+
git_bearer_authorization: params[:git_bearer_authorization],
|
37
|
+
git_private_key: params[:git_private_key]
|
36
38
|
)
|
37
39
|
end
|
38
40
|
|
@@ -46,7 +48,8 @@ module Match
|
|
46
48
|
git_user_email: nil,
|
47
49
|
clone_branch_directly: false,
|
48
50
|
git_basic_authorization: nil,
|
49
|
-
git_bearer_authorization: nil
|
51
|
+
git_bearer_authorization: nil,
|
52
|
+
git_private_key: nil)
|
50
53
|
self.git_url = git_url
|
51
54
|
self.shallow_clone = shallow_clone
|
52
55
|
self.skip_docs = skip_docs
|
@@ -56,6 +59,7 @@ module Match
|
|
56
59
|
self.clone_branch_directly = clone_branch_directly
|
57
60
|
self.git_basic_authorization = git_basic_authorization
|
58
61
|
self.git_bearer_authorization = git_bearer_authorization
|
62
|
+
self.git_private_key = git_private_key
|
59
63
|
|
60
64
|
self.type = type if type
|
61
65
|
self.platform = platform if platform
|
@@ -85,6 +89,16 @@ module Match
|
|
85
89
|
command += " -b #{self.branch.shellescape} --single-branch"
|
86
90
|
end
|
87
91
|
|
92
|
+
unless self.git_private_key.nil?
|
93
|
+
if File.file?(self.git_private_key)
|
94
|
+
ssh_add = File.expand_path(self.git_private_key).shellescape.to_s
|
95
|
+
else
|
96
|
+
UI.message("Private key file does not exist, will continue by using it as a raw key.")
|
97
|
+
ssh_add = "- <<< \"#{self.git_private_key}\""
|
98
|
+
end
|
99
|
+
command = "ssh-agent bash -c 'ssh-add #{ssh_add}; #{command}'"
|
100
|
+
end
|
101
|
+
|
88
102
|
UI.message("Cloning remote git repo...")
|
89
103
|
if self.branch && !self.clone_branch_directly
|
90
104
|
UI.message("If cloning the repo takes too long, you can use the `clone_branch_directly` option in match.")
|
@@ -281,8 +281,17 @@ module Pilot
|
|
281
281
|
changelog
|
282
282
|
end
|
283
283
|
|
284
|
+
def self.strip_less_than_sign(changelog)
|
285
|
+
if changelog && changelog.include?("<")
|
286
|
+
changelog.delete!("<")
|
287
|
+
UI.important("Less than signs (<) have been removed from the changelog, since they're not allowed by Apple.")
|
288
|
+
end
|
289
|
+
changelog
|
290
|
+
end
|
291
|
+
|
284
292
|
def self.sanitize_changelog(changelog)
|
285
293
|
changelog = strip_emoji(changelog)
|
294
|
+
changelog = strip_less_than_sign(changelog)
|
286
295
|
truncate_changelog(changelog)
|
287
296
|
end
|
288
297
|
|
data/pilot/lib/pilot/options.rb
CHANGED
@@ -122,7 +122,7 @@ module Pilot
|
|
122
122
|
short_option: "-w",
|
123
123
|
optional: true,
|
124
124
|
env_name: "PILOT_CHANGELOG",
|
125
|
-
description: "Provide the 'What to Test' text when uploading a new build
|
125
|
+
description: "Provide the 'What to Test' text when uploading a new build"),
|
126
126
|
FastlaneCore::ConfigItem.new(key: :skip_submission,
|
127
127
|
short_option: "-s",
|
128
128
|
env_name: "PILOT_SKIP_SUBMISSION",
|
@@ -116,6 +116,11 @@ module Snapshot
|
|
116
116
|
description: "Enabling this option will automatically erase the simulator before running the application",
|
117
117
|
default_value: false,
|
118
118
|
is_string: false),
|
119
|
+
FastlaneCore::ConfigItem.new(key: :headless,
|
120
|
+
env_name: 'SNAPSHOT_HEADLESS',
|
121
|
+
description: "Enabling this option will prevent displaying the simulator window",
|
122
|
+
default_value: true,
|
123
|
+
type: Boolean),
|
119
124
|
FastlaneCore::ConfigItem.new(key: :override_status_bar,
|
120
125
|
env_name: 'SNAPSHOT_OVERRIDE_STATUS_BAR',
|
121
126
|
description: "Enabling this option wil automatically override the status bar to show 9:41 AM, full battery, and full reception",
|
@@ -7,6 +7,7 @@ module Snapshot
|
|
7
7
|
attr_accessor :add_videos
|
8
8
|
attr_accessor :clean
|
9
9
|
attr_accessor :erase_simulator
|
10
|
+
attr_accessor :headless
|
10
11
|
attr_accessor :localize_simulator
|
11
12
|
attr_accessor :dark_mode
|
12
13
|
attr_accessor :reinstall_app
|
@@ -34,6 +35,7 @@ module Snapshot
|
|
34
35
|
@add_videos = snapshot_config[:add_videos]
|
35
36
|
@clean = snapshot_config[:clean]
|
36
37
|
@erase_simulator = snapshot_config[:erase_simulator]
|
38
|
+
@headless = snapshot_config[:headless]
|
37
39
|
@localize_simulator = snapshot_config[:localize_simulator]
|
38
40
|
@dark_mode = snapshot_config[:dark_mode]
|
39
41
|
@reinstall_app = snapshot_config[:reinstall_app]
|
@@ -76,6 +76,11 @@ module Snapshot
|
|
76
76
|
disable_slide_to_type(type)
|
77
77
|
end
|
78
78
|
end
|
79
|
+
|
80
|
+
unless launcher_config.headless
|
81
|
+
simulator_path = File.join(Helper.xcode_path, 'Applications', 'Simulator.app')
|
82
|
+
Helper.backticks("open -a #{simulator_path} -g", print: FastlaneCore::Globals.verbose?)
|
83
|
+
end
|
79
84
|
end
|
80
85
|
|
81
86
|
# pass an array of device types
|
@@ -129,7 +129,6 @@ module Spaceship
|
|
129
129
|
tries = 1 if Object.const_defined?("SpecHelper")
|
130
130
|
response = yield
|
131
131
|
|
132
|
-
tries -= 1
|
133
132
|
status = response.status if response
|
134
133
|
|
135
134
|
if [500, 504].include?(status)
|
@@ -139,6 +138,7 @@ module Spaceship
|
|
139
138
|
|
140
139
|
return response
|
141
140
|
rescue => error
|
141
|
+
tries -= 1
|
142
142
|
puts(error) if Spaceship::Globals.verbose?
|
143
143
|
if tries.zero?
|
144
144
|
return response
|
@@ -193,7 +193,7 @@ module Spaceship
|
|
193
193
|
def get_live_app_store_version(platform: nil, includes: nil)
|
194
194
|
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
195
195
|
filter = {
|
196
|
-
appStoreState:
|
196
|
+
appStoreState: Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::READY_FOR_SALE,
|
197
197
|
platform: platform
|
198
198
|
}
|
199
199
|
return get_app_store_versions(filter: filter, includes: includes).first
|
@@ -219,6 +219,24 @@ module Spaceship
|
|
219
219
|
.last
|
220
220
|
end
|
221
221
|
|
222
|
+
def get_in_review_app_store_version(platform: nil, includes: nil)
|
223
|
+
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
224
|
+
filter = {
|
225
|
+
appStoreState: Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::IN_REVIEW,
|
226
|
+
platform: platform
|
227
|
+
}
|
228
|
+
return get_app_store_versions(filter: filter, includes: includes).first
|
229
|
+
end
|
230
|
+
|
231
|
+
def get_pending_release_app_store_version(platform: nil, includes: nil)
|
232
|
+
platform ||= Spaceship::ConnectAPI::Platform::IOS
|
233
|
+
filter = {
|
234
|
+
appStoreState: Spaceship::ConnectAPI::AppStoreVersion::AppStoreState::PENDING_DEVELOPER_RELEASE,
|
235
|
+
platform: platform
|
236
|
+
}
|
237
|
+
return get_app_store_versions(filter: filter, includes: includes).first
|
238
|
+
end
|
239
|
+
|
222
240
|
def get_app_store_versions(filter: {}, includes: nil, limit: nil, sort: nil)
|
223
241
|
resps = Spaceship::ConnectAPI.get_app_store_versions(app_id: id, filter: filter, includes: includes, limit: limit, sort: sort).all_pages
|
224
242
|
return resps.flat_map(&:to_models)
|
metadata
CHANGED
@@ -1,35 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.154.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Danielle Tomlinson
|
8
|
-
- Fumiya Nakamura
|
9
|
-
- Maksym Grebenets
|
10
|
-
- Kohki Miki
|
11
|
-
- Luka Mirosevic
|
12
|
-
- Manu Wallner
|
13
7
|
- Joshua Liebowitz
|
14
|
-
- Olivier Halligon
|
15
|
-
- Matthew Ellis
|
16
|
-
- Max Ott
|
17
|
-
- Josh Holtz
|
18
|
-
- Helmut Januschka
|
19
|
-
- Daniel Jankowski
|
20
8
|
- Jorge Revuelta H
|
21
|
-
- Jimmy Dee
|
22
|
-
- Felix Krause
|
23
9
|
- Aaron Brager
|
10
|
+
- Stefan Natchev
|
11
|
+
- Daniel Jankowski
|
12
|
+
- Kohki Miki
|
13
|
+
- Fumiya Nakamura
|
24
14
|
- Iulian Onofrei
|
15
|
+
- Felix Krause
|
16
|
+
- Josh Holtz
|
17
|
+
- Jimmy Dee
|
18
|
+
- Olivier Halligon
|
19
|
+
- Helmut Januschka
|
25
20
|
- Jan Piotrowski
|
26
|
-
-
|
21
|
+
- Luka Mirosevic
|
22
|
+
- Manu Wallner
|
23
|
+
- Matthew Ellis
|
24
|
+
- Max Ott
|
27
25
|
- Jérôme Lacoste
|
26
|
+
- Danielle Tomlinson
|
28
27
|
- Andrew McBurney
|
28
|
+
- Maksym Grebenets
|
29
29
|
autorequire:
|
30
30
|
bindir: bin
|
31
31
|
cert_chain: []
|
32
|
-
date: 2020-07-
|
32
|
+
date: 2020-07-29 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: slack-notifier
|
@@ -943,7 +943,6 @@ files:
|
|
943
943
|
- deliver/lib/assets/ScreenshotsHelp
|
944
944
|
- deliver/lib/assets/summary.html.erb
|
945
945
|
- deliver/lib/deliver.rb
|
946
|
-
- deliver/lib/deliver/.upload_metadata.rb.swp
|
947
946
|
- deliver/lib/deliver/app_screenshot.rb
|
948
947
|
- deliver/lib/deliver/commands_generator.rb
|
949
948
|
- deliver/lib/deliver/detect_values.rb
|
@@ -1407,7 +1406,6 @@ files:
|
|
1407
1406
|
- frameit/README.md
|
1408
1407
|
- frameit/lib/assets/empty.png
|
1409
1408
|
- frameit/lib/frameit.rb
|
1410
|
-
- frameit/lib/frameit/.editor.rb.swp
|
1411
1409
|
- frameit/lib/frameit/commands_generator.rb
|
1412
1410
|
- frameit/lib/frameit/config_parser.rb
|
1413
1411
|
- frameit/lib/frameit/dependency_checker.rb
|
@@ -1610,12 +1608,9 @@ files:
|
|
1610
1608
|
- spaceship/lib/spaceship/client.rb
|
1611
1609
|
- spaceship/lib/spaceship/commands_generator.rb
|
1612
1610
|
- spaceship/lib/spaceship/connect_api.rb
|
1613
|
-
- spaceship/lib/spaceship/connect_api/.model.rb.swp
|
1614
1611
|
- spaceship/lib/spaceship/connect_api/client.rb
|
1615
1612
|
- spaceship/lib/spaceship/connect_api/file_uploader.rb
|
1616
1613
|
- spaceship/lib/spaceship/connect_api/model.rb
|
1617
|
-
- spaceship/lib/spaceship/connect_api/models/.app_store_review_detail.rb.swp
|
1618
|
-
- spaceship/lib/spaceship/connect_api/models/.app_store_version.rb.swp
|
1619
1614
|
- spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb
|
1620
1615
|
- spaceship/lib/spaceship/connect_api/models/app.rb
|
1621
1616
|
- spaceship/lib/spaceship/connect_api/models/app_category.rb
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|