fastlane 2.146.1 → 2.149.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +82 -82
  3. data/cert/lib/cert/commands_generator.rb +1 -0
  4. data/credentials_manager/lib/credentials_manager/cli.rb +2 -0
  5. data/deliver/lib/deliver/app_screenshot.rb +3 -3
  6. data/deliver/lib/deliver/commands_generator.rb +1 -0
  7. data/deliver/lib/deliver/html_generator.rb +2 -2
  8. data/deliver/lib/deliver/submit_for_review.rb +5 -1
  9. data/fastlane/lib/assets/custom_action_template.rb +6 -6
  10. data/fastlane/lib/assets/s3_html_template.erb +1 -1
  11. data/fastlane/lib/fastlane/actions/cocoapods.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/crashlytics.rb +0 -4
  13. data/fastlane/lib/fastlane/actions/docs/build_app.md +1 -1
  14. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +42 -2
  15. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +3 -1
  16. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  17. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +2 -2
  18. data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +12 -0
  19. data/fastlane/lib/fastlane/actions/get_managed_play_store_publishing_rights.rb +1 -1
  20. data/fastlane/lib/fastlane/actions/git_branch.rb +1 -1
  21. data/fastlane/lib/fastlane/actions/hipchat.rb +1 -1
  22. data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +1 -1
  23. data/fastlane/lib/fastlane/actions/set_pod_key.rb +3 -3
  24. data/fastlane/lib/fastlane/actions/slack.rb +1 -1
  25. data/fastlane/lib/fastlane/actions/slather.rb +8 -1
  26. data/fastlane/lib/fastlane/actions/swiftlint.rb +14 -0
  27. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/testfairy.rb +18 -3
  29. data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +2 -2
  30. data/fastlane/lib/fastlane/actions/verify_xcode.rb +7 -0
  31. data/fastlane/lib/fastlane/actions/xcodebuild.rb +4 -4
  32. data/fastlane/lib/fastlane/cli_tools_distributor.rb +28 -6
  33. data/fastlane/lib/fastlane/commands_generator.rb +5 -2
  34. data/fastlane/lib/fastlane/documentation/actions_list.rb +1 -1
  35. data/fastlane/lib/fastlane/helper/lane_helper.rb +13 -0
  36. data/fastlane/lib/fastlane/lane_manager.rb +0 -10
  37. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +3 -3
  38. data/fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml +29 -0
  39. data/fastlane/lib/fastlane/swift_fastlane_function.rb +15 -2
  40. data/fastlane/lib/fastlane/swift_lane_manager.rb +0 -8
  41. data/fastlane/lib/fastlane/version.rb +1 -1
  42. data/fastlane/swift/Deliverfile.swift +1 -1
  43. data/fastlane/swift/Fastlane.swift +130 -26
  44. data/fastlane/swift/Gymfile.swift +1 -1
  45. data/fastlane/swift/GymfileProtocol.swift +1 -1
  46. data/fastlane/swift/LaneFileProtocol.swift +5 -2
  47. data/fastlane/swift/Matchfile.swift +1 -1
  48. data/fastlane/swift/MatchfileProtocol.swift +9 -1
  49. data/fastlane/swift/Precheckfile.swift +1 -1
  50. data/fastlane/swift/Scanfile.swift +1 -1
  51. data/fastlane/swift/ScanfileProtocol.swift +15 -3
  52. data/fastlane/swift/Screengrabfile.swift +1 -1
  53. data/fastlane/swift/Snapshotfile.swift +1 -1
  54. data/fastlane/swift/SnapshotfileProtocol.swift +25 -1
  55. data/fastlane_core/lib/fastlane_core/helper.rb +17 -0
  56. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +46 -2
  57. data/frameit/lib/frameit/commands_generator.rb +1 -0
  58. data/frameit/lib/frameit/device_types.rb +10 -0
  59. data/frameit/lib/frameit/options.rb +5 -2
  60. data/frameit/lib/frameit/runner.rb +5 -0
  61. data/frameit/lib/frameit/screenshot.rb +1 -0
  62. data/gym/lib/gym/generators/package_command_generator.rb +4 -0
  63. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +4 -0
  64. data/gym/lib/gym/options.rb +1 -1
  65. data/gym/lib/gym/runner.rb +14 -0
  66. data/match/lib/match/change_password.rb +1 -18
  67. data/match/lib/match/commands_generator.rb +1 -0
  68. data/match/lib/match/encryption/openssl.rb +1 -1
  69. data/match/lib/match/generator.rb +7 -2
  70. data/match/lib/match/nuke.rb +21 -16
  71. data/match/lib/match/options.rb +23 -1
  72. data/match/lib/match/storage/git_storage.rb +4 -0
  73. data/match/lib/match/storage/google_cloud_storage.rb +4 -0
  74. data/match/lib/match/storage/interface.rb +4 -0
  75. data/match/lib/match/storage/s3_storage.rb +4 -0
  76. data/match/lib/match/utils.rb +1 -1
  77. data/pem/lib/pem/commands_generator.rb +1 -0
  78. data/pilot/lib/pilot/build_manager.rb +23 -7
  79. data/pilot/lib/pilot/options.rb +5 -0
  80. data/produce/lib/produce/commands_generator.rb +1 -0
  81. data/scan/lib/scan/.test_command_generator.rb.swp +0 -0
  82. data/scan/lib/scan/detect_values.rb +3 -0
  83. data/scan/lib/scan/options.rb +26 -3
  84. data/scan/lib/scan/runner.rb +2 -0
  85. data/scan/lib/scan/test_command_generator.rb +7 -2
  86. data/scan/lib/scan/test_result_parser.rb +9 -2
  87. data/screengrab/lib/screengrab/runner.rb +10 -9
  88. data/sigh/lib/sigh/commands_generator.rb +1 -0
  89. data/sigh/lib/sigh/options.rb +7 -1
  90. data/sigh/lib/sigh/runner.rb +2 -1
  91. data/snapshot/lib/assets/SnapfileTemplate +3 -0
  92. data/snapshot/lib/assets/SnapshotHelper.swift +12 -33
  93. data/snapshot/lib/snapshot/.test_command_generator_base.rb.swp +0 -0
  94. data/snapshot/lib/snapshot/detect_values.rb +15 -0
  95. data/snapshot/lib/snapshot/options.rb +42 -0
  96. data/snapshot/lib/snapshot/reports_generator.rb +1 -1
  97. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  98. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +4 -0
  99. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +24 -1
  100. data/snapshot/lib/snapshot/test_command_generator.rb +8 -3
  101. data/snapshot/lib/snapshot/test_command_generator_base.rb +10 -1
  102. data/spaceship/lib/spaceship/base.rb +1 -1
  103. data/spaceship/lib/spaceship/client.rb +9 -1
  104. data/spaceship/lib/spaceship/commands_generator.rb +1 -0
  105. data/spaceship/lib/spaceship/connect_api/model.rb +6 -0
  106. data/spaceship/lib/spaceship/connect_api/models/build.rb +4 -0
  107. data/spaceship/lib/spaceship/errors.rb +3 -0
  108. data/spaceship/lib/spaceship/tunes/iap.rb +15 -0
  109. data/spaceship/lib/spaceship/tunes/tunes_client.rb +14 -0
  110. data/supply/lib/supply/commands_generator.rb +1 -0
  111. data/supply/lib/supply/options.rb +9 -0
  112. data/supply/lib/supply/uploader.rb +4 -0
  113. metadata +46 -30
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 840f7025891d2ec9c10c0909e6297b7d036b929ec2df20df12d9f4c6947a511b
4
- data.tar.gz: 562429cfd8fd189564f0ec40fb6e278b61517d4c38efc090ac0228e33a15453a
3
+ metadata.gz: 7e38d836b49a278f1c3fd95c820aa3fe9dd7fa4d7f3c0fedfa5ff4fdf4ef033a
4
+ data.tar.gz: 7a5d7180b0bf7f32989a7dbc8396a2215d68e645691f0c7afff75817324a3e1e
5
5
  SHA512:
6
- metadata.gz: af344e7c9f56a9c4d97e2cf9ef6b798719fdc697063495a740a606a154bbda05df19451a196f4d60e6b9faf32ebaf9b65ba7690b9dc870dc9f23f754dab52be5
7
- data.tar.gz: 3c9718177512614b392e500c5e99ee5592f1880ac4b44ff587096e93bfb14589707243d30582f9482b32b3166bd70b3cfbef23b6b5002e133562204bf0955f93
6
+ metadata.gz: 51f0e319102f54e6e1a3878b40adf4a019042e64fcee0047d81564321f5e6b11803ac5701171f7e5ef23403f8ed169204e18635109a94928e61334b16cb36f22
7
+ data.tar.gz: 8d86698444bc4f689bc7ada08f30e5e9b335f8f32e8a87c7d9f919bb99f148afd0c4fe84abd421fe2c3114f9c530f75cc26dd360d7108a5f6e93a820ed2bedcc
data/README.md CHANGED
@@ -34,61 +34,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
34
34
  <!-- This table is regenerated and resorted on each release -->
35
35
  <table id='team'>
36
36
  <tr>
37
- <td id='daniel-jankowski'>
38
- <a href='https://github.com/mollyIV'>
39
- <img src='https://github.com/mollyIV.png?size=140'>
40
- </a>
41
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
42
- </td>
43
- <td id='fumiya-nakamura'>
44
- <a href='https://github.com/nafu'>
45
- <img src='https://github.com/nafu.png?size=140'>
46
- </a>
47
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
48
- </td>
49
- <td id='matthew-ellis'>
50
- <a href='https://github.com/matthewellis'>
51
- <img src='https://github.com/matthewellis.png?size=140'>
52
- </a>
53
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
54
- </td>
55
37
  <td id='iulian-onofrei'>
