fastlane 2.171.0 → 2.176.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +82 -82
  3. data/cert/lib/cert/options.rb +2 -2
  4. data/deliver/lib/deliver/commands_generator.rb +1 -1
  5. data/deliver/lib/deliver/options.rb +2 -2
  6. data/deliver/lib/deliver/runner.rb +1 -1
  7. data/deliver/lib/deliver/setup.rb +8 -3
  8. data/deliver/lib/deliver/upload_screenshots.rb +2 -1
  9. data/fastlane/lib/fastlane/actions/adb.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +2 -2
  11. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +1 -0
  12. data/fastlane/lib/fastlane/actions/appetize.rb +13 -1
  13. data/fastlane/lib/fastlane/actions/artifactory.rb +36 -3
  14. data/fastlane/lib/fastlane/actions/build_and_upload_to_appetize.rb +10 -2
  15. data/fastlane/lib/fastlane/actions/build_app.rb +3 -1
  16. data/fastlane/lib/fastlane/actions/carthage.rb +22 -0
  17. data/fastlane/lib/fastlane/actions/cocoapods.rb +15 -1
  18. data/fastlane/lib/fastlane/actions/create_pull_request.rb +16 -1
  19. data/fastlane/lib/fastlane/actions/create_xcframework.rb +118 -0
  20. data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +1 -1
  21. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  22. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +8 -2
  23. data/fastlane/lib/fastlane/actions/download_dsyms.rb +5 -16
  24. data/fastlane/lib/fastlane/actions/git_commit.rb +9 -5
  25. data/fastlane/lib/fastlane/actions/jazzy.rb +10 -1
  26. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -2
  27. data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/register_device.rb +3 -3
  29. data/fastlane/lib/fastlane/actions/register_devices.rb +4 -3
  30. data/fastlane/lib/fastlane/actions/set_changelog.rb +2 -2
  31. data/fastlane/lib/fastlane/actions/swiftlint.rb +4 -4
  32. data/fastlane/lib/fastlane/actions/update_code_signing_settings.rb +1 -1
  33. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +5 -1
  34. data/fastlane/lib/fastlane/cli_tools_distributor.rb +3 -0
  35. data/fastlane/lib/fastlane/documentation/actions_list.rb +2 -2
  36. data/fastlane/lib/fastlane/helper/adb_helper.rb +1 -1
  37. data/fastlane/lib/fastlane/helper/gem_helper.rb +2 -2
  38. data/fastlane/lib/fastlane/version.rb +1 -1
  39. data/fastlane/swift/Actions.swift +1 -1
  40. data/fastlane/swift/Appfile.swift +1 -1
  41. data/fastlane/swift/ArgumentProcessor.swift +1 -1
  42. data/fastlane/swift/ControlCommand.swift +1 -1
  43. data/fastlane/swift/Deliverfile.swift +2 -2
  44. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  45. data/fastlane/swift/Fastlane.swift +165 -32
  46. data/fastlane/swift/Gymfile.swift +2 -2
  47. data/fastlane/swift/GymfileProtocol.swift +11 -3
  48. data/fastlane/swift/LaneFileProtocol.swift +1 -1
  49. data/fastlane/swift/MainProcess.swift +1 -1
  50. data/fastlane/swift/Matchfile.swift +2 -2
  51. data/fastlane/swift/MatchfileProtocol.swift +2 -2
  52. data/fastlane/swift/Plugins.swift +1 -1
  53. data/fastlane/swift/Precheckfile.swift +2 -2
  54. data/fastlane/swift/PrecheckfileProtocol.swift +2 -2
  55. data/fastlane/swift/RubyCommand.swift +1 -1
  56. data/fastlane/swift/RubyCommandable.swift +1 -1
  57. data/fastlane/swift/Runner.swift +2 -2
  58. data/fastlane/swift/RunnerArgument.swift +1 -1
  59. data/fastlane/swift/Scanfile.swift +2 -2
  60. data/fastlane/swift/ScanfileProtocol.swift +14 -2
  61. data/fastlane/swift/Screengrabfile.swift +2 -2
  62. data/fastlane/swift/ScreengrabfileProtocol.swift +2 -2
  63. data/fastlane/swift/Snapshotfile.swift +2 -2
  64. data/fastlane/swift/SnapshotfileProtocol.swift +14 -2
  65. data/fastlane/swift/SocketClient.swift +1 -1
  66. data/fastlane/swift/SocketClientDelegateProtocol.swift +1 -1
  67. data/fastlane/swift/SocketResponse.swift +1 -1
  68. data/fastlane/swift/formatting/Brewfile.lock.json +20 -14
  69. data/fastlane/swift/main.swift +1 -1
  70. data/fastlane_core/lib/fastlane_core/command_executor.rb +3 -9
  71. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +1 -1
  72. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +23 -0
  73. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +9 -5
  74. data/fastlane_core/lib/fastlane_core/helper.rb +27 -6
  75. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +41 -16
  76. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -1
  77. data/fastlane_core/lib/fastlane_core/project.rb +41 -14
  78. data/fastlane_core/lib/fastlane_core/update_checker/update_checker.rb +2 -2
  79. data/frameit/lib/frameit/device_types.rb +7 -1
  80. data/gym/lib/gym/error_handler.rb +8 -0
  81. data/gym/lib/gym/generators/build_command_generator.rb +3 -1
  82. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +2 -2
  83. data/gym/lib/gym/options.rb +12 -2
  84. data/match/lib/match/nuke.rb +5 -0
  85. data/match/lib/match/options.rb +2 -2
  86. data/pilot/lib/pilot/.build_manager.rb.swp +0 -0
  87. data/pilot/lib/pilot/build_manager.rb +7 -2
  88. data/pilot/lib/pilot/options.rb +3 -3
  89. data/precheck/lib/precheck/options.rb +2 -2
  90. data/precheck/lib/precheck/runner.rb +1 -1
  91. data/scan/lib/scan/options.rb +15 -0
  92. data/scan/lib/scan/runner.rb +33 -1
  93. data/scan/lib/scan/slack_poster.rb +3 -1
  94. data/scan/lib/scan/test_command_generator.rb +3 -1
  95. data/screengrab/lib/screengrab/android_environment.rb +2 -2
  96. data/screengrab/lib/screengrab/runner.rb +1 -2
  97. data/sigh/lib/sigh/options.rb +2 -2
  98. data/snapshot/lib/assets/SnapshotHelper.swift +1 -1
  99. data/snapshot/lib/snapshot/options.rb +16 -1
  100. data/snapshot/lib/snapshot/update.rb +1 -1
  101. data/spaceship/README.md +2 -2
  102. data/spaceship/lib/spaceship/client.rb +14 -1
  103. data/spaceship/lib/spaceship/connect_api/api_client.rb +16 -1
  104. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +3 -1
  105. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +9 -0
  106. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +24 -0
  107. data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +26 -4
  108. data/spaceship/lib/spaceship/connect_api/models/device.rb +26 -0
  109. data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +53 -0
  110. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +12 -0
  111. data/spaceship/lib/spaceship/connect_api/token.rb +1 -1
  112. data/spaceship/lib/spaceship/playground.rb +2 -2
  113. data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -2
  114. data/spaceship/lib/spaceship/two_step_or_factor_client.rb +42 -28
  115. data/spaceship/lib/spaceship/upgrade_2fa_later_client.rb +91 -0
  116. metadata +51 -23
  117. data/fastlane/lib/fastlane/actions/.download_dsyms.rb.swp +0 -0
  118. data/fastlane/lib/fastlane/actions/.github_api.rb.swp +0 -0
  119. data/fastlane/lib/fastlane/actions/.set_github_release.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9c960e8f4391fa08e3b301c5f7718c118ee0031fb399e2582febb9b8b9860f8
