fastlane 2.192.0 → 2.195.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +86 -86
  3. data/cert/lib/cert/options.rb +1 -1
  4. data/deliver/lib/deliver/options.rb +1 -1
  5. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +1 -1
  6. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -1
  7. data/fastlane/lib/fastlane/actions/gradle.rb +16 -3
  8. data/fastlane/lib/fastlane/actions/last_git_commit.rb +1 -1
  9. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/notarize.rb +27 -18
  11. data/fastlane/lib/fastlane/actions/prompt.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/register_device.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/register_devices.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/set_changelog.rb +1 -1
  15. data/fastlane/lib/fastlane/actions/slather.rb +6 -0
  16. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +3 -1
  18. data/fastlane/lib/fastlane/actions/zip.rb +2 -2
  19. data/fastlane/lib/fastlane/documentation/markdown_docs_generator.rb +11 -5
  20. data/fastlane/lib/fastlane/version.rb +1 -1
  21. data/fastlane/swift/Deliverfile.swift +1 -1
  22. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  23. data/fastlane/swift/Fastlane.swift +89 -98
  24. data/fastlane/swift/Gymfile.swift +1 -1
  25. data/fastlane/swift/GymfileProtocol.swift +1 -1
  26. data/fastlane/swift/Matchfile.swift +1 -1
  27. data/fastlane/swift/MatchfileProtocol.swift +11 -3
  28. data/fastlane/swift/Precheckfile.swift +1 -1
  29. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  30. data/fastlane/swift/Scanfile.swift +1 -1
  31. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  32. data/fastlane/swift/Screengrabfile.swift +1 -1
  33. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  34. data/fastlane/swift/Snapshotfile.swift +1 -1
  35. data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
  36. data/fastlane/swift/formatting/Brewfile.lock.json +5 -5
  37. data/fastlane_core/lib/fastlane_core/build_watcher.rb +25 -6
  38. data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +5 -0
  39. data/match/lib/match/generator.rb +2 -1
  40. data/match/lib/match/options.rb +12 -2
  41. data/match/lib/match/runner.rb +100 -15
  42. data/pilot/lib/pilot/build_manager.rb +14 -3
  43. data/pilot/lib/pilot/manager.rb +3 -1
  44. data/pilot/lib/pilot/options.rb +21 -2
  45. data/precheck/lib/precheck/options.rb +1 -1
  46. data/sigh/lib/assets/resign.sh +1 -1
  47. data/sigh/lib/sigh/options.rb +6 -1
  48. data/sigh/lib/sigh/runner.rb +2 -2
  49. data/snapshot/lib/snapshot/options.rb +1 -1
  50. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +9 -1
  51. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
  52. data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
  53. data/spaceship/lib/spaceship/connect_api/models/build_beta_detail.rb +4 -0
  54. data/supply/lib/supply/uploader.rb +9 -6
  55. metadata +22 -25
  56. data/fastlane/lib/fastlane/actions/crashlytics.rb +0 -207
  57. data/fastlane/lib/fastlane/helper/crashlytics_helper.rb +0 -157
  58. data/spaceship/lib/spaceship/connect_api/testflight/.testflight.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1c0c051ec3343adfcc8dcc927954b9fe5e76bf56d813be5d4f0823695dcb835
4
- data.tar.gz: 328239727a6f80cca28a6524784cb2f4e1b39454f0c6f2e2cf036735c26f6811
3
+ metadata.gz: 4cd7eb437e3a1f8298553886732f358e31eef1c3cc91f43d39c8cfa47630962e
4
+ data.tar.gz: 10e833b578831c678fa5515c12cc9fb18c9668d9296871e487571d92ceedeb53
5
5
  SHA512:
