fastlane 2.129.0 → 2.134.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +66 -66
  3. data/cert/lib/cert/module.rb +2 -0
  4. data/cert/lib/cert/options.rb +6 -0
  5. data/cert/lib/cert/runner.rb +17 -11
  6. data/fastlane/lib/fastlane.rb +4 -1
  7. data/fastlane/lib/fastlane/actions/.download_dsyms.rb.swp +0 -0
  8. data/fastlane/lib/fastlane/actions/.hockey.rb.swp +0 -0
  9. data/fastlane/lib/fastlane/actions/actions_helper.rb +4 -0
  10. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +11 -3
  11. data/fastlane/lib/fastlane/actions/carthage.rb +11 -3
  12. data/fastlane/lib/fastlane/actions/cocoapods.rb +24 -2
  13. data/fastlane/lib/fastlane/actions/copy_artifacts.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/danger.rb +7 -0
  15. data/fastlane/lib/fastlane/actions/deploygate.rb +1 -1
  16. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +23 -4
  17. data/fastlane/lib/fastlane/actions/download_dsyms.rb +59 -10
  18. data/fastlane/lib/fastlane/actions/ensure_env_vars.rb +58 -0
  19. data/fastlane/lib/fastlane/actions/get_version_number.rb +12 -3
  20. data/fastlane/lib/fastlane/actions/gradle.rb +11 -1
  21. data/fastlane/lib/fastlane/actions/onesignal.rb +59 -29
  22. data/fastlane/lib/fastlane/actions/pod_push.rb +10 -1
  23. data/fastlane/lib/fastlane/actions/register_devices.rb +38 -22
  24. data/fastlane/lib/fastlane/actions/resign.rb +2 -2
  25. data/fastlane/lib/fastlane/actions/slather.rb +1 -0
  26. data/fastlane/lib/fastlane/actions/sonar.rb +16 -0
  27. data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/update_fastlane.rb +9 -49
  29. data/fastlane/lib/fastlane/actions/update_keychain_access_groups.rb +94 -0
  30. data/fastlane/lib/fastlane/commands_generator.rb +16 -0
  31. data/fastlane/lib/fastlane/environment_printer.rb +7 -1
  32. data/fastlane/lib/fastlane/fast_file.rb +10 -4
  33. data/fastlane/lib/fastlane/helper/crashlytics_helper.rb +1 -1
  34. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +2 -0
  35. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +3 -0
  36. data/fastlane/lib/fastlane/setup/setup_android.rb +1 -1
  37. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +122 -34
  38. data/fastlane/lib/fastlane/swift_fastlane_function.rb +72 -3
  39. data/fastlane/lib/fastlane/swift_runner_upgrader.rb +4 -0
  40. data/fastlane/lib/fastlane/version.rb +1 -1
  41. data/fastlane/swift/Actions.swift +15 -0
  42. data/fastlane/swift/Deliverfile.swift +1 -1
  43. data/fastlane/swift/DeliverfileProtocol.swift +121 -1
  44. data/fastlane/swift/Fastlane.swift +3925 -30
  45. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +9 -0
  46. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  47. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  48. data/fastlane/swift/Gymfile.swift +1 -1
  49. data/fastlane/swift/GymfileProtocol.swift +91 -9
  50. data/fastlane/swift/Matchfile.swift +1 -1
  51. data/fastlane/swift/MatchfileProtocol.swift +65 -1
  52. data/fastlane/swift/Plugins.swift +15 -0
  53. data/fastlane/swift/Precheckfile.swift +1 -1
  54. data/fastlane/swift/PrecheckfileProtocol.swift +15 -2
  55. data/fastlane/swift/Scanfile.swift +1 -1
  56. data/fastlane/swift/ScanfileProtocol.swift +109 -1
  57. data/fastlane/swift/Screengrabfile.swift +1 -1
  58. data/fastlane/swift/ScreengrabfileProtocol.swift +39 -2
  59. data/fastlane/swift/Snapshotfile.swift +1 -1
  60. data/fastlane/swift/SnapshotfileProtocol.swift +71 -1
  61. data/fastlane/swift/upgrade_manifest.json +1 -1
  62. data/fastlane_core/lib/fastlane_core/command_executor.rb +1 -1
  63. data/fastlane_core/lib/fastlane_core/device_manager.rb +1 -1
  64. data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
  65. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +1 -3
  66. data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +3 -2
  67. data/frameit/lib/frameit/screenshot.rb +4 -0
  68. data/gym/lib/gym/generators/build_command_generator.rb +5 -1
  69. data/gym/lib/gym/options.rb +16 -16
  70. data/gym/lib/gym/runner.rb +33 -5
  71. data/match/lib/match/generator.rb +1 -0
  72. data/match/lib/match/importer.rb +2 -2
  73. data/match/lib/match/module.rb +2 -0
  74. data/match/lib/match/nuke.rb +5 -5
  75. data/match/lib/match/options.rb +17 -0
  76. data/match/lib/match/runner.rb +10 -6
  77. data/match/lib/match/storage/git_storage.rb +8 -2
  78. data/match/lib/match/storage/google_cloud_storage.rb +85 -33
  79. data/produce/lib/produce/service.rb +7 -1
  80. data/scan/lib/scan/error_handler.rb +9 -4
  81. data/scan/lib/scan/runner.rb +1 -1
  82. data/sigh/lib/sigh/download_all.rb +48 -8
  83. data/sigh/lib/sigh/runner.rb +13 -5
  84. data/snapshot/lib/snapshot/commands_generator.rb +2 -2
  85. data/snapshot/lib/snapshot/options.rb +5 -0
  86. data/snapshot/lib/snapshot/reports_generator.rb +3 -0
  87. data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +2 -0
  88. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +1 -1
  89. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +16 -1
  90. data/snapshot/lib/snapshot/update.rb +4 -2
  91. data/spaceship/lib/spaceship/client.rb +3 -3
  92. data/spaceship/lib/spaceship/connect_api/models/app.rb +6 -6
  93. data/spaceship/lib/spaceship/connect_api/models/build.rb +3 -3
  94. data/spaceship/lib/spaceship/connect_api/models/build_delivery.rb +1 -1
  95. data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +1 -1
  96. data/spaceship/lib/spaceship/connect_api/models/certificate.rb +1 -1
  97. data/spaceship/lib/spaceship/connect_api/models/device.rb +1 -1
  98. data/spaceship/lib/spaceship/connect_api/models/profile.rb +1 -1
  99. data/spaceship/lib/spaceship/portal/.certificate.rb.swp +0 -0
  100. data/spaceship/lib/spaceship/portal/provisioning_profile.rb +1 -1
  101. data/spaceship/lib/spaceship/tunes/app_version.rb +4 -0
  102. data/spaceship/lib/spaceship/tunes/application.rb +4 -0
  103. data/spaceship/lib/spaceship/tunes/availability.rb +40 -8
  104. data/spaceship/lib/spaceship/tunes/b2b_organization.rb +50 -0
  105. data/spaceship/lib/spaceship/tunes/iap_family_details.rb +10 -2
  106. data/spaceship/lib/spaceship/tunes/tunes_client.rb +26 -1
  107. metadata +55 -46
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6124176bffd29a27249c10db5e464422be774d8a0f809e77f10f5f95fb9957f2
4
- data.tar.gz: c82037b4369ce615407225bd03d7a9aa8cb27c5128c60ddc9f5048577e6783fe
3
+ metadata.gz: 137d18e3b1c51143869fab046abca316e329c07121b9fa8673c19bc3e64c4367
4
+ data.tar.gz: 230b49b8a849c8470d0868b1119cd5a9379a4df93e54f93bd94eebc1417e29b7
5
5
  SHA512:
6
- metadata.gz: 58f7dfa0f132f6f82da3311798b41c07cc2fd0af94e7bad00d7f3318c2d6222eb3da810f6f6100ec1d8e7bd8f578faf4b94dc2d8d24f480864453fca7f59b7e7
7
- data.tar.gz: 7efac8190498b5187a85e67ad8572faa1ea13f830695e57b970fa7e5fe161c67a8348ac7e6fb56817956c4c143bd37fabcb048c919cd72308d0c86c8d87a7e6a
6
+ metadata.gz: fbbfe027861bdbc7581ac00dbb19af06131513b759ccab42833c7d81f8a1f99833c4a2229438e3029d486906dd1ea42e83fb827e668c2dff7e9ea54b0a83fa60
7
+ data.tar.gz: e50c253223dd102a4777595e78ae6f3f77df92a2015345c73050398083557244481e0858581a4d60afa2d28bf00fb299d1a2f4083145489a640ba25baed3808c
data/README.md CHANGED
@@ -34,6 +34,24 @@ 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='felix-krause'>
38
+ <a href='https://github.com/KrauseFx'>
39
+ <img src='https://github.com/KrauseFx.png?size=140'>
40
+ </a>
41
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
42
+ </td>
43
+ <td id='luka-mirosevic'>
44
+ <a href='https://github.com/lmirosevic'>
45
+ <img src='https://github.com/lmirosevic.png?size=140'>
46
+ </a>
47
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
48
+ </td>
49
+ <td id='aaron-brager'>
50
+ <a href='https://github.com/getaaron'>
51
+ <img src='https://github.com/getaaron.png?size=140'>
52
+ </a>
53
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
54
+ </td>
37
55
  <td id='kohki-miki'>