56
38
  <a href='https://github.com/revolter'>
57
39
  <img src='https://github.com/revolter.png?size=140'>
58
40
  </a>
59
41
  <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
60
42
  </td>
61
- <td id='jérôme-lacoste'>
62
- <a href='https://github.com/lacostej'>
63
- <img src='https://github.com/lacostej.png?size=140'>
64
- </a>
65
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
66
- </td>
67
- </tr>
68
- <tr>
69
- <td id='olivier-halligon'>
70
- <a href='https://github.com/AliSoftware'>
71
- <img src='https://github.com/AliSoftware.png?size=140'>
72
- </a>
73
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
74
- </td>
75
- <td id='josh-holtz'>
76
- <a href='https://github.com/joshdholtz'>
77
- <img src='https://github.com/joshdholtz.png?size=140'>
78
- </a>
79
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
80
- </td>
81
- <td id='aaron-brager'>
82
- <a href='https://github.com/getaaron'>
83
- <img src='https://github.com/getaaron.png?size=140'>
84
- </a>
85
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
86
- </td>
87
- <td id='max-ott'>
88
- <a href='https://github.com/max-ott'>
89
- <img src='https://github.com/max-ott.png?size=140'>
43
+ <td id='stefan-natchev'>
44
+ <a href='https://github.com/snatchev'>
45
+ <img src='https://github.com/snatchev.png?size=140'>
90
46
  </a>
91
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
47
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
92
48
  </td>
93
49
  <td id='joshua-liebowitz'>
94
50
  <a href='https://github.com/taquitos'>
@@ -96,6 +52,18 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
96
52
  </a>
97
53
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
98
54
  </td>