4
- data.tar.gz: 418236b3a2ab2b68f22e33858a5edf71af122e50e69b24824dd2186fa5a1db8f
3
+ metadata.gz: 7ba261e1e70a178f818c12e9f44a9da7d339da6f103aad678777f0a66592bf97
4
+ data.tar.gz: f1b3689af027c08af744d5a25a4dedb5b1e96ca89ed61cc30c30756526726117
5
5
  SHA512:
6
- metadata.gz: d50a705046c0a22b2ab825556ca0fb22ed4b550e91eb44aaca92fcbf007fefd163dd8a7ee1dd91100db22caaf1a35f2e9af81b043bc074e58bfe195349dbdb9f
7
- data.tar.gz: 65fd003a7c37db205744c3120b034b0de0339ed02db507a2f8346b0979d1aff0f980df152a7cf8d430ca5ce9baa4efe32edb3a491c7009211680c44ebd143038
6
+ metadata.gz: 4f45f74114acc9ad5585743e3a352e75ebc2bb671372206d217c3d5bcb14c79bd7fe672b6b35cb94068bc9dbc66c7942a9afbb27680d37233f37f9c0bc780d7a
7
+ data.tar.gz: dd59ef529c0ac9f650dfe8afb9ce18ea4dbec6c0b637fb57ff9f52105399558f63186c97b795531536fd557af10ef5b05e3d8010cb40b2444a6e5bbc4368f409
data/README.md CHANGED
@@ -34,11 +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='fumiya-nakamura'>
38
- <a href='https://github.com/nafu'>
39
- <img src='https://github.com/nafu.png?size=140'>
37
+ <td id='matthew-ellis'>
38
+ <a href='https://github.com/matthewellis'>
39
+ <img src='https://github.com/matthewellis.png?size=140'>
40
40
  </a>