38
56
  <a href='https://github.com/giginet'>
39
57
  <img src='https://github.com/giginet.png?size=140'>
@@ -46,37 +64,13 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
46
64
  </a>
47
65
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
48
66
  </td>
49
- <td id='jérôme-lacoste'>
50
- <a href='https://github.com/lacostej'>
51
- <img src='https://github.com/lacostej.png?size=140'>
52
- </a>
53
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
54
- </td>
55
- <td id='jimmy-dee'>
56
- <a href='https://github.com/jdee'>
57
- <img src='https://github.com/jdee.png?size=140'>
58
- </a>
59
- <h4 align='center'>Jimmy Dee</h4>
60
- </td>
61
- <td id='matthew-ellis'>
62
- <a href='https://github.com/matthewellis'>
63
- <img src='https://github.com/matthewellis.png?size=140'>
64
- </a>
65
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
66
- </td>
67
67
  </tr>
68
68
  <tr>
69
- <td id='luka-mirosevic'>
70
- <a href='https://github.com/lmirosevic'>
71
- <img src='https://github.com/lmirosevic.png?size=140'>
72
- </a>
73
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
74
- </td>
75
- <td id='iulian-onofrei'>
76
- <a href='https://github.com/revolter'>
77
- <img src='https://github.com/revolter.png?size=140'>
69
+ <td id='josh-holtz'>
70
+ <a href='https://github.com/joshdholtz'>
71
+ <img src='https://github.com/joshdholtz.png?size=140'>
78
72
  </a>
79
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
73
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
80
74
  </td>
81
75
  <td id='manu-wallner'>
82
76
  <a href='https://github.com/milch'>
@@ -84,11 +78,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
84
78
  </a>
85
79
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
86
80
  </td>
87
- <td id='andrew-mcburney'>
88
- <a href='https://github.com/armcburney'>
89
- <img src='https://github.com/armcburney.png?size=140'>
81
+ <td id='helmut-januschka'>
82
+ <a href='https://github.com/hjanuschka'>
83
+ <img src='https://github.com/hjanuschka.png?size=140'>
90
84
  </a>
91
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
92
86
  </td>
93
87
  <td id='jorge-revuelta-h'>
94
88
  <a href='https://github.com/minuscorp'>
@@ -96,69 +90,75 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
96
90
  </a>
97
91
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
98
92
  </td>
93
+ <td id='jan-piotrowski'>
94
+ <a href='https://github.com/janpio'>
95
+ <img src='https://github.com/janpio.png?size=140'>
96
+ </a>
97
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
98
+ </td>
99
99
  </tr>