55
+ <td id='helmut-januschka'>
56
+ <a href='https://github.com/hjanuschka'>
57
+ <img src='https://github.com/hjanuschka.png?size=140'>
58
+ </a>
59
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
60
+ </td>
61
+ <td id='jorge-revuelta-h'>
62
+ <a href='https://github.com/minuscorp'>
63
+ <img src='https://github.com/minuscorp.png?size=140'>
64
+ </a>
65
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
66
+ </td>
99
67
  </tr>
100
68
  <tr>
101
69
  <td id='luka-mirosevic'>
@@ -104,29 +72,29 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
104
72
  </a>
105
73
  <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
106
74
  </td>
107
- <td id='stefan-natchev'>
108
- <a href='https://github.com/snatchev'>
109
- <img src='https://github.com/snatchev.png?size=140'>
110
- </a>
111
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
112
- </td>
113
- <td id='helmut-januschka'>
114
- <a href='https://github.com/hjanuschka'>
115
- <img src='https://github.com/hjanuschka.png?size=140'>
116
- </a>
117
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
118
- </td>
119
75
  <td id='danielle-tomlinson'>
120
76
  <a href='https://github.com/endocrimes'>
121
77
  <img src='https://github.com/endocrimes.png?size=140'>
122
78
  </a>
123
79
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
124
80
  </td>
125
- <td id='andrew-mcburney'>
126
- <a href='https://github.com/armcburney'>
127
- <img src='https://github.com/armcburney.png?size=140'>
81
+ <td id='jan-piotrowski'>
82
+ <a href='https://github.com/janpio'>
83
+ <img src='https://github.com/janpio.png?size=140'>
128
84
  </a>
129
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
86
+ </td>
87
+ <td id='aaron-brager'>
88
+ <a href='https://github.com/getaaron'>
89
+ <img src='https://github.com/getaaron.png?size=140'>
90
+ </a>
91
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
92
+ </td>
93
+ <td id='olivier-halligon'>
94
+ <a href='https://github.com/AliSoftware'>
95
+ <img src='https://github.com/AliSoftware.png?size=140'>
96
+ </a>
97
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
130
98
  </td>
131
99
  </tr>
132
100
  <tr>
@@ -136,44 +104,76 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
136
104
  </a>
137
105
  <h4 align='center'>Jimmy Dee</h4>
138
106
  </td>
107
+ <td id='daniel-jankowski'>
108
+ <a href='https://github.com/mollyIV'>
109
+ <img src='https://github.com/mollyIV.png?size=140'>
110
+ </a>
111
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
112
+ </td>
113
+ <td id='felix-krause'>
114
+ <a href='https://github.com/KrauseFx'>
115
+ <img src='https://github.com/KrauseFx.png?size=140'>
116
+ </a>
117
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
118
+ </td>
119
+ <td id='matthew-ellis'>
120
+ <a href='https://github.com/matthewellis'>
121
+ <img src='https://github.com/matthewellis.png?size=140'>
122
+ </a>
123
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
124
+ </td>
139
125
  <td id='manu-wallner'>
140
126
  <a href='https://github.com/milch'>
141
127
  <img src='https://github.com/milch.png?size=140'>
142
128
  </a>
143
129
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
144
130
  </td>
145
- <td id='maksym-grebenets'>
146
- <a href='https://github.com/mgrebenets'>
147
- <img src='https://github.com/mgrebenets.png?size=140'>
131
+ </tr>
132
+ <tr>
133
+ <td id='andrew-mcburney'>
134
+ <a href='https://github.com/armcburney'>
135
+ <img src='https://github.com/armcburney.png?size=140'>
148
136
  </a>
149
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
137
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
150
138
  </td>
151
- <td id='jan-piotrowski'>
152
- <a href='https://github.com/janpio'>
153
- <img src='https://github.com/janpio.png?size=140'>
139
+ <td id='jérôme-lacoste'>
140
+ <a href='https://github.com/lacostej'>
141
+ <img src='https://github.com/lacostej.png?size=140'>
154
142
  </a>
155
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
156
144
  </td>