41
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
42
+ </td>
43
+ <td id='maksym-grebenets'>
44
+ <a href='https://github.com/mgrebenets'>
45
+ <img src='https://github.com/mgrebenets.png?size=140'>
46
+ </a>
47
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
42
48
  </td>
43
49
  <td id='aaron-brager'>
44
50
  <a href='https://github.com/getaaron'>
@@ -46,69 +52,69 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
46
52
  </a>
47
53
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
48
54
  </td>
49
- <td id='luka-mirosevic'>
50
- <a href='https://github.com/lmirosevic'>
51
- <img src='https://github.com/lmirosevic.png?size=140'>
52
- </a>
53
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
54
- </td>
55
- <td id='maksym-grebenets'>
56
- <a href='https://github.com/mgrebenets'>
57
- <img src='https://github.com/mgrebenets.png?size=140'>
55
+ <td id='jorge-revuelta-h'>
56
+ <a href='https://github.com/minuscorp'>
57
+ <img src='https://github.com/minuscorp.png?size=140'>
58
58
  </a>
59
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
60
60
  </td>
61
- <td id='olivier-halligon'>
62
- <a href='https://github.com/AliSoftware'>
63
- <img src='https://github.com/AliSoftware.png?size=140'>
61
+ <td id='felix-krause'>
62
+ <a href='https://github.com/KrauseFx'>
63
+ <img src='https://github.com/KrauseFx.png?size=140'>
64
64
  </a>
65
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
65
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
66
66
  </td>
67
67
  </tr>
68
68
  <tr>
69
- <td id='jérôme-lacoste'>
70
- <a href='https://github.com/lacostej'>
71
- <img src='https://github.com/lacostej.png?size=140'>
69
+ <td id='jimmy-dee'>
70
+ <a href='https://github.com/jdee'>
71
+ <img src='https://github.com/jdee.png?size=140'>
72
72
  </a>
73
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
73
+ <h4 align='center'>Jimmy Dee</h4>
74
74
  </td>
75
- <td id='helmut-januschka'>
76
- <a href='https://github.com/hjanuschka'>
77
- <img src='https://github.com/hjanuschka.png?size=140'>
75
+ <td id='kohki-miki'>
76
+ <a href='https://github.com/giginet'>
77
+ <img src='https://github.com/giginet.png?size=140'>
78
78
  </a>
79
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
80
80
  </td>
81
- <td id='daniel-jankowski'>
82
- <a href='https://github.com/mollyIV'>
83
- <img src='https://github.com/mollyIV.png?size=140'>
81
+ <td id='stefan-natchev'>
82
+ <a href='https://github.com/snatchev'>
83
+ <img src='https://github.com/snatchev.png?size=140'>
84
84
  </a>
85
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
86
86
  </td>
87
- <td id='manu-wallner'>
88
- <a href='https://github.com/milch'>
89
- <img src='https://github.com/milch.png?size=140'>
87
+ <td id='joshua-liebowitz'>
88
+ <a href='https://github.com/taquitos'>
89
+ <img src='https://github.com/taquitos.png?size=140'>
90
90
  </a>
91
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
91
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
92
92
  </td>