100
100
  <tr>
101
+ <td id='joshua-liebowitz'>
102
+ <a href='https://github.com/taquitos'>
103
+ <img src='https://github.com/taquitos.png?size=140'>
104
+ </a>
105
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
106
+ </td>
101
107
  <td id='fumiya-nakamura'>
102
108
  <a href='https://github.com/nafu'>
103
109
  <img src='https://github.com/nafu.png?size=140'>
104
110
  </a>
105
111
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
106
112
  </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
113
  <td id='danielle-tomlinson'>
114
114
  <a href='https://github.com/endocrimes'>
115
115
  <img src='https://github.com/endocrimes.png?size=140'>
116
116
  </a>
117
117
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
118
118
  </td>
119
- <td id='maksym-grebenets'>
120
- <a href='https://github.com/mgrebenets'>
121
- <img src='https://github.com/mgrebenets.png?size=140'>
119
+ <td id='iulian-onofrei'>
120
+ <a href='https://github.com/revolter'>
121
+ <img src='https://github.com/revolter.png?size=140'>
122
122
  </a>
123
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
123
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
124
124
  </td>
125
- <td id='josh-holtz'>
126
- <a href='https://github.com/joshdholtz'>
127
- <img src='https://github.com/joshdholtz.png?size=140'>
125
+ <td id='matthew-ellis'>
126
+ <a href='https://github.com/matthewellis'>
127
+ <img src='https://github.com/matthewellis.png?size=140'>
128
128
  </a>
129
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
129
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
130
130
  </td>
131
131
  </tr>
132
132
  <tr>
133
- <td id='joshua-liebowitz'>
134
- <a href='https://github.com/taquitos'>
135
- <img src='https://github.com/taquitos.png?size=140'>
133
+ <td id='andrew-mcburney'>
134
+ <a href='https://github.com/armcburney'>
135
+ <img src='https://github.com/armcburney.png?size=140'>
136
136
  </a>
137
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
137
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
138
138
  </td>
139
- <td id='jan-piotrowski'>
140
- <a href='https://github.com/janpio'>
141
- <img src='https://github.com/janpio.png?size=140'>
139
+ <td id='stefan-natchev'>
140
+ <a href='https://github.com/snatchev'>
141
+ <img src='https://github.com/snatchev.png?size=140'>
142
142
  </a>
143
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
144
144
  </td>
145
- <td id='felix-krause'>
146
- <a href='https://github.com/KrauseFx'>
147
- <img src='https://github.com/KrauseFx.png?size=140'>
145
+ <td id='jimmy-dee'>
146
+ <a href='https://github.com/jdee'>
147
+ <img src='https://github.com/jdee.png?size=140'>
148
148
  </a>
149
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
149
+ <h4 align='center'>Jimmy Dee</h4>
150
150
  </td>
151
- <td id='helmut-januschka'>
152
- <a href='https://github.com/hjanuschka'>
153
- <img src='https://github.com/hjanuschka.png?size=140'>
151
+ <td id='jérôme-lacoste'>
152
+ <a href='https://github.com/lacostej'>
153
+ <img src='https://github.com/lacostej.png?size=140'>
154
154
  </a>
155
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
155
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
156
156
  </td>
157
- <td id='aaron-brager'>
158
- <a href='https://github.com/getaaron'>
159
- <img src='https://github.com/getaaron.png?size=140'>
157
+ <td id='maksym-grebenets'>
158
+ <a href='https://github.com/mgrebenets'>
159
+ <img src='https://github.com/mgrebenets.png?size=140'>
160
160
  </a>
161
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
161
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  </table>
@@ -1,4 +1,5 @@
1
1
  require 'fastlane_core/helper'
2
+ require 'fastlane/boolean'
2
3
 
3
4
  module Cert
4
5
  # Use this to just setup the configuration attribute and set it later somewhere else
@@ -8,6 +9,7 @@ module Cert
8
9
 
9
10
  Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