157
- <td id='felix-krause'>
158
- <a href='https://github.com/KrauseFx'>
159
- <img src='https://github.com/KrauseFx.png?size=140'>
145
+ <td id='max-ott'>
146
+ <a href='https://github.com/max-ott'>
147
+ <img src='https://github.com/max-ott.png?size=140'>
160
148
  </a>
161
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
150
+ </td>
151
+ <td id='josh-holtz'>
152
+ <a href='https://github.com/joshdholtz'>
153
+ <img src='https://github.com/joshdholtz.png?size=140'>
154
+ </a>
155
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
156
+ </td>
157
+ <td id='fumiya-nakamura'>
158
+ <a href='https://github.com/nafu'>
159
+ <img src='https://github.com/nafu.png?size=140'>
160
+ </a>
161
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  <tr>
165
+ <td id='maksym-grebenets'>
166
+ <a href='https://github.com/mgrebenets'>
167
+ <img src='https://github.com/mgrebenets.png?size=140'>
168
+ </a>
169
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
170
+ </td>
165
171
  <td id='kohki-miki'>
166
172
  <a href='https://github.com/giginet'>
167
173
  <img src='https://github.com/giginet.png?size=140'>
168
174
  </a>
169
175
  <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
170
176
  </td>
171
- <td id='jorge-revuelta-h'>
172
- <a href='https://github.com/minuscorp'>
173
- <img src='https://github.com/minuscorp.png?size=140'>
174
- </a>
175
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
176
- </td>
177
177
  </table>
178
178
 
179
179
  Special thanks to all [contributors](https://github.com/fastlane/fastlane/graphs/contributors) for extending and improving _fastlane_.
@@ -26,6 +26,7 @@ module Cert
26
26
  program :help_formatter, :compact
27
27
 
28
28
  global_option('--verbose') { FastlaneCore::Globals.verbose = true }
29
+ global_option('--env STRING[,STRING2]', String, 'Add environment(s) to use with `dotenv`')
29
30
 
30
31
  command :create do |c|
31
32
  c.syntax = 'fastlane cert create'
@@ -12,6 +12,8 @@ module CredentialsManager
12
12
  program :version, Fastlane::VERSION
13
13
  program :description, 'Manage credentials for fastlane tools.'
14
14
 
15
+ global_option('--env STRING[,STRING2]', String, 'Add environment(s) to use with `dotenv`')
16
+
15
17
  # Command to add entry to Keychain
16
18
  command :add do |c|
17
19
  c.syntax = 'fastlane fastlane-credentials add'
@@ -97,7 +97,7 @@ module Deliver
97
97
  matching = {
98
98
  ScreenSize::IOS_35 => "iphone35",
99
99
  ScreenSize::IOS_40 => "iphone4",
100
- ScreenSize::IOS_47 => "iphone6", # also 7 and 8
100
+ ScreenSize::IOS_47 => "iphone6", # also 7 & 8
101
101
  ScreenSize::IOS_55 => "iphone6Plus", # also 7 Plus & 8 Plus
102
102
  ScreenSize::IOS_58 => "iphone58",
103
103
  ScreenSize::IOS_65 => "iphone65",
@@ -129,8 +129,8 @@ module Deliver
129
129
  matching = {
130
130
  ScreenSize::IOS_35 => "iPhone 4",
131
131
  ScreenSize::IOS_40 => "iPhone 5",
132
- ScreenSize::IOS_47 => "iPhone 6", # and 7
133
- ScreenSize::IOS_55 => "iPhone 6 Plus", # and 7 Plus
132
+ ScreenSize::IOS_47 => "iPhone 6", # also 7 & 8
133
+ ScreenSize::IOS_55 => "iPhone 6 Plus", # also 7 Plus & 8 Plus
134
134
  ScreenSize::IOS_58 => "iPhone XS",
135
135
  ScreenSize::IOS_61 => "iPhone XR",
136
136
  ScreenSize::IOS_65 => "iPhone XS Max",
@@ -50,6 +50,7 @@ module Deliver
50
50
  program :help_formatter, :compact
51
51
 
52
52
  global_option('--verbose') { FastlaneCore::Globals.verbose = true }
53
+ global_option('--env STRING[,STRING2]', String, 'Add environment(s) to use with `dotenv`')
53
54
 
54
55
  always_trace!
55
56
 
@@ -35,8 +35,8 @@ module Deliver
35
35
  # Returns a path relative to FastlaneFolder.path
36
36
  # This is needed as the Preview.html file is located inside FastlaneFolder.path
37
37
  def render_relative_path(export_path, path)
38
- export_path = Pathname.new(export_path)
39
- path = Pathname.new(path).relative_path_from(export_path)
38
+ export_path = Pathname.new(File.expand_path(export_path))
39
+ path = Pathname.new(File.expand_path(path)).relative_path_from(export_path)
40
40
  return path.to_path
41
41
  end
42
42
 
@@ -36,7 +36,11 @@ module Deliver
36
36
 
37
37
  if options[:build_number] && options[:build_number] != "latest"
38
38
  UI.message("Selecting existing build-number: #{options[:build_number]}")
39
- build = v.candidate_builds.detect { |a| a.build_version == options[:build_number] }
39
+ if app_version
40
+ build = v.candidate_builds.detect { |a| a.build_version == options[:build_number] && a.train_version == app_version }
41
+ else
42
+ build = v.candidate_builds.detect { |a| a.build_version == options[:build_number] }
43
+ end
40
44
  unless build
41
45
  UI.user_error!("Build number: #{options[:build_number]} does not exist")
42
46
  end
@@ -29,8 +29,8 @@ module Fastlane
29
29
  end
30
30
 
31
31
  def self.available_options
32
- # Define all options your action supports.
33
-
32
+ # Define all options your action supports.
33
+
34
34
  # Below a few examples
35
35
  [
36
36
  FastlaneCore::ConfigItem.new(key: :api_token,
@@ -67,13 +67,13 @@ module Fastlane
67
67
 
68
68
  def self.is_supported?(platform)
69
69
  # you can do things like
70
- #
70
+ #
71
71
  # true
72
- #
72
+ #
73
73
  # platform == :ios
74
- #
74
+ #
75
75
  # [:ios, :mac].include?(platform)
76
- #
76
+ #
77
77
 
78
78
  platform == :ios
79
79
  end
@@ -72,7 +72,7 @@
72
72
  <p id="footnote">
73
73
  This is a beta version and is not meant to share with the public.
74
74
  </p>
75
- <img src="https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane_medium.png" id="fastlaneLogo" />
75
+ <img src="https://fastlane.tools/assets/img/fastlane_icon.png" id="fastlaneLogo" />
76
76
  </body>
77
77
 
78
78
  <script type='text/javascript'>
@@ -156,7 +156,7 @@ module Fastlane
156
156
  [
157
157
  'cocoapods',
158
158
  'cocoapods(
159
- clean: true,
159
+ clean_install: true,
160
160
  podfile: "./CustomPodfile"
161
161
  )'
162
162
  ]
@@ -169,10 +169,6 @@ module Fastlane
169
169
 
170
170
  def self.details
171
171
  [
172
- "Crashlytics Beta has been deprecated and replaced with Firebase App Distribution.",
173
- "Beta will continue working until May 4, 2020.",
174
- "Check out the [Firebase App Distribution docs](https://github.com/fastlane/fastlane-plugin-firebase_app_distribution) to get started.",
175
- "",
176
172
  "Additionally, you can specify `notes`, `emails`, `groups` and `notifications`.",
177
173
  "Distributing to Groups: When using the `groups` parameter, it's important to use the group **alias** names for each group you'd like to distribute to. A group's alias can be found in the web UI. If you're viewing the Beta page, you can open the groups dialog by clicking the 'Manage Groups' button.",
178
174
  "This action uses the `submit` binary provided by the Crashlytics framework. If the binary is not found in its usual path, you'll need to specify the path manually by using the `crashlytics_path` option."
@@ -158,7 +158,7 @@ build_app(
158
158
  )
159
159
  ```
160
160
 
161
- **Note**: If you use [_fastlane_](https://fastlane.tools) with [_match_](https://fastlane.tools/match) you don't need to provide those values manually.
161
+ **Note**: If you use [_fastlane_](https://fastlane.tools) with [_match_](https://fastlane.tools/match) you don't need to provide those values manually, unless you pass a plist file into `export_options`
162
162
 
163
163
  For the list of available options run `xcodebuild -help`.
164
164
 
@@ -52,7 +52,25 @@ Ensure that the following permissions exist in your **src/debug/AndroidManifest.
52
52
 
53
53
  ##### Configuring your <a href="#ui-tests">UI Tests</a> for Screenshots
54
54
 
55
- 1. Add `@ClassRule public static final LocaleTestRule localeTestRule = new LocaleTestRule();` to your tests class to handle automatic switching of locales
55
+ 1. Add `LocaleTestRule` to your tests class to handle automatic switching of locales.
56
+ If you're using Java use:
57
+ ```java
58
+ @ClassRule
59
+ public static final LocaleTestRule localeTestRule = new LocaleTestRule();
60
+ ```
61
+ If you're using Kotlin use:
62
+ ```kotlin
63
+ @Rule @JvmField
64
+ val localeTestRule = LocaleTestRule()
65
+ ```
66
+ Important is the `@JvmField` annotation. It won't work like that:
67
+ ```kotlin
68
+ companion object {
69
+ @get:ClassRule
70
+ val localeTestRule = LocaleTestRule()
71
+ }
72
+ ```
73
+
56
74
  2. To capture screenshots, add the following to your tests `Screengrab.screenshot("name_of_screenshot_here");` on the appropriate screens
57
75
 
58
76
  # Generating Screenshots with Screengrab
@@ -137,6 +155,7 @@ fastlane action screengrab
137
155
  Check out [Testing UI for a Single App](http://developer.android.com/training/testing/ui-testing/espresso-testing.html) for an introduction to using Espresso for UI testing.
138
156
 
139
157
  ##### Example UI Test Class (Using JUnit4)
158
+ Java:
140
159
  ```java
141
160
  @RunWith(JUnit4.class)
142
161
  public class JUnit4StyleTests {
@@ -157,6 +176,28 @@ public class JUnit4StyleTests {
157
176
  }
158
177
 
159
178
  ```
179
+ Kotlin:
180
+ ```kotlin
181
+ @RunWith(JUnit4.class)
182
+ class JUnit4StyleTests {
183
+ @get:Rule
184
+ var activityRule = ActivityTestRule(MainActivity::class.java)
185
+
186
+ @Rule @JvmField
187
+ val localeTestRule = LocaleTestRule()
188
+
189
+ @Test
190
+ fun testTakeScreenshot() {
191
+ Screengrab.screenshot("before_button_click")
192
+
193
+ onView(withId(R.id.fab)).perform(click())
194
+
195
+ Screengrab.screenshot("after_button_click")
196
+ }
197
+ }
198
+
199
+ ```
200
+
160
201
  There is an [example project](https://github.com/fastlane/fastlane/tree/master/screengrab/example/src/androidTest/java/tools/fastlane/localetester) showing how to use use JUnit 3 or 4 and Espresso with the screengrab Java library to capture screenshots during a UI test run.
161
202
 
162
203
  Using JUnit 4 is preferable because of its ability to perform actions before and after the entire test class is run. This means you will change the device's locale far fewer times when compared with JUnit 3 running those commands before and after each test method.
@@ -290,4 +331,3 @@ Sit back and enjoy your new screenshots!
290
331
  Note: while this could also be done by creating a new build variant (i.e. debug, release and creating a new one called screengrab), [Android only allows one build type to be tested](http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing) which defaults to debug. That's why we use product flavors.
291
332
 
292
333
  </details>
293
-