6
- metadata.gz: c430d54e72ceb927d096d02ac12578e196194405a6398768656ded1b0274d6fdb1988487d400b6c3e7434e02b82f372ac200959f524afaa9374d385a4ab00a46
7
- data.tar.gz: 3800cfae6b4add96d08f98fa780c721d2444c4e81e1bf24e437e5e7e9f455682b198a7bc63246738fd758da7f0437dfb311d410632b0d22faa4af0e58e7d0301
6
+ metadata.gz: 7bda6c9251396e39f8d88efe075f5684cdd22b6a144732cc472ee711e4b6b192f31a9fb7ec6a387a224d8904e0097596cc13f9cb1006d96d30048f3cba6cd56f
7
+ data.tar.gz: 7a64bc28296e873afa02ac9af4f6c7d48d1d46c328a84218185b840e761f40cf5154385d390b10e024b8bd66a335a811fe9db0d09be2d1a7516f7c3d23c7d870
data/README.md CHANGED
@@ -35,17 +35,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
35
35
  <!-- This table is regenerated and resorted on each release -->
36
36
  <table id='team'>
37
37
  <tr>
38
- <td id='stefan-natchev'>
39
- <a href='https://github.com/snatchev'>
40
- <img src='https://github.com/snatchev.png' width='140px;'>
41
- </a>
42
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
43
- </td>
44
- <td id='maksym-grebenets'>
45
- <a href='https://github.com/mgrebenets'>
46
- <img src='https://github.com/mgrebenets.png' width='140px;'>
38
+ <td id='daniel-jankowski'>
39
+ <a href='https://github.com/mollyIV'>
40
+ <img src='https://github.com/mollyIV.png' width='140px;'>
47
41
  </a>
48
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
49
43
  </td>
50
44
  <td id='aaron-brager'>
51
45
  <a href='https://github.com/getaaron'>
@@ -53,63 +47,101 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
53
47
  </a>
54
48
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
55
49
  </td>
56
- <td id='satoshi-namai'>
57
- <a href='https://github.com/ainame'>
58
- <img src='https://github.com/ainame.png' width='140px;'>
59
- </a>
60
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
61
- </td>
62
50
  <td id='jorge-revuelta-h'>
63
51
  <a href='https://github.com/minuscorp'>
64
52
  <img src='https://github.com/minuscorp.png' width='140px;'>
65
53
  </a>
66
54
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
67
55
  </td>
56
+ <td id='danielle-tomlinson'>
57
+ <a href='https://github.com/endocrimes'>
58
+ <img src='https://github.com/endocrimes.png' width='140px;'>
59
+ </a>
60
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
61
+ </td>
62
+ <td id='jimmy-dee'>
63
+ <a href='https://github.com/jdee'>
64
+ <img src='https://github.com/jdee.png' width='140px;'>
65
+ </a>
66
+ <h4 align='center'>Jimmy Dee</h4>
67
+ </td>
68
68
  </tr>
69
69
  <tr>
70
+ <td id='max-ott'>
71
+ <a href='https://github.com/max-ott'>
72
+ <img src='https://github.com/max-ott.png' width='140px;'>
73
+ </a>
74
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
75
+ </td>
76
+ <td id='josh-holtz'>
77
+ <a href='https://github.com/joshdholtz'>
78
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
79
+ </a>
80
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
81
+ </td>
82
+ <td id='felix-krause'>
83
+ <a href='https://github.com/KrauseFx'>
84
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
85
+ </a>
86
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
87
+ </td>
70
88
  <td id='olivier-halligon'>
71
89
  <a href='https://github.com/AliSoftware'>
72
90
  <img src='https://github.com/AliSoftware.png' width='140px;'>
73
91
  </a>
74
92
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
75
93
  </td>
94
+ <td id='stefan-natchev'>
95
+ <a href='https://github.com/snatchev'>
96
+ <img src='https://github.com/snatchev.png' width='140px;'>
97
+ </a>
98
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
99
+ </td>
100
+ </tr>
101
+ <tr>
102
+ <td id='matthew-ellis'>
103
+ <a href='https://github.com/matthewellis'>
104
+ <img src='https://github.com/matthewellis.png' width='140px;'>
105
+ </a>
106
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
107
+ </td>
76
108
  <td id='manu-wallner'>