10
11
  UI = FastlaneCore::UI
12
+ Boolean = Fastlane::Boolean
11
13
  ROOT = Pathname.new(File.expand_path('../../..', __FILE__))
12
14
 
13
15
  ENV['FASTLANE_TEAM_ID'] ||= ENV["CERT_TEAM_ID"]
@@ -20,6 +20,12 @@ module Cert
20
20
  description: "Create a certificate even if an existing certificate exists",
21
21
  is_string: false,
22
22
  default_value: false),
23
+ FastlaneCore::ConfigItem.new(key: :generate_apple_certs,
24
+ env_name: "CERT_GENERATE_APPLE_CERTS",
25
+ description: "Create a certificate type for Xcode 11 and later (Apple Development or Apple Distribution)",
26
+ type: Boolean,
27
+ default_value: FastlaneCore::Helper.mac? && FastlaneCore::Helper.xcode_at_least?('11'),
28
+ default_value_dynamic: true),
23
29
  FastlaneCore::ConfigItem.new(key: :username,
24
30
  short_option: "-u",
25
31
  env_name: "CERT_USERNAME",
@@ -134,19 +134,25 @@ module Cert
134
134
 
135
135
  # The kind of certificate we're interested in
136
136
  def certificate_type
137
- case Cert.config[:platform].to_s
138
- when 'ios', 'tvos'
139
- cert_type = Spaceship.certificate.production
140
- cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house?
141
- cert_type = Spaceship.certificate.development if Cert.config[:development]
142
-
143
- when 'macos'
144
- cert_type = Spaceship.certificate.mac_app_distribution
145
- cert_type = Spaceship.certificate.mac_development if Cert.config[:development]
146
-
137
+ # Check if apple certs (Xcode 11 and later) should be used
138
+ if Cert.config[:generate_apple_certs]
139
+ cert_type = Spaceship.certificate.apple_distribution
140
+ cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house? # Enterprise doesn't use Apple Distribution
141
+ cert_type = Spaceship.certificate.apple_development if Cert.config[:development]
142
+ else
143
+ case Cert.config[:platform].to_s
144
+ when 'ios', 'tvos'
145
+ cert_type = Spaceship.certificate.production
146
+ cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house?
147
+ cert_type = Spaceship.certificate.development if Cert.config[:development]
148
+
149
+ when 'macos'
150
+ cert_type = Spaceship.certificate.mac_app_distribution
151
+ cert_type = Spaceship.certificate.mac_development if Cert.config[:development]
152
+ end
147
153
  end
148
154
 
149
- cert_type
155
+ return cert_type
150
156
  end
151
157
 
152
158
  def create_certificate
@@ -26,6 +26,7 @@ require 'fastlane/documentation/docs_generator'
26
26
  require 'fastlane/other_action'
27
27
  require 'fastlane/plugins/plugins'
28
28
  require 'fastlane/fastlane_require'
29
+ require "fastlane/swift_fastlane_api_generator.rb"
29
30
 
30
31
  module Fastlane
31
32
  Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
@@ -39,10 +40,12 @@ module Fastlane
39
40
 
40
41
  if FastlaneCore::FastlaneFolder.path
41
42
  actions_path = File.join(FastlaneCore::FastlaneFolder.path, 'actions')
42
- Fastlane::Actions.load_external_actions(actions_path) if File.directory?(actions_path)
43
+ @external_actions = Fastlane::Actions.load_external_actions(actions_path) if File.directory?(actions_path)
43
44
  end
44
45
  end
45
46
 
47
+ attr_reader :external_actions
48
+
46
49
  def plugin_manager
47
50
  @plugin_manager ||= Fastlane::PluginManager.new
48
51
  end
@@ -105,6 +105,7 @@ module Fastlane
105
105
  def self.load_external_actions(path)
106
106
  UI.user_error!("You need to pass a valid path") unless File.exist?(path)
107
107
 
108
+ class_refs = []
108
109
  Dir[File.expand_path('*.rb', path)].each do |file|
109
110
  begin
110
111
  require file
@@ -123,6 +124,7 @@ module Fastlane
123
124
  class_name = file_name.fastlane_class + 'Action'
124
125
  begin
125
126
  class_ref = Fastlane::Actions.const_get(class_name)
127
+ class_refs << class_ref
126
128
 
127
129
  if class_ref.respond_to?(:run)
128
130
  UI.success("Successfully loaded custom action '#{file}'.") if FastlaneCore::Globals.verbose?
@@ -139,6 +141,8 @@ module Fastlane
139
141
  end
140
142
  end
141
143
  Actions.reset_aliases
144
+
145
+ return class_refs
142
146
  end
143
147
 
144
148
  def self.formerly_bundled_actions
@@ -36,6 +36,7 @@ module Fastlane
36
36
  return build_nr
37
37
  else
38
38
  version_number = params[:version]
39
+ platform = params[:platform]
39
40
 
40
41
  # Create filter for get_builds with optional version number
41
42
  filter = { app: app.apple_id }
@@ -46,18 +47,25 @@ module Fastlane
46
47
  version_number_message = "any version"
47
48
  end
48
49
 
50
+ if platform
51
+ filter["preReleaseVersion.platform"] = Spaceship::ConnectAPI::Platform.map(platform)
52
+ platform_message = "#{platform} platform"
53
+ else
54
+ platform_message = "any platform"
55
+ end
56
+
49
57
  UI.message("Fetching the latest build number for #{version_number_message}")
50
58
 
51
59
  # Get latest build for optional version number and return build number if found
52
- build = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-version", includes: "preReleaseVersion", limit: 1).first
60
+ build = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion", limit: 1).first
53
61
  if build
54
62
  build_nr = build.version
55
- UI.message("Latest upload for version #{build.app_version} is build: #{build_nr}")
63
+ UI.message("Latest upload for version #{build.app_version} on #{platform_message} is build: #{build_nr}")
56
64
  return build_nr
57
65
  end
58
66
 
59
67
  # Let user know that build couldn't be found
60
- UI.important("Could not find a build for #{version_number_message} on App Store Connect")
68
+ UI.important("Could not find a build for #{version_number_message} on #{platform_message} on App Store Connect")
61
69
 
62
70
  if params[:initial_build_number].nil?
63
71
  UI.user_error!("Could not find a build on App Store Connect - and 'initial_build_number' option is not set")
@@ -11,20 +11,22 @@ module Fastlane
11
11
 
12
12
  if command_name == "archive" && params[:frameworks].count > 0
13
13
  cmd.concat(params[:frameworks])
14
- elsif ["update", "build", "bootstrap"].include?(command_name) && params[:dependencies].count > 0
15
- cmd.concat(params[:dependencies])
14
+ # "update", "build" and "bootstrap" are the only commands that support "--derived-data" parameter
15
+ elsif ["update", "build", "bootstrap"].include?(command_name)
16
+ cmd.concat(params[:dependencies]) if params[:dependencies].count > 0
17
+ cmd << "--derived-data #{params[:derived_data].shellescape}" if params[:derived_data]
16
18
  end
17
19
 
18
20
  cmd << "--output #{params[:output]}" if params[:output]
19
21
  cmd << "--use-ssh" if params[:use_ssh]
20
22
  cmd << "--use-submodules" if params[:use_submodules]
21
23
  cmd << "--no-use-binaries" if params[:use_binaries] == false
24
+ cmd << "--no-checkout" if params[:no_checkout] == true
22
25
  cmd << "--no-build" if params[:no_build] == true
23
26
  cmd << "--no-skip-current" if params[:no_skip_current] == true
24
27
  cmd << "--verbose" if params[:verbose] == true
25
28
  cmd << "--platform #{params[:platform]}" if params[:platform]
26
29
  cmd << "--configuration #{params[:configuration]}" if params[:configuration]
27
- cmd << "--derived-data #{params[:derived_data].shellescape}" if params[:derived_data]
28
30
  cmd << "--toolchain #{params[:toolchain]}" if params[:toolchain]
29
31
  cmd << "--project-directory #{params[:project_directory]}" if params[:project_directory]
30
32
  cmd << "--cache-builds" if params[:cache_builds]
@@ -93,6 +95,12 @@ module Fastlane
93
95
  is_string: false,
94
96
  type: Boolean,
95
97
  optional: true),