93
- <td id='jimmy-dee'>
94
- <a href='https://github.com/jdee'>
95
- <img src='https://github.com/jdee.png?size=140'>
93
+ <td id='fumiya-nakamura'>
94
+ <a href='https://github.com/nafu'>
95
+ <img src='https://github.com/nafu.png?size=140'>
96
96
  </a>
97
- <h4 align='center'>Jimmy Dee</h4>
97
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
98
98
  </td>
99
99
  </tr>
100
100
  <tr>
101
- <td id='danielle-tomlinson'>
102
- <a href='https://github.com/endocrimes'>
103
- <img src='https://github.com/endocrimes.png?size=140'>
101
+ <td id='andrew-mcburney'>
102
+ <a href='https://github.com/armcburney'>
103
+ <img src='https://github.com/armcburney.png?size=140'>
104
104
  </a>
105
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
105
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
106
106
  </td>
107
- <td id='matthew-ellis'>
108
- <a href='https://github.com/matthewellis'>
109
- <img src='https://github.com/matthewellis.png?size=140'>
107
+ <td id='olivier-halligon'>
108
+ <a href='https://github.com/AliSoftware'>
109
+ <img src='https://github.com/AliSoftware.png?size=140'>
110
110
  </a>
111
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
111
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
112
+ </td>
113
+ <td id='jérôme-lacoste'>
114
+ <a href='https://github.com/lacostej'>
115
+ <img src='https://github.com/lacostej.png?size=140'>
116
+ </a>
117
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
112
118
  </td>
113
119
  <td id='jan-piotrowski'>
114
120
  <a href='https://github.com/janpio'>
@@ -116,43 +122,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
116
122
  </a>
117
123
  <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
118
124
  </td>
119
- <td id='stefan-natchev'>
120
- <a href='https://github.com/snatchev'>
121
- <img src='https://github.com/snatchev.png?size=140'>
122
- </a>
123
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
124
- </td>
125
- <td id='andrew-mcburney'>
126
- <a href='https://github.com/armcburney'>
127
- <img src='https://github.com/armcburney.png?size=140'>
125
+ <td id='danielle-tomlinson'>
126
+ <a href='https://github.com/endocrimes'>
127
+ <img src='https://github.com/endocrimes.png?size=140'>
128
128
  </a>
129
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
129
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
130
130
  </td>
131
131
  </tr>
132
132
  <tr>
133
- <td id='max-ott'>
134
- <a href='https://github.com/max-ott'>
135
- <img src='https://github.com/max-ott.png?size=140'>
136
- </a>
137
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
138
- </td>
139
- <td id='iulian-onofrei'>
140
- <a href='https://github.com/revolter'>
141
- <img src='https://github.com/revolter.png?size=140'>
133
+ <td id='luka-mirosevic'>
134
+ <a href='https://github.com/lmirosevic'>
135
+ <img src='https://github.com/lmirosevic.png?size=140'>
142
136
  </a>
143
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
137
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
144
138
  </td>
145
- <td id='jorge-revuelta-h'>
146
- <a href='https://github.com/minuscorp'>
147
- <img src='https://github.com/minuscorp.png?size=140'>
139
+ <td id='helmut-januschka'>
140
+ <a href='https://github.com/hjanuschka'>
141
+ <img src='https://github.com/hjanuschka.png?size=140'>
148
142
  </a>
149
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
150
144
  </td>
151
- <td id='joshua-liebowitz'>
152
- <a href='https://github.com/taquitos'>
153
- <img src='https://github.com/taquitos.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'>
154
148
  </a>
155
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
156
150
  </td>
157
151
  <td id='josh-holtz'>
158
152
  <a href='https://github.com/joshdholtz'>
@@ -160,19 +154,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
160
154
  </a>
161
155
  <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
162
156
  </td>
157
+ <td id='iulian-onofrei'>
158
+ <a href='https://github.com/revolter'>
159
+ <img src='https://github.com/revolter.png?size=140'>
160
+ </a>
161
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
162
+ </td>
163
163
  </tr>
164
164
  <tr>
165
- <td id='felix-krause'>
166
- <a href='https://github.com/KrauseFx'>
167
- <img src='https://github.com/KrauseFx.png?size=140'>
165
+ <td id='daniel-jankowski'>
166
+ <a href='https://github.com/mollyIV'>
167
+ <img src='https://github.com/mollyIV.png?size=140'>
168
168
  </a>