77
109
  <a href='https://github.com/milch'>
78
110
  <img src='https://github.com/milch.png' width='140px;'>
79
111
  </a>
80
112
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
81
113
  </td>
114
+ <td id='roger-oba'>
115
+ <a href='https://github.com/rogerluan'>
116
+ <img src='https://github.com/rogerluan.png' width='140px;'>
117
+ </a>
118
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
119
+ </td>
82
120
  <td id='joshua-liebowitz'>
83
121
  <a href='https://github.com/taquitos'>
84
122
  <img src='https://github.com/taquitos.png' width='140px;'>
85
123
  </a>
86
124
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
87
125
  </td>
88
- <td id='luka-mirosevic'>
89
- <a href='https://github.com/lmirosevic'>
90
- <img src='https://github.com/lmirosevic.png' width='140px;'>
91
- </a>
92
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
93
- </td>
94
- <td id='jan-piotrowski'>
95
- <a href='https://github.com/janpio'>
96
- <img src='https://github.com/janpio.png' width='140px;'>
126
+ <td id='helmut-januschka'>
127
+ <a href='https://github.com/hjanuschka'>
128
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
97
129
  </a>
98
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
99
131
  </td>
100
132
  </tr>
101
133
  <tr>
102
- <td id='daniel-jankowski'>
103
- <a href='https://github.com/mollyIV'>
104
- <img src='https://github.com/mollyIV.png' width='140px;'>
134
+ <td id='fumiya-nakamura'>
135
+ <a href='https://github.com/nafu'>
136
+ <img src='https://github.com/nafu.png' width='140px;'>
105
137
  </a>
106
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
138
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
107
139
  </td>
108
- <td id='helmut-januschka'>
109
- <a href='https://github.com/hjanuschka'>
110
- <img src='https://github.com/hjanuschka.png' width='140px;'>
140
+ <td id='kohki-miki'>
141
+ <a href='https://github.com/giginet'>
142
+ <img src='https://github.com/giginet.png' width='140px;'>
111
143
  </a>
112
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
113
145
  </td>
114
146
  <td id='jérôme-lacoste'>
115
147
  <a href='https://github.com/lacostej'>
@@ -117,57 +149,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
117
149
  </a>
118
150
  <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
119
151
  </td>
120
- <td id='matthew-ellis'>
121
- <a href='https://github.com/matthewellis'>
122
- <img src='https://github.com/matthewellis.png' width='140px;'>
152
+ <td id='andrew-mcburney'>
153
+ <a href='https://github.com/armcburney'>
154
+ <img src='https://github.com/armcburney.png' width='140px;'>
123
155
  </a>
124
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
125
157
  </td>
126
- <td id='fumiya-nakamura'>
127
- <a href='https://github.com/nafu'>
128
- <img src='https://github.com/nafu.png' width='140px;'>
158
+ <td id='luka-mirosevic'>
159
+ <a href='https://github.com/lmirosevic'>
160
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
129
161
  </a>
130
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
131
163
  </td>
132
164
  </tr>
133
165
  <tr>
134
- <td id='danielle-tomlinson'>
135
- <a href='https://github.com/endocrimes'>
136
- <img src='https://github.com/endocrimes.png' width='140px;'>
137
- </a>
138
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
139
- </td>
140
- <td id='roger-oba'>
141
- <a href='https://github.com/rogerluan'>
142
- <img src='https://github.com/rogerluan.png' width='140px;'>
143
- </a>
144
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
145
- </td>
146
166
  <td id='iulian-onofrei'>
147
167
  <a href='https://github.com/revolter'>
148
168
  <img src='https://github.com/revolter.png' width='140px;'>
149
169
  </a>
150
170
  <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
151
171
  </td>
152
- <td id='jimmy-dee'>
153
- <a href='https://github.com/jdee'>
154
- <img src='https://github.com/jdee.png' width='140px;'>
155
- </a>
156
- <h4 align='center'>Jimmy Dee</h4>
157
- </td>
158
- <td id='felix-krause'>
159
- <a href='https://github.com/KrauseFx'>
160
- <img src='https://github.com/KrauseFx.png' width='140px;'>
161
- </a>
162
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
163
- </td>
164
- </tr>
165
- <tr>
166
- <td id='max-ott'>
167
- <a href='https://github.com/max-ott'>
168
- <img src='https://github.com/max-ott.png' width='140px;'>
172
+ <td id='maksym-grebenets'>
173
+ <a href='https://github.com/mgrebenets'>
174
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
169
175
  </a>
170
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
171
177
  </td>
172
178
  <td id='manish-rathi'>
173
179
  <a href='https://github.com/crazymanish'>
@@ -175,23 +181,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
175
181
  </a>
176
182
  <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
177
183
  </td>
178
- <td id='kohki-miki'>
179
- <a href='https://github.com/giginet'>
180
- <img src='https://github.com/giginet.png' width='140px;'>
181
- </a>
182
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
183
- </td>
184
- <td id='andrew-mcburney'>
185
- <a href='https://github.com/armcburney'>
186
- <img src='https://github.com/armcburney.png' width='140px;'>
184
+ <td id='jan-piotrowski'>
185
+ <a href='https://github.com/janpio'>
186
+ <img src='https://github.com/janpio.png' width='140px;'>
187
187
  </a>
188
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
189
189
  </td>
190
- <td id='josh-holtz'>
191
- <a href='https://github.com/joshdholtz'>
192
- <img src='https://github.com/joshdholtz.png' width='140px;'>
190
+ <td id='satoshi-namai'>
191
+ <a href='https://github.com/ainame'>
192
+ <img src='https://github.com/ainame.png' width='140px;'>
193
193
  </a>
194
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  </table>
@@ -47,7 +47,7 @@ module Cert
47
47
  end),
48
48
  FastlaneCore::ConfigItem.new(key: :api_key,
49
49
  env_names: ["CERT_API_KEY", "DELIVER_API_KEY", "APP_STORE_CONNECT_API_KEY"],
50
- description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
50
+ description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
51
51
  type: Hash,
52
52
  optional: true,
53
53
  sensitive: true,
@@ -22,7 +22,7 @@ module Deliver
22
22
  end),
23
23
  FastlaneCore::ConfigItem.new(key: :api_key,
24
24
  env_names: ["DELIVER_API_KEY", "APP_STORE_CONNECT_API_KEY"],
25
- description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
25
+ description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
26
26
  type: Hash,
27
27
  optional: true,
28
28
  sensitive: true,
@@ -125,7 +125,7 @@ module Fastlane
125
125
  end),
126
126
  FastlaneCore::ConfigItem.new(key: :api_key,
127
127
  env_names: ["APPSTORE_BUILD_NUMBER_API_KEY", "APP_STORE_CONNECT_API_KEY"],
128
- description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
128
+ description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
129
129
  type: Hash,
130
130
  default_value: Fastlane::Actions.lane_context[Fastlane::Actions::SharedValues::APP_STORE_CONNECT_API_KEY],
131
131
  default_value_dynamic: true,
@@ -64,7 +64,7 @@ module Fastlane
64
64
  ['SIGH_PROFILE_PATHS', 'Paths in which certificates, key and profile are exported'],
65
65
  ['SIGH_UUID', 'UUID (Universally Unique IDentifier) of a provisioning profile'],
66
66
  ['SIGH_NAME', 'The name of the profile'],
67
- ['SIGH_PROFILE_TYPE', 'The profile type, can be appstore, adhoc, development, enterprise']
67
+ ['SIGH_PROFILE_TYPE', 'The profile type, can be app-store, ad-hoc, development, enterprise, developer-id, can be used in `build_app` as a default value for `export_method`']
68
68
  ]
69
69
  end
70
70
 
@@ -64,7 +64,7 @@ module Fastlane
64
64
  print_command_output: params[:print_command_output])
65
65
 
66
66
  # If we didn't build, then we return now, as it makes no sense to search for apk's in a non-`assemble` or non-`build` scenario
67
- return result unless task =~ /\b(assemble)/ || task =~ /\b(bundle)/
67
+ return result unless gradle_task =~ /\b(assemble)/ || gradle_task =~ /\b(bundle)/
68
68
 
69
69
  apk_search_path = File.join(project_dir, '**', 'build', 'outputs', 'apk', '**', '*.apk')
70
70
  aab_search_path = File.join(project_dir, '**', 'build', 'outputs', 'bundle', '**', '*.aab')
@@ -258,8 +258,21 @@ module Fastlane
258
258
  # ...
259
259
 
260
260
  properties: {
261
- "versionCode" => 100,
262
- "versionName" => "1.0.0",
261
+ "exampleNumber" => 100,
262
+ "exampleString" => "1.0.0",
263
+ # ...
264
+ }
265
+ )
266
+ ```
267
+
268
+ You can use this to change the version code and name of your app:
269
+ ```ruby
270
+ gradle(
271
+ # ...
272
+
273
+ properties: {
274
+ "android.injected.version.code" => 100,
275
+ "android.injected.version.name" => "1.0.0",
263
276
  # ...
264
277
  }
265
278
  )
@@ -32,7 +32,7 @@ module Fastlane
32
32
  def self.example_code
33
33
  [
34
34
  'commit = last_git_commit
35
- crashlytics(notes: commit[:message]) # message of commit
35
+ pilot(changelog: commit[:message]) # message of commit
36
36
  author = commit[:author] # author of the commit
37
37
  author_email = commit[:author_email] # email of the author of the commit
38
38
  hash = commit[:commit_hash] # long sha of commit
@@ -47,7 +47,7 @@ module Fastlane
47
47
  end),
48
48
  FastlaneCore::ConfigItem.new(key: :api_key,
49
49
  env_names: ["APPSTORE_BUILD_NUMBER_API_KEY", "APP_STORE_CONNECT_API_KEY"],
50
- description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
50
+ description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
51
51
  type: Hash,
52
52
  optional: true,
53
53
  sensitive: true,
@@ -8,7 +8,12 @@ module Fastlane
8
8
  try_early_stapling = params[:try_early_stapling]
9
9
  print_log = params[:print_log]
10
10
  verbose = params[:verbose]
11
- api_key_path = params[:api_key_path]
11
+
12
+ # Only set :api_key from SharedValues if :api_key_path isn't set (conflicting options)
13
+ unless params[:api_key_path]
14
+ params[:api_key] ||= Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
15
+ end
16
+ api_key = Spaceship::ConnectAPI::Token.from(hash: params[:api_key], filepath: params[:api_key_path])
12
17
 
13
18
  use_notarytool = params[:use_notarytool]
14
19
 
@@ -33,20 +38,18 @@ module Fastlane
33
38
  UI.user_error!('Could not read bundle identifier, provide as a parameter') unless bundle_id
34
39
 
35
40
  if use_notarytool
36
- notarytool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key_path, compressed_package_path)
41
+ notarytool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
37
42
  else
38
- altool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key_path, compressed_package_path)
43
+ altool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
39
44
  end
40
45
  end
41
46
 
42
- def self.notarytool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key_path, compressed_package_path)
47
+ def self.notarytool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
43
48
  temp_file = nil
44
49
 
45
50
  # Create authorization part of command with either API Key or Apple ID
46
51
  auth_parts = []
47
- if api_key_path
48
- api_key = Spaceship::ConnectAPI::Token.from_json_file(api_key_path)
49
-
52
+ if api_key
50
53
  # Writes key contents to temporary file for command
51
54
  require 'tempfile'
52
55
  temp_file = Tempfile.new
@@ -99,14 +102,14 @@ module Fastlane
99
102
  temp_file.delete if temp_file
100
103
  end
101
104
 
102
- def self.altool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key_path, compressed_package_path)
105
+ def self.altool(params, package_path, bundle_id, try_early_stapling, print_log, verbose, api_key, compressed_package_path)
103
106
  UI.message('Uploading package to notarization service, might take a while')
104
107
 
105
108
  notarization_upload_command = "xcrun altool --notarize-app -t osx -f \"#{compressed_package_path || package_path}\" --primary-bundle-id #{bundle_id} --output-format xml"
106
109
 
107
110
  notarization_info = {}
108
- with_notarize_authenticator(params, api_key_path) do |notarize_authenticator|
109
- notarization_upload_command << " --asc-provider \"#{params[:asc_provider]}\"" if params[:asc_provider] && api_key_path.nil?
111
+ with_notarize_authenticator(params, api_key) do |notarize_authenticator|
112
+ notarization_upload_command << " --asc-provider \"#{params[:asc_provider]}\"" if params[:asc_provider] && api_key.nil?
110
113
 
111
114
  notarization_upload_response = Actions.sh(
112
115
  notarize_authenticator.call(notarization_upload_command),
@@ -200,11 +203,10 @@ module Fastlane
200
203
  )
201
204
  end
202
205
 
203
- def self.with_notarize_authenticator(params, api_key_path)
204
- if api_key_path
206
+ def self.with_notarize_authenticator(params, api_key)
207
+ if api_key
205
208
  # From xcrun altool for --apiKey:
206
209
  # This option will search the following directories in sequence for a private key file with the name of 'AuthKey_<api_key>.p8': './private_keys', '~/private_keys', '~/.private_keys', and '~/.appstoreconnect/private_keys'.
207
- api_key = Spaceship::ConnectAPI::Token.from_json_file(api_key_path)
208
210
  api_key_folder_path = File.expand_path('~/.appstoreconnect/private_keys')
209
211
  api_key_file_path = File.join(api_key_folder_path, "AuthKey_#{api_key.key_id}.p8")
210
212
  directory_exists = File.directory?(api_key_folder_path)
@@ -271,7 +273,7 @@ module Fastlane
271
273
  description: 'Apple ID username',
272
274
  default_value: username,
273
275
  optional: true,
274
- conflicting_options: [:api_key_path],
276
+ conflicting_options: [:api_key_path, :api_key],
275
277
  default_value_dynamic: true),
276
278
  FastlaneCore::ConfigItem.new(key: :asc_provider,
277
279
  env_name: 'FL_NOTARIZE_ASC_PROVIDER',
@@ -291,13 +293,20 @@ module Fastlane
291
293
  default_value: false,
292
294
  type: Boolean),
293
295
  FastlaneCore::ConfigItem.new(key: :api_key_path,
294
- env_name: 'FL_NOTARIZE_API_KEY_PATH',
295
- description: 'Path to AppStore Connect API key',
296
+ env_names: ['FL_NOTARIZE_API_KEY_PATH', "APP_STORE_CONNECT_API_KEY_PATH"],
297
+ description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
296
298
  optional: true,
297
- conflicting_options: [:username],
299
+ conflicting_options: [:username, :api_key],
298
300
  verify_block: proc do |value|
299
301
  UI.user_error!("API Key not found at '#{value}'") unless File.exist?(value)
300
- end)
302
+ end),
303
+ FastlaneCore::ConfigItem.new(key: :api_key,
304
+ env_names: ['FL_NOTARIZE_API_KEY', "APP_STORE_CONNECT_API_KEY"],
305
+ description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
306
+ optional: true,
307
+ conflicting_options: [:username, :api_key_path],
308
+ sensitive: true,
309
+ type: Hash)
301
310
  ]
302
311
  end
303
312
 
@@ -98,7 +98,7 @@ module Fastlane
98
98
  multi_line_end_keyword: "END"
99
99
  )
100
100
 
101
- crashlytics(notes: changelog)'
101
+ pilot(changelog: changelog)'
102
102
  ]
103
103
  end
104
104
 
@@ -73,7 +73,7 @@ module Fastlane
73
73
  end),
74
74
  FastlaneCore::ConfigItem.new(key: :api_key,
75
75
  env_names: ["FL_REGISTER_DEVICE_API_KEY", "APP_STORE_CONNECT_API_KEY"],
76
- description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
76
+ description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
77
77
  type: Hash,
78
78
  default_value: Fastlane::Actions.lane_context[Fastlane::Actions::SharedValues::APP_STORE_CONNECT_API_KEY],
79
79
  default_value_dynamic: true,
@@ -121,7 +121,7 @@ module Fastlane
121
121
  end),
122
122
  FastlaneCore::ConfigItem.new(key: :api_key,
123
123
  env_names: ["FL_REGISTER_DEVICES_API_KEY", "APP_STORE_CONNECT_API_KEY"],
124
- description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
124
+ description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
125
125
  type: Hash,
126
126
  default_value: Fastlane::Actions.lane_context[Fastlane::Actions::SharedValues::APP_STORE_CONNECT_API_KEY],
127
127
  default_value_dynamic: true,
@@ -115,7 +115,7 @@ module Fastlane
115
115
  end),
116
116
  FastlaneCore::ConfigItem.new(key: :api_key,
117
117
  env_names: ["FL_SET_CHANGELOG_API_KEY", "APP_STORE_CONNECT_API_KEY"],
118
- description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#use-return-value-and-pass-in-as-an-option)",
118
+ description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
119
119
  type: Hash,
120
120
  default_value: Fastlane::Actions.lane_context[Fastlane::Actions::SharedValues::APP_STORE_CONNECT_API_KEY],
121
121
  default_value_dynamic: true,
@@ -9,6 +9,7 @@ module Fastlane
9
9
  jenkins: '--jenkins',
10
10
  buildkite: '--buildkite',
11
11
  teamcity: '--teamcity',
12
+ github: '--github',
12
13
 
13
14
  coveralls: '--coveralls',
14
15
  simple_output: '--simple-output',
@@ -155,6 +156,11 @@ module Fastlane
155
156
  env_name: "FL_SLATHER_INPUT_FORMAT", # The name of the environment variable
156
157
  description: "The input format that slather should look for",
157
158
  optional: true),
159
+ FastlaneCore::ConfigItem.new(key: :github,
160
+ env_name: "FL_SLATHER_GITHUB_ENABLED", # The name of the environment variable
161
+ description: "Tell slather that it is running on Github Actions",
162
+ type: Boolean,
163
+ optional: true),
158
164
  FastlaneCore::ConfigItem.new(key: :buildkite,
159
165
  env_name: "FL_SLATHER_BUILDKITE_ENABLED", # The name of the environment variable
160
166
  description: "Tell slather that it is running on Buildkite",
@@ -82,7 +82,7 @@ module Fastlane
82
82
  def self.output
83
83
  [
84
84
  ['MATCH_PROVISIONING_PROFILE_MAPPING', 'The match provisioning profile mapping'],
85
- ['SIGH_PROFILE_TYPE', 'The profile type, can be appstore, adhoc, development, enterprise']
85
+ ['SIGH_PROFILE_TYPE', 'The profile type, can be app-store, ad-hoc, development, enterprise, can be used in `build_app` as a default value for `export_method`']
86
86
  ]
87
87
  end
88
88
 
@@ -13,6 +13,8 @@ module Fastlane
13
13
  unless distribute_only
14
14
  values[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
15
15
  values[:ipa] = File.expand_path(values[:ipa]) if values[:ipa]
16
+ values[:pkg] ||= Actions.lane_context[SharedValues::PKG_OUTPUT_PATH]
17
+ values[:pkg] = File.expand_path(values[:pkg]) if values[:pkg]
16
18
  end
17
19
 
18
20
  # Only set :api_key from SharedValues if :api_key_path isn't set (conflicting options)
@@ -117,7 +119,7 @@ module Fastlane
117
119
  end
118
120
 
119
121
  def self.is_supported?(platform)
120
- [:ios].include?(platform)
122
+ [:ios, :mac, :tvos].include?(platform)
121
123
  end
122
124
  end
123
125
  end
@@ -10,8 +10,8 @@ module Fastlane
10
10
  @verbose = params[:verbose]
11
11
  @password = params[:password]
12
12
  @symlinks = params[:symlinks]
13
- @include = params[:include]
14
- @exclude = params[:exclude]
13
+ @include = params[:include] || []
14
+ @exclude = params[:exclude] || []
15
15
 
16
16
  @output_path += ".zip" unless @output_path.end_with?(".zip")
17
17
  end
@@ -134,15 +134,17 @@ module Fastlane
134
134
  require 'yaml'
135
135
  FileUtils.mkdir_p(target_path)
136
136
  docs_dir = File.join(target_path, "docs")
137
+ generated_actions_dir = File.join("generated", "actions")
138
+ FileUtils.mkdir_p(File.join(docs_dir, generated_actions_dir))
137
139
 
138
140
  # Generate actions.md
139
141
  template = File.join(Fastlane::ROOT, "lib/assets/Actions.md.erb")
140
142
  result = ERB.new(File.read(template), 0, '-').result(binding) # https://web.archive.org/web/20160430190141/www.rrn.dk/rubys-erb-templating-system
141
- File.write(File.join(docs_dir, "actions.md"), result)
143
+ File.write(File.join(docs_dir, "generated", "actions.md"), result)
142
144
 
143
- # Generate actions sub pages (e.g. actions/slather.md, actions/scan.md)
145
+ # Generate actions sub pages (e.g. generated/actions/slather.md, generated/actions/scan.md)
144
146
  all_actions_ref_yml = []
145
- FileUtils.mkdir_p(File.join(docs_dir, "actions"))
147
+ FileUtils.mkdir_p(File.join(docs_dir, generated_actions_dir))
146
148
  ActionsList.all_actions do |action|
147
149
  @action = action # to provide a reference in the .html.erb template
148
150
  @action_filename = filename_for_action(action)
@@ -165,10 +167,14 @@ module Fastlane
165
167
  template = File.join(Fastlane::ROOT, "lib/assets/ActionDetails.md.erb")
166
168
  result = ERB.new(File.read(template), 0, '-').result(binding) # https://web.archive.org/web/20160430190141/www.rrn.dk/rubys-erb-templating-system
167
169
 
168
- file_name = File.join("actions", "#{action.action_name}.md")
170
+ # Actions get placed in "generated/actions" directory
171
+ file_name = File.join(generated_actions_dir, "#{action.action_name}.md")
169
172
  File.write(File.join(docs_dir, file_name), result)
170
173
 
171
- all_actions_ref_yml << { action.action_name => file_name }
174
+ # The action pages when published get moved to the "actions" directory
175
+ # The mkdocs.yml file needs to reference the "actions" directory (not the "generated/actions" directory)
176
+ published_file_name = File.join("actions", "#{action.action_name}.md")
177
+ all_actions_ref_yml << { action.action_name => published_file_name }
172
178
  end
173
179
 
174
180
  # Modify the mkdocs.yml to list all the actions
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.192.0'.freeze
2
+ VERSION = '2.195.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '1.12.1'.freeze
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.192.0
20
+ // Generated with fastlane 2.195.0