fastlane 2.193.0 → 2.196.0

Sign up to get free protection for your applications and to get access to all the features.
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