98
+ FastlaneCore::ConfigItem.new(key: :no_checkout,
99
+ env_name: "FL_CARTHAGE_NO_CHECKOUT",
100
+ description: "When bootstrapping Carthage do not checkout",
101
+ is_string: false,
102
+ type: Boolean,
103
+ optional: true),
96
104
  FastlaneCore::ConfigItem.new(key: :no_build,
97
105
  env_name: "FL_CARTHAGE_NO_BUILD",
98
106
  description: "When bootstrapping Carthage do not build",
@@ -14,15 +14,17 @@ module Fastlane
14
14
  cmd << ["cd '#{podfile_folder}' &&"]
15
15
  end
16
16
 
17
- cmd << ['bundle exec'] if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
17
+ cmd << ['bundle exec'] if use_bundle_exec?(params)
18
18
  cmd << ['pod install']
19
19
 
20
20
  cmd << '--no-clean' unless params[:clean]
21
21
  cmd << '--no-integrate' unless params[:integrate]
22
+ cmd << '--clean-install' if params[:clean_install] && pod_version.to_f >= 1.7
22
23
  cmd << '--repo-update' if params[:repo_update]
23
24
  cmd << '--silent' if params[:silent]
24
25
  cmd << '--verbose' if params[:verbose]
25
26
  cmd << '--no-ansi' unless params[:ansi]
27
+ cmd << '--deployment' if params[:deployment]
26
28
 
27
29
  Actions.sh(cmd.join(' '), error_callback: lambda { |result|
28
30
  if !params[:repo_update] && params[:try_repo_update_on_error]
@@ -36,6 +38,14 @@ module Fastlane
36
38
  })
37
39
  end
38
40
 
41
+ def self.use_bundle_exec?(params)
42
+ params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
43
+ end
44
+
45
+ def self.pod_version
46
+ use_bundle_exec?(params) ? `bundle exec pod --version` : `pod --version`
47
+ end
48
+
39
49
  def self.call_error_callback(params, result)
40
50
  if params[:error_callback]
41
51
  Dir.chdir(FastlaneCore::FastlaneFolder.path) do
@@ -57,6 +67,11 @@ module Fastlane
57
67
  description: "Add `--repo-update` flag to `pod install` command",
58
68
  is_string: false,
59
69
  default_value: false),
70
+ FastlaneCore::ConfigItem.new(key: :clean_install,
71
+ env_name: "FL_COCOAPODS_CLEAN_INSTALL",
72
+ description: "Execute a full pod installation ignoring the content of the project cache",
73
+ is_string: false,
74
+ default_value: false),
60
75
  FastlaneCore::ConfigItem.new(key: :silent,
61
76
  env_name: "FL_COCOAPODS_SILENT",
62
77
  description: "Execute command without logging output",
@@ -98,11 +113,18 @@ module Fastlane
98
113
  is_string: false,
99
114
  default_value: false,
100
115
  type: Boolean),
116
+ FastlaneCore::ConfigItem.new(key: :deployment,
117
+ env_name: "FL_COCOAPODS_DEPLOYMENT",
118
+ description: 'Disallow any changes to the Podfile or the Podfile.lock during installation',
119
+ optional: true,
120
+ is_string: false,
121
+ default_value: false,
122
+ type: Boolean),
101
123
 
102
124
  # Deprecated
103
125
  FastlaneCore::ConfigItem.new(key: :clean,
104
126
  env_name: "FL_COCOAPODS_CLEAN",
105
- description: "(Option removed from cocoapods) Remove SCM directories",
127
+ description: "(Option renamed as clean_install) Remove SCM directories",
106
128
  deprecated: true,
107
129
  is_string: false,
108
130
  default_value: true),