169
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
169
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
170
170
  </td>
171
- <td id='kohki-miki'>
172
- <a href='https://github.com/giginet'>
173
- <img src='https://github.com/giginet.png?size=140'>
171
+ <td id='manu-wallner'>
172
+ <a href='https://github.com/milch'>
173
+ <img src='https://github.com/milch.png?size=140'>
174
174
  </a>
175
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
175
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
176
176
  </td>
177
177
  </table>
178
178
 
@@ -38,7 +38,7 @@ module Cert
38
38
 
39
39
  # App Store Connect API
40
40
  FastlaneCore::ConfigItem.new(key: :api_key_path,
41
- env_name: "DELIVER_API_KEY_PATH",
41
+ env_names: ["CERT_API_KEY_PATH", "DELIVER_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
42
42
  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)",
43
43
  optional: true,
44
44
  conflicting_options: [:api_key],
@@ -46,7 +46,7 @@ module Cert
46
46
  UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
47
47
  end),
48
48
  FastlaneCore::ConfigItem.new(key: :api_key,
49
- env_name: "DELIVER_API_KEY",
49
+ env_names: ["CERT_API_KEY", "DELIVER_API_KEY", "APP_STORE_CONNECT_API_KEY"],
50
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)",
51
51
  type: Hash,
52
52
  optional: true,
@@ -177,7 +177,7 @@ module Deliver
177
177
  end
178
178
  end
179
179
 
180
- Deliver::Setup.new.generate_metadata_files(app, v, path)
180
+ Deliver::Setup.new.generate_metadata_files(app, v, path, options)
181
181
  end
182
182
  end
183
183
 
@@ -13,7 +13,7 @@ module Deliver
13
13
 
14
14
  [
15
15
  FastlaneCore::ConfigItem.new(key: :api_key_path,
16
- env_name: "DELIVER_API_KEY_PATH",
16
+ env_names: ["DELIVER_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
17
17
  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)",
18
18
  optional: true,
19
19
  conflicting_options: [:api_key],
@@ -21,7 +21,7 @@ module Deliver
21
21
  UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
22
22
  end),
23
23
  FastlaneCore::ConfigItem.new(key: :api_key,
24
- env_name: "DELIVER_API_KEY",
24
+ env_names: ["DELIVER_API_KEY", "APP_STORE_CONNECT_API_KEY"],
25
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)",
26
26
  type: Hash,
27
27
  optional: true,
@@ -83,7 +83,7 @@ module Deliver
83
83
 
84
84
  if options[:api_key] || options[:api_key_path]
85
85
  if options[:precheck_include_in_app_purchases]
86
- UI.user_error!("Precheck cannot check In-app purchases with the App Store Connect API Key (yet). Exclude In-app purchases from precheck or use Apple ID login")
86
+ UI.user_error!("Precheck cannot check In-app purchases with the App Store Connect API Key (yet). Exclude In-app purchases from precheck, disable the precheck step in your build step, or use Apple ID login")
87
87
  end
88
88
 
89
89
  precheck_options[:api_key] = options[:api_key]
@@ -46,7 +46,7 @@ module Deliver
46
46
  v = app.get_latest_app_store_version(platform: platform)
47
47
 
48
48
  metadata_path = options[:metadata_path] || File.join(deliver_path, 'metadata')
49
- generate_metadata_files(app, v, metadata_path)
49
+ generate_metadata_files(app, v, metadata_path, options)
50
50
 
51
51
  # Generate the final Deliverfile here
52
52
  return File.read(deliverfile_path)
@@ -60,9 +60,14 @@ module Deliver
60
60
  end
61
61
  end
62
62
 
63
- def generate_metadata_files(app, version, path)
63
+ def generate_metadata_files(app, version, path, options)
64
64
  # App info localizations
65
- app_info = app.fetch_live_app_info || app.fetch_edit_app_info
65
+ if options[:use_live_version]
66
+ app_info = app.fetch_live_app_info
67
+ UI.user_error!("The option `use_live_version` was set to `true`, however no live app was found on App Store Connect.") unless app_info
68
+ else
69
+ app_info = app.fetch_edit_app_info || app.fetch_live_app_info
70
+ end
66
71
  app_info_localizations = app_info.get_app_info_localizations
67
72
  app_info_localizations.each do |localization|
68
73
  language = localization.locale
@@ -231,12 +231,13 @@ module Deliver
231
231
  end
232
232
 
233
233
  def sort_screenshots(localizations)
234
+ require 'naturally'
234
235
  iterator = AppScreenshotIterator.new(localizations)
235
236
 
236
237
  # Re-order screenshots within app_screenshot_set
237
238
  worker = QueueWorker.new do |app_screenshot_set|
238
239
  original_ids = app_screenshot_set.app_screenshots.map(&:id)
239
- sorted_ids = app_screenshot_set.app_screenshots.sort_by(&:file_name).map(&:id)
240
+ sorted_ids = Naturally.sort(app_screenshot_set.app_screenshots, by: :file_name).map(&:id)
240
241
  if original_ids != sorted_ids
241
242
  app_screenshot_set.reorder_screenshots(app_screenshot_ids: sorted_ids)
242
243
  end
@@ -37,7 +37,7 @@ module Fastlane
37
37
  FastlaneCore::ConfigItem.new(key: :adb_path,
38
38
  env_name: "FL_ADB_PATH",
39
39
  optional: true,
40
- description: "The path to your `adb` binary (can be left blank if the ANDROID_SDK_ROOT environment variable is set)",
40
+ description: "The path to your `adb` binary (can be left blank if the ANDROID_SDK_ROOT, ANDROID_HOME or ANDROID_SDK environment variable is set)",
41
41
  is_string: true,
42
42
  default_value: "adb")
43
43
  ]
