fastlane 2.193.0 → 2.196.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 (59) 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 +13 -7
  6. data/fastlane/lib/fastlane/actions/gradle.rb +16 -3
  7. data/fastlane/lib/fastlane/actions/last_git_commit.rb +1 -1
  8. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +3 -4
  9. data/fastlane/lib/fastlane/actions/notarize.rb +27 -18
  10. data/fastlane/lib/fastlane/actions/prompt.rb +1 -1
  11. data/fastlane/lib/fastlane/actions/register_device.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/register_devices.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/set_changelog.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/slather.rb +6 -0
  15. data/fastlane/lib/fastlane/documentation/markdown_docs_generator.rb +11 -5
  16. data/fastlane/lib/fastlane/version.rb +1 -1
  17. data/fastlane/swift/Deliverfile.swift +1 -1
  18. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  19. data/fastlane/swift/Fastlane.swift +79 -100
  20. data/fastlane/swift/Gymfile.swift +1 -1
  21. data/fastlane/swift/GymfileProtocol.swift +1 -1
  22. data/fastlane/swift/LaneFileProtocol.swift +1 -1
  23. data/fastlane/swift/Matchfile.swift +1 -1
  24. data/fastlane/swift/MatchfileProtocol.swift +11 -3
  25. data/fastlane/swift/Precheckfile.swift +1 -1
  26. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  27. data/fastlane/swift/Runner.swift +1 -1
  28. data/fastlane/swift/Scanfile.swift +1 -1
  29. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  30. data/fastlane/swift/Screengrabfile.swift +1 -1
  31. data/fastlane/swift/ScreengrabfileProtocol.swift +3 -3
  32. data/fastlane/swift/Snapshotfile.swift +1 -1
  33. data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
  34. data/fastlane/swift/formatting/Brewfile.lock.json +17 -17
  35. data/fastlane_core/lib/fastlane_core/build_watcher.rb +1 -1
  36. data/fastlane_core/lib/fastlane_core/pkg_file_analyser.rb +5 -0
  37. data/match/lib/match/generator.rb +2 -1
  38. data/match/lib/match/options.rb +12 -2
  39. data/match/lib/match/runner.rb +95 -10
  40. data/pem/lib/pem/manager.rb +2 -1
  41. data/pem/lib/pem/options.rb +1 -1
  42. data/pilot/lib/pilot/options.rb +1 -1
  43. data/precheck/lib/precheck/options.rb +1 -1
  44. data/screengrab/lib/screengrab/options.rb +2 -2
  45. data/sigh/lib/assets/resign.sh +9 -6
  46. data/sigh/lib/sigh/options.rb +6 -1
  47. data/sigh/lib/sigh/runner.rb +2 -2
  48. data/snapshot/lib/snapshot/options.rb +1 -1
  49. data/snapshot/lib/snapshot/reports_generator.rb +8 -0
  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/token.rb +1 -1
  53. data/supply/lib/supply/client.rb +3 -3
  54. data/supply/lib/supply/uploader.rb +10 -7
  55. metadata +39 -39
  56. data/fastlane/lib/fastlane/actions/crashlytics.rb +0 -207
  57. data/fastlane/lib/fastlane/helper/crashlytics_helper.rb +0 -157
  58. data/match/lib/match/storage/.git_storage.rb.swp +0 -0
  59. data/match/lib/match/storage/.interface.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 599ea65ab3c0831e81c0a657ecca5362ade26af48cd9818943315dd956d161df
4
- data.tar.gz: d818284a88b0e792b650e2ef26acf045a7415ca2f44015a21b3c69a0d53dbc00
3
+ metadata.gz: 470f259a547c6b79dcb0015c1688edcdedd67fce63d7a53d5fe47caee659b233
4
+ data.tar.gz: 0dfac1fb999ccf2b25ebfd301dcd1347c9d6f67b469b8d785424fa8b26f9a0fb
5
5
  SHA512:
6
- metadata.gz: 3b9fdbf6f24a19127e1b1a831256e4d9b6ebe0fa3929acdba9279e2c994200112ffb5dcfd04b85f274bc6d36be255d92edc2815e35d786c98fa3f7c05a9ff4ad
7
- data.tar.gz: 34af6c765f4997ad611331d577de9575daaadc06f1e738c51603b0a4029da9bac656db2a2e67aae6b5da723e6c5bf666d57cc0b11a23e6348a168ea0773c1c3c
6
+ metadata.gz: 8a7e5dec51ab3c6baebc067b7549429947bf471e112251a8eadbee68ac4f2ea79c096e4664321f54e614184d2303d2163e339d2b6d8856c807ed382bf8620d47
7
+ data.tar.gz: 66090dc209412cce666bf4b29a0bf2f7103ed1dcec60097e01607f46e812d278c70c288a6ba615e891bc857f6ca0dda340e02d882849ab3e642aabd5a9013016
data/README.md CHANGED
@@ -35,23 +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='roger-oba'>
39
- <a href='https://github.com/rogerluan'>
40
- <img src='https://github.com/rogerluan.png' width='140px;'>
41
- </a>
42
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
43
- </td>
44
- <td id='helmut-januschka'>
45
- <a href='https://github.com/hjanuschka'>
46
- <img src='https://github.com/hjanuschka.png' width='140px;'>
47
- </a>
48
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
49
- </td>
50
- <td id='manish-rathi'>
51
- <a href='https://github.com/crazymanish'>
52
- <img src='https://github.com/crazymanish.png' width='140px;'>
38
+ <td id='stefan-natchev'>
39
+ <a href='https://github.com/snatchev'>
40
+ <img src='https://github.com/snatchev.png' width='140px;'>
53
41
  </a>
54
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
55
43
  </td>
56
44
  <td id='jorge-revuelta-h'>
57
45
  <a href='https://github.com/minuscorp'>
@@ -59,43 +47,55 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
59
47
  </a>
60
48
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
61
49
  </td>
62
- <td id='jimmy-dee'>
63
- <a href='https://github.com/jdee'>
64
- <img src='https://github.com/jdee.png' width='140px;'>
50
+ <td id='jérôme-lacoste'>
51
+ <a href='https://github.com/lacostej'>
52
+ <img src='https://github.com/lacostej.png' width='140px;'>
65
53
  </a>
66
- <h4 align='center'>Jimmy Dee</h4>
54
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
55
+ </td>
56
+ <td id='olivier-halligon'>
57
+ <a href='https://github.com/AliSoftware'>
58
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
59
+ </a>
60
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
61
+ </td>
62
+ <td id='roger-oba'>
63
+ <a href='https://github.com/rogerluan'>
64
+ <img src='https://github.com/rogerluan.png' width='140px;'>
65
+ </a>
66
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='danielle-tomlinson'>
71
- <a href='https://github.com/endocrimes'>
72
- <img src='https://github.com/endocrimes.png' width='140px;'>
70
+ <td id='maksym-grebenets'>
71
+ <a href='https://github.com/mgrebenets'>
72
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
73
73
  </a>
74
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
75
75
  </td>
76
- <td id='felix-krause'>
77
- <a href='https://github.com/KrauseFx'>
78
- <img src='https://github.com/KrauseFx.png' width='140px;'>
76
+ <td id='manish-rathi'>
77
+ <a href='https://github.com/crazymanish'>
78
+ <img src='https://github.com/crazymanish.png' width='140px;'>
79
79
  </a>
80
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
80
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
81
81
  </td>
82
- <td id='andrew-mcburney'>
83
- <a href='https://github.com/armcburney'>
84
- <img src='https://github.com/armcburney.png' width='140px;'>
82
+ <td id='helmut-januschka'>
83
+ <a href='https://github.com/hjanuschka'>
84
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
85
85
  </a>
86
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
86
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
87
87
  </td>
88
- <td id='aaron-brager'>
89
- <a href='https://github.com/getaaron'>
90
- <img src='https://github.com/getaaron.png' width='140px;'>
88
+ <td id='matthew-ellis'>
89
+ <a href='https://github.com/matthewellis'>
90
+ <img src='https://github.com/matthewellis.png' width='140px;'>
91
91
  </a>
92
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
92
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
93
93
  </td>
94
- <td id='satoshi-namai'>
95
- <a href='https://github.com/ainame'>
96
- <img src='https://github.com/ainame.png' width='140px;'>
94
+ <td id='kohki-miki'>
95
+ <a href='https://github.com/giginet'>
96
+ <img src='https://github.com/giginet.png' width='140px;'>
97
97
  </a>
98
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
98
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
99
99
  </td>
100
100
  </tr>
101
101
  <tr>
@@ -105,11 +105,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
105
105
  </a>
106
106
  <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
107
107
  </td>
108
- <td id='jan-piotrowski'>
109
- <a href='https://github.com/janpio'>
110
- <img src='https://github.com/janpio.png' width='140px;'>
108
+ <td id='danielle-tomlinson'>
109
+ <a href='https://github.com/endocrimes'>
110
+ <img src='https://github.com/endocrimes.png' width='140px;'>
111
111
  </a>
112
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
112
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
113
113
  </td>
114
114
  <td id='fumiya-nakamura'>
115
115
  <a href='https://github.com/nafu'>
@@ -117,49 +117,49 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
117
117
  </a>
118
118
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
119
119
  </td>
120
- <td id='maksym-grebenets'>
121
- <a href='https://github.com/mgrebenets'>
122
- <img src='https://github.com/mgrebenets.png' width='140px;'>
120
+ <td id='jan-piotrowski'>
121
+ <a href='https://github.com/janpio'>
122
+ <img src='https://github.com/janpio.png' width='140px;'>
123
123
  </a>
124
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
125
125
  </td>
126
- <td id='kohki-miki'>
127
- <a href='https://github.com/giginet'>
128
- <img src='https://github.com/giginet.png' width='140px;'>
126
+ <td id='satoshi-namai'>
127
+ <a href='https://github.com/ainame'>
128
+ <img src='https://github.com/ainame.png' width='140px;'>
129
129
  </a>
130
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
131
131
  </td>
132
132
  </tr>
133
133
  <tr>
134
- <td id='iulian-onofrei'>
135
- <a href='https://github.com/revolter'>
136
- <img src='https://github.com/revolter.png' width='140px;'>
134
+ <td id='luka-mirosevic'>
135
+ <a href='https://github.com/lmirosevic'>
136
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
137
137
  </a>
138
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
138
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
139
139
  </td>
140
- <td id='matthew-ellis'>
141
- <a href='https://github.com/matthewellis'>
142
- <img src='https://github.com/matthewellis.png' width='140px;'>
140
+ <td id='felix-krause'>
141
+ <a href='https://github.com/KrauseFx'>
142
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
143
143
  </a>
144
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
145
145
  </td>
146
- <td id='stefan-natchev'>
147
- <a href='https://github.com/snatchev'>
148
- <img src='https://github.com/snatchev.png' width='140px;'>
146
+ <td id='josh-holtz'>
147
+ <a href='https://github.com/joshdholtz'>
148
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
149
149
  </a>
150
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
150
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
151
151
  </td>
152
- <td id='olivier-halligon'>
153
- <a href='https://github.com/AliSoftware'>
154
- <img src='https://github.com/AliSoftware.png' width='140px;'>
152
+ <td id='aaron-brager'>
153
+ <a href='https://github.com/getaaron'>
154
+ <img src='https://github.com/getaaron.png' width='140px;'>
155
155
  </a>
156
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
157
157
  </td>
158
- <td id='jérôme-lacoste'>
159
- <a href='https://github.com/lacostej'>
160
- <img src='https://github.com/lacostej.png' width='140px;'>
158
+ <td id='jimmy-dee'>
159
+ <a href='https://github.com/jdee'>
160
+ <img src='https://github.com/jdee.png' width='140px;'>
161
161
  </a>
162
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
162
+ <h4 align='center'>Jimmy Dee</h4>
163
163
  </td>
164
164
  </tr>
165
165
  <tr>
@@ -169,17 +169,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
169
169
  </a>
170
170
  <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
171
171
  </td>
172
- <td id='joshua-liebowitz'>
173
- <a href='https://github.com/taquitos'>
174
- <img src='https://github.com/taquitos.png' width='140px;'>
175
- </a>
176
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
177
- </td>
178
- <td id='luka-mirosevic'>
179
- <a href='https://github.com/lmirosevic'>
180
- <img src='https://github.com/lmirosevic.png' width='140px;'>
172
+ <td id='andrew-mcburney'>
173
+ <a href='https://github.com/armcburney'>
174
+ <img src='https://github.com/armcburney.png' width='140px;'>
181
175
  </a>
182
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
176
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
183
177
  </td>
184
178
  <td id='manu-wallner'>
185
179
  <a href='https://github.com/milch'>
@@ -187,11 +181,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
187
181
  </a>
188
182
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
189
183
  </td>
190
- <td id='josh-holtz'>
191
- <a href='https://github.com/joshdholtz'>
192
- <img src='https://github.com/joshdholtz.png' width='140px;'>
184
+ <td id='joshua-liebowitz'>
185
+ <a href='https://github.com/taquitos'>
186
+ <img src='https://github.com/taquitos.png' width='140px;'>
193
187
  </a>
194
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
188
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
189
+ </td>
190
+ <td id='iulian-onofrei'>
191
+ <a href='https://github.com/revolter'>
192
+ <img src='https://github.com/revolter.png' width='140px;'>
193
+ </a>
194
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</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,
@@ -9,9 +9,18 @@ module Fastlane
9
9
 
10
10
  class AppStoreBuildNumberAction < Action
11
11
  def self.run(params)
12
+ build_v, build_nr = get_build_version_and_number(params)
13
+
14
+ Actions.lane_context[SharedValues::LATEST_BUILD_NUMBER] = build_nr
15
+ Actions.lane_context[SharedValues::LATEST_VERSION] = build_v
16
+
17
+ return build_nr
18
+ end
19
+
20
+ def self.get_build_version_and_number(params)
12
21
  require 'spaceship'
13
22
 
14
- result = get_build_number(params)
23
+ result = get_build_info(params)
15
24
  build_nr = result.build_nr
16
25
 
17
26
  # Convert build_nr to int (for legacy use) if no "." in string
@@ -19,13 +28,10 @@ module Fastlane
19
28
  build_nr = build_nr.to_i
20
29
  end
21
30
 
22
- Actions.lane_context[SharedValues::LATEST_BUILD_NUMBER] = build_nr
23
- Actions.lane_context[SharedValues::LATEST_VERSION] = result.build_v
24
-
25
- return build_nr
31
+ return result.build_v, build_nr
26
32
  end
27
33
 
28
- def self.get_build_number(params)
34
+ def self.get_build_info(params)
29
35
  # Prompts select team if multiple teams and none specified
30
36
  if (api_token = Spaceship::ConnectAPI::Token.from(hash: params[:api_key], filepath: params[:api_key_path]))
31
37
  UI.message("Creating authorization token for App Store Connect API")
@@ -125,7 +131,7 @@ module Fastlane
125
131
  end),
126
132
  FastlaneCore::ConfigItem.new(key: :api_key,
127
133
  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)",
134
+ description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
129
135
  type: Hash,
130
136
  default_value: Fastlane::Actions.lane_context[Fastlane::Actions::SharedValues::APP_STORE_CONNECT_API_KEY],
131
137
  default_value_dynamic: true,
@@ -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
@@ -9,9 +9,8 @@ module Fastlane
9
9
 
10
10
  class LatestTestflightBuildNumberAction < Action
11
11
  def self.run(params)
12
- AppStoreBuildNumberAction.run(params)
13
- build_nr = Actions.lane_context[SharedValues::LATEST_BUILD_NUMBER]
14
- build_v = Actions.lane_context[SharedValues::LATEST_VERSION]
12
+ build_v, build_nr = AppStoreBuildNumberAction.get_build_version_and_number(params)
13
+
15
14
  Actions.lane_context[SharedValues::LATEST_TESTFLIGHT_BUILD_NUMBER] = build_nr
16
15
  Actions.lane_context[SharedValues::LATEST_TESTFLIGHT_VERSION] = build_v
17
16
  return build_nr
@@ -47,7 +46,7 @@ module Fastlane
47
46
  end),
48
47
  FastlaneCore::ConfigItem.new(key: :api_key,
49
48
  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)",
49
+ description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
51
50
  type: Hash,
52
51
  optional: true,
53
52
  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",
@@ -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.193.0'.freeze
2
+ VERSION = '2.196.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.193.0
20
+ // Generated with fastlane 2.196.0