@@ -118,7 +118,7 @@ module Fastlane
118
118
  user ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id)
119
119
  [
120
120
  FastlaneCore::ConfigItem.new(key: :api_key_path,
121
- env_name: "APPSTORE_BUILD_NUMBER_API_KEY_PATH",
121
+ env_names: ["APPSTORE_BUILD_NUMBER_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
122
122
  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)",
123
123
  optional: true,
124
124
  conflicting_options: [:api_key],
@@ -126,7 +126,7 @@ module Fastlane
126
126
  UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
127
127
  end),
128
128
  FastlaneCore::ConfigItem.new(key: :api_key,
129
- env_name: "APPSTORE_BUILD_NUMBER_API_KEY",
129
+ env_names: ["APPSTORE_BUILD_NUMBER_API_KEY", "APP_STORE_CONNECT_API_KEY"],
130
130
  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)",
131
131
  type: Hash,
132
132
  optional: true,
@@ -75,6 +75,7 @@ module Fastlane
75
75
  env_name: "APP_STORE_CONNECT_API_KEY_DURATION",
76
76
  description: "The token session duration",
77
77
  optional: true,
78
+ default_value: Spaceship::ConnectAPI::Token::MAX_TOKEN_DURATION,
78
79
  type: Integer),
79
80
  FastlaneCore::ConfigItem.new(key: :in_house,
80
81
  env_name: "APP_STORE_CONNECT_API_KEY_IN_HOUSE",
@@ -31,6 +31,10 @@ module Fastlane
31
31
 
32
32
  params[:note] = options[:note] if options[:note].to_s.length > 0
33
33
 
34
+ if options[:timeout]
35
+ params[:timeout] = options[:timeout]
36
+ end
37
+
34
38
  uri = URI.parse(appetize_url(options))
35
39
  req = create_request(uri, params)
36
40
  req.basic_auth(options[:api_token], nil)
@@ -147,7 +151,15 @@ module Fastlane
147
151
  env_name: "APPETIZE_NOTE",
148
152
  description: "Notes you wish to add to the uploaded app",
149
153
  is_string: true,
150
- optional: true)
154
+ optional: true),
155
+ FastlaneCore::ConfigItem.new(key: :timeout,
156
+ env_name: "APPETIZE_TIMEOUT",
157
+ description: "The number of seconds to wait until automatically ending the session due to user inactivity. Must be 30, 60, 90, 120, 180, 300, 600, 1800, 3600 or 7200. Default is 120",
158
+ type: Integer,
159
+ optional: true,
160
+ verify_block: proc do |value|
161
+ UI.user_error!("The value provided doesn't match any of the supported options.") unless [30, 60, 90, 120, 180, 300, 600, 1800, 3600, 7200].include?(value)
162
+ end)
151
163
  ]
152
164
  end
153
165
 
@@ -10,7 +10,12 @@ module Fastlane
10
10
  Actions.verify_gem!('artifactory')
11
11
 
12
12
  require 'artifactory'
13
+
14
+ UI.user_error!("Cannot connect to Artifactory - 'username' was provided but it's missing 'password'") if params[:username] && !params[:password]
15
+ UI.user_error!("Cannot connect to Artifactory - 'password' was provided but it's missing 'username'") if !params[:username] && params[:password]
16
+ UI.user_error!("Cannot connect to Artifactory - either 'api_key', or 'username' and 'password' must be provided") if !params[:api_key] && !params[:username]
13
17
  file_path = File.absolute_path(params[:file])
18
+
14
19
  if File.exist?(file_path)
15
20
  client = connect_to_artifactory(params)
16
21
  artifact = Artifactory::Resource::Artifact.new
@@ -37,7 +42,7 @@ module Fastlane
37
42
  end
38
43
 
39
44
  def self.connect_to_artifactory(params)
40
- config_keys = [:endpoint, :username, :password, :ssl_pem_file, :ssl_verify, :proxy_username, :proxy_password, :proxy_address, :proxy_port, :read_timeout]
45
+ config_keys = [:endpoint, :username, :password, :api_key, :ssl_pem_file, :ssl_verify, :proxy_username, :proxy_password, :proxy_address, :proxy_port, :read_timeout]
41
46
  config = params.values.select do |key|
42
47
  config_keys.include?(key)
43
48
  end
@@ -48,6 +53,10 @@ module Fastlane
48
53
  'This action uploads an artifact to artifactory'
49
54
  end
50
55
 
56
+ def self.details
57
+ 'Connect to the artifactory server using either a username/password or an api_key'
58
+ end
59
+
51
60
  def self.is_supported?(platform)
52
61
  true
53
62
  end
@@ -72,6 +81,13 @@ module Fastlane
72
81
  file: "example.ipa", # File to upload
73
82
  repo: "mobile_artifacts", # Artifactory repo
74
83
  repo_path: "/ios/appname/example-major.minor.ipa" # Path to place the artifact including its filename
84
+ )',
85
+ 'artifactory(
86
+ api_key: "api_key",
87
+ endpoint: "https://artifactory.example.com/artifactory/",
88
+ file: "example.ipa", # File to upload
89
+ repo: "mobile_artifacts", # Artifactory repo
90
+ repo_path: "/ios/appname/example-major.minor.ipa" # Path to place the artifact including its filename
75
91
  )'
76
92
  ]
77
93
  end
@@ -101,12 +117,29 @@ module Fastlane
101
117
  FastlaneCore::ConfigItem.new(key: :username,
102
118
  env_name: "FL_ARTIFACTORY_USERNAME",
103
119
  description: "Artifactory username",
104
- optional: false),
120
+ optional: true,
121
+ conflicting_options: [:api_key],
122
+ conflict_block: proc do |value|
123
+ UI.user_error!("You can't use option '#{value.key}' along with 'username'")
124
+ end),
105
125
  FastlaneCore::ConfigItem.new(key: :password,
106
126
  env_name: "FL_ARTIFACTORY_PASSWORD",
107
127
  description: "Artifactory password",
108
128
  sensitive: true,
109
- optional: false),
129
+ optional: true,
130
+ conflicting_options: [:api_key],
131
+ conflict_block: proc do |value|
132
+ UI.user_error!("You can't use option '#{value.key}' along with 'password'")
133
+ end),
134
+ FastlaneCore::ConfigItem.new(key: :api_key,
135
+ env_name: "FL_ARTIFACTORY_API_KEY",
136
+ description: "Artifactory API key",
137
+ sensitive: true,
138
+ optional: true,
139
+ conflicting_options: [:username, :password],
140
+ conflict_block: proc do |value|
141
+ UI.user_error!("You can't use option '#{value.key}' along with 'api_key'")
142
+ end),
110
143
  FastlaneCore::ConfigItem.new(key: :properties,
111
144
  env_name: "FL_ARTIFACTORY_PROPERTIES",
112
145
  description: "Artifact properties hash",