fastlane 2.127.0.beta.20190709200015 → 2.127.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d4cfca72cda0cf8854c58555ff2fe98438a044e5
4
- data.tar.gz: b01952402fb17f4ce8434346a4134127a2c083bb
2
+ SHA256:
3
+ metadata.gz: a193c8d123676ffdc211ad9104a26a1b16ebe969460f69f59636c2136498f065
4
+ data.tar.gz: 14a7a4349d0dac428a3e178c08b23552b6d9ae77003da419792fb10fd36ffe8c
5
5
  SHA512:
6
- metadata.gz: 9d5bae40f32c9424d94a19123e755fec92dbd45d4de3703cf9431cb997ed8de8779302d98472eab610548d2a834f50b7333b4c87f2efe15cff164a5e1285c0ba
7
- data.tar.gz: 7ecaa4c496decbe3ecf10a589f4c3647a93750511d22bbda8b176eb955404078d1979b40d793725165777f1ca1cc44b5f694c3ed2525675191d68d10a77c6e55
6
+ metadata.gz: fb0b36d00458c86fcd8f6038ed99047a82d93d45dc207ca94c5fd2202c03823595972500c3813a04183f7a53c5e16101f0d124c4c0bc1d8d6a75f1fd5449043c
7
+ data.tar.gz: '08b5f21255635ba8fc68378349dc552fc2bc327a3a0697e87967adcb65d6eaa590285d3a46c8df891e74e9a3cdc17b5f0709eac5b8fb6695bf196496369950dc'
data/README.md CHANGED
@@ -34,29 +34,23 @@ 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='danielle-tomlinson'>
38
- <a href='https://github.com/endocrimes'>
39
- <img src='https://github.com/endocrimes.png?size=140'>
40
- </a>
41
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</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'>
37
+ <td id='kohki-miki'>
38
+ <a href='https://github.com/giginet'>
39
+ <img src='https://github.com/giginet.png?size=140'>
46
40
  </a>
47
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
48
42
  </td>
49
- <td id='olivier-halligon'>
50
- <a href='https://github.com/AliSoftware'>
51
- <img src='https://github.com/AliSoftware.png?size=140'>
43
+ <td id='matthew-ellis'>
44
+ <a href='https://github.com/matthewellis'>
45
+ <img src='https://github.com/matthewellis.png?size=140'>
52
46
  </a>
53
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
47
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
54
48
  </td>
55
- <td id='joshua-liebowitz'>
56
- <a href='https://github.com/taquitos'>
57
- <img src='https://github.com/taquitos.png?size=140'>
49
+ <td id='andrew-mcburney'>
50
+ <a href='https://github.com/armcburney'>
51
+ <img src='https://github.com/armcburney.png?size=140'>
58
52
  </a>
59
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
60
54
  </td>
61
55
  <td id='josh-holtz'>
62
56
  <a href='https://github.com/joshdholtz'>
@@ -64,37 +58,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
64
58
  </a>
65
59
  <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
66
60
  </td>
67
- </tr>
68
- <tr>
69
- <td id='manu-wallner'>
70
- <a href='https://github.com/milch'>
71
- <img src='https://github.com/milch.png?size=140'>
72
- </a>
73
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
74
- </td>
75
- <td id='jorge-revuelta-h'>
76
- <a href='https://github.com/minuscorp'>
77
- <img src='https://github.com/minuscorp.png?size=140'>
78
- </a>
79
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
80
- </td>
81
- <td id='matthew-ellis'>
82
- <a href='https://github.com/matthewellis'>
83
- <img src='https://github.com/matthewellis.png?size=140'>
84
- </a>
85
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
86
- </td>
87
- <td id='iulian-onofrei'>
88
- <a href='https://github.com/revolter'>
89
- <img src='https://github.com/revolter.png?size=140'>
90
- </a>
91
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
92
- </td>
93
- <td id='kohki-miki'>
94
- <a href='https://github.com/giginet'>
95
- <img src='https://github.com/giginet.png?size=140'>
61
+ <td id='stefan-natchev'>
62
+ <a href='https://github.com/snatchev'>
63
+ <img src='https://github.com/snatchev.png?size=140'>
96
64
  </a>
97
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
65
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
98
66
  </td>
99
67
  </tr>
100
68
  <tr>
@@ -104,23 +72,37 @@ 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/Sujan'>Jan Piotrowski</a></h4>
106
74
  </td>
107
- <td id='andrew-mcburney'>
108
- <a href='https://github.com/armcburney'>
109
- <img src='https://github.com/armcburney.png?size=140'>
110
- </a>
111
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
112
- </td>
113
75
  <td id='maksym-grebenets'>
114
76
  <a href='https://github.com/mgrebenets'>
115
77
  <img src='https://github.com/mgrebenets.png?size=140'>
116
78
  </a>
117
79
  <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
118
80
  </td>
119
- <td id='stefan-natchev'>
120
- <a href='https://github.com/snatchev'>
121
- <img src='https://github.com/snatchev.png?size=140'>
81
+ <td id='olivier-halligon'>
82
+ <a href='https://github.com/AliSoftware'>
83
+ <img src='https://github.com/AliSoftware.png?size=140'>
122
84
  </a>
123
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
86
+ </td>
87
+ <td id='felix-krause'>
88
+ <a href='https://github.com/KrauseFx'>
89
+ <img src='https://github.com/KrauseFx.png?size=140'>
90
+ </a>
91
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
92
+ </td>
93
+ <td id='jimmy-dee'>
94
+ <a href='https://github.com/jdee'>
95
+ <img src='https://github.com/jdee.png?size=140'>
96
+ </a>
97
+ <h4 align='center'>Jimmy Dee</h4>
98
+ </td>
99
+ </tr>
100
+ <tr>
101
+ <td id='jorge-revuelta-h'>
102
+ <a href='https://github.com/minuscorp'>
103
+ <img src='https://github.com/minuscorp.png?size=140'>
104
+ </a>
105
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
124
106
  </td>
125
107
  <td id='aaron-brager'>
126
108
  <a href='https://github.com/getaaron'>
@@ -128,13 +110,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
128
110
  </a>
129
111
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
130
112
  </td>
131
- </tr>
132
- <tr>
133
- <td id='felix-krause'>
134
- <a href='https://github.com/KrauseFx'>
135
- <img src='https://github.com/KrauseFx.png?size=140'>
113
+ <td id='joshua-liebowitz'>
114
+ <a href='https://github.com/taquitos'>
115
+ <img src='https://github.com/taquitos.png?size=140'>
136
116
  </a>
137
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
117
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
138
118
  </td>
139
119
  <td id='helmut-januschka'>
140
120
  <a href='https://github.com/hjanuschka'>
@@ -148,11 +128,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
148
128
  </a>
149
129
  <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
150
130
  </td>
151
- <td id='jimmy-dee'>
152
- <a href='https://github.com/jdee'>
153
- <img src='https://github.com/jdee.png?size=140'>
131
+ </tr>
132
+ <tr>
133
+ <td id='iulian-onofrei'>
134
+ <a href='https://github.com/revolter'>
135
+ <img src='https://github.com/revolter.png?size=140'>
154
136
  </a>
155
- <h4 align='center'>Jimmy Dee</h4>
137
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
138
+ </td>
139
+ <td id='manu-wallner'>
140
+ <a href='https://github.com/milch'>
141
+ <img src='https://github.com/milch.png?size=140'>
142
+ </a>
143
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
144
+ </td>
145
+ <td id='fumiya-nakamura'>
146
+ <a href='https://github.com/nafu'>
147
+ <img src='https://github.com/nafu.png?size=140'>
148
+ </a>
149
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
156
150
  </td>
157
151
  <td id='jérôme-lacoste'>
158
152
  <a href='https://github.com/lacostej'>
@@ -160,6 +154,12 @@ 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/lacostej'>Jérôme Lacoste</a></h4>
162
156
  </td>
157
+ <td id='danielle-tomlinson'>
158
+ <a href='https://github.com/endocrimes'>
159
+ <img src='https://github.com/endocrimes.png?size=140'>
160
+ </a>
161
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
162
+ </td>
163
163
  </tr>
164
164
  </table>
165
165
 
@@ -19,6 +19,7 @@ module Fastlane
19
19
  command << " --reporter #{params[:reporter]}" if params[:reporter]
20
20
  command << supported_option_switch(params, :quiet, "0.9.0", true)
21
21
  command << supported_option_switch(params, :format, "0.11.0", true) if params[:mode] == :autocorrect
22
+ command << " --compiler-log-path #{params[:compiler_log_path].shellescape}" if params[:compiler_log_path]
22
23
 
23
24
  if params[:files]
24
25
  if version < Gem::Version.new('0.5.1')
@@ -71,7 +72,7 @@ module Fastlane
71
72
  def self.available_options
72
73
  [
73
74
  FastlaneCore::ConfigItem.new(key: :mode,
74
- description: "SwiftLint mode: :lint or :autocorrect",
75
+ description: "SwiftLint mode: :lint, :autocorrect or :analyze",
75
76
  is_string: false,
76
77
  default_value: :lint,
77
78
  optional: true),
@@ -124,7 +125,14 @@ module Fastlane
124
125
  default_value: false,
125
126
  is_string: false,
126
127
  type: Boolean,
127
- optional: true)
128
+ optional: true),
129
+ FastlaneCore::ConfigItem.new(key: :compiler_log_path,
130
+ description: "Compiler log path when mode is :analyze",
131
+ is_string: true,
132
+ optional: true,
133
+ verify_block: proc do |value|
134
+ UI.user_error!("Couldn't find compiler_log_path '#{File.expand_path(value)}'") unless File.exist?(value)
135
+ end)
128
136
  ]
129
137
  end
130
138
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.127.0.beta.20190709200015'.freeze
2
+ VERSION = '2.127.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 = '0.49.1'.freeze
@@ -18,4 +18,4 @@ class Deliverfile: DeliverfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.126.0
21
+ // Generated with fastlane 2.127.0
@@ -3567,7 +3567,8 @@ func swiftlint(mode: String = "lint",
3567
3567
  reporter: String? = nil,
3568
3568
  quiet: Bool = false,
3569
3569
  executable: String? = nil,
3570
- format: Bool = false) {
3570
+ format: Bool = false,
3571
+ compilerLogPath: String? = nil) {
3571
3572
  let command = RubyCommand(commandID: "", methodName: "swiftlint", className: nil, args: [RubyCommand.Argument(name: "mode", value: mode),
3572
3573
  RubyCommand.Argument(name: "path", value: path),
3573
3574
  RubyCommand.Argument(name: "output_file", value: outputFile),
@@ -3578,7 +3579,8 @@ func swiftlint(mode: String = "lint",
3578
3579
  RubyCommand.Argument(name: "reporter", value: reporter),
3579
3580
  RubyCommand.Argument(name: "quiet", value: quiet),
3580
3581
  RubyCommand.Argument(name: "executable", value: executable),
3581
- RubyCommand.Argument(name: "format", value: format)])
3582
+ RubyCommand.Argument(name: "format", value: format),
3583
+ RubyCommand.Argument(name: "compiler_log_path", value: compilerLogPath)])
3582
3584
  _ = runner.executeCommand(command)
3583
3585
  }
3584
3586
  func syncCodeSigning(type: String = "development",
@@ -4393,4 +4395,4 @@ let screengrabfile: Screengrabfile = Screengrabfile()
4393
4395
  let snapshotfile: Snapshotfile = Snapshotfile()
4394
4396
  // Please don't remove the lines below
4395
4397
  // They are used to detect outdated files
4396
- // FastlaneRunnerAPIVersion [0.9.51]
4398
+ // FastlaneRunnerAPIVersion [0.9.52]
@@ -18,4 +18,4 @@ class Gymfile: GymfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.126.0
21
+ // Generated with fastlane 2.127.0
@@ -18,4 +18,4 @@ class Matchfile: MatchfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.126.0
21
+ // Generated with fastlane 2.127.0
@@ -18,4 +18,4 @@ class Precheckfile: PrecheckfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.126.0
21
+ // Generated with fastlane 2.127.0
@@ -18,4 +18,4 @@ class Scanfile: ScanfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.126.0
21
+ // Generated with fastlane 2.127.0
@@ -18,4 +18,4 @@ class Screengrabfile: ScreengrabfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.126.0
21
+ // Generated with fastlane 2.127.0
@@ -18,4 +18,4 @@ class Snapshotfile: SnapshotfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.126.0
21
+ // Generated with fastlane 2.127.0
@@ -18,10 +18,16 @@ module FastlaneCore
18
18
  UI.deprecated(":strict_build_watch is no longer a used argument on FastlaneCore::BuildWatcher.")
19
19
  end
20
20
 
21
+ showed_info = false
21
22
  loop do
22
- matched_build, build_delivery = matching_build(watched_app_version: app_version, watched_build_version: build_version, app_id: app_id)
23
+ matched_build = matching_build(watched_app_version: app_version, watched_build_version: build_version, app_id: app_id, platform: platform)
23
24
 
24
- report_status(build: matched_build, build_delivery: build_delivery)
25
+ if matched_build.nil? && !showed_info
26
+ UI.important("Read more information on why this build isn't showing up yet - https://github.com/fastlane/fastlane/issues/14997")
27
+ showed_info = true
28
+ end
29
+
30
+ report_status(build: matched_build)
25
31
 
26
32
  if matched_build && matched_build.processed?
27
33
  if return_spaceship_testflight_build
@@ -47,32 +53,30 @@ module FastlaneCore
47
53
  watched_app_version = remove_version_leading_zeros(version: watched_app_version)
48
54
  watched_build_version = remove_version_leading_zeros(version: watched_build_version)
49
55
 
50
- build_deliveries = Spaceship::ConnectAPI::BuildDelivery.all(app_id: app_id, version: watched_app_version, build_number: watched_build_version)
51
- build_delivery = build_deliveries.first
52
-
53
- # Get processed builds when no longer in build deliveries
54
- if build_delivery.nil?
55
- matched_builds = Spaceship::ConnectAPI::Build.all(
56
- app_id: app_id,
57
- version: watched_app_version,
58
- build_number: watched_build_version,
59
- includes: "app,preReleaseVersion"
60
- )
61
- matched_build = matched_builds.first
56
+ filter_platform = Spaceship::ConnectAPI::Platform.map(platform) if platform
57
+ matched_builds = Spaceship::ConnectAPI::Build.all(
58
+ app_id: app_id,
59
+ version: watched_app_version,
60
+ build_number: watched_build_version,
61
+ platform: filter_platform
62
+ )
63
+
64
+ if matched_builds.size > 1
65
+ raise "FastlaneCore::BuildWatcher found more than 1 matching build"
62
66
  end
63
67
 
64
- return matched_build, build_delivery
68
+ matched_build = matched_builds.first
69
+
70
+ return matched_build
65
71
  end
66
72
 
67
- def report_status(build: nil, build_delivery: nil)
68
- if build_delivery
69
- UI.message("Waiting for App Store Connect to finish processing the new build (#{build_delivery.cf_build_short_version_string} - #{build_delivery.cf_build_version})")
70
- elsif build && !build.processed?
71
- UI.message("Waiting for App Store Connect to finish processing the new build (#{build.app_version} - #{build.version})")
73
+ def report_status(build: nil)
74
+ if build && !build.processed?
75
+ UI.message("Waiting for App Store Connect to finish processing the new build (#{build.app_version} - #{build.version}) for #{build.platform}")
72
76
  elsif build && build.processed?
73
- UI.success("Successfully finished processing the build #{build.app_version} - #{build.version}")
77
+ UI.success("Successfully finished processing the build #{build.app_version} - #{build.version} for #{build.platform}")
74
78
  else
75
- UI.message("Build doesn't show up in the build list anymore, waiting for it to appear again (check your email for processing issues if this continues)")
79
+ UI.message("Waiting for the build to show up in the build list - this may take a few minutes (check your email for processing issues if this continues)")
76
80
  end
77
81
  end
78
82
  end
@@ -84,7 +84,7 @@ module Pilot
84
84
  platform = fetch_app_platform
85
85
  app_version = FastlaneCore::IpaFileAnalyser.fetch_app_version(config[:ipa])
86
86
  app_build = FastlaneCore::IpaFileAnalyser.fetch_app_build(config[:ipa])
87
- latest_build = FastlaneCore::BuildWatcher.wait_for_build_processing_to_be_complete(app_id: app.id, platform: platform, train_version: app_version, build_version: app_build, poll_interval: config[:wait_processing_interval], return_spaceship_testflight_build: false)
87
+ latest_build = FastlaneCore::BuildWatcher.wait_for_build_processing_to_be_complete(app_id: app.id, platform: platform, app_version: app_version, build_version: app_build, poll_interval: config[:wait_processing_interval], return_spaceship_testflight_build: false)
88
88
 
89
89
  unless latest_build.app_version == app_version && latest_build.version == app_build
90
90
  UI.important("Uploaded app #{app_version} - #{app_build}, but received build #{latest_build.app_version} - #{latest_build.version}.")
@@ -100,7 +100,11 @@ module Pilot
100
100
  end
101
101
 
102
102
  # Get latest uploaded build if no build specified
103
- build ||= Spaceship::ConnectAPI::Build.all(app_id: app.id, sort: "-uploadedDate", limit: 1).first
103
+ if build.nil?
104
+ UI.important("No build specified - fetching latest build")
105
+ platform = Spaceship::ConnectAPI::Platform.map(fetch_app_platform)
106
+ build ||= Spaceship::ConnectAPI::Build.all(app_id: app.id, sort: "-uploadedDate", platform: platform, limit: 1).first
107
+ end
104
108
 
105
109
  # Verify the build has all the includes that we need
106
110
  # and fetch a new build if not
@@ -157,7 +161,7 @@ module Pilot
157
161
  [
158
162
  build.app_version,
159
163
  build.version,
160
- build.beta_build_metrics.map(&:install_count).reduce(:+)
164
+ (build.beta_build_metrics || []).map(&:install_count).reduce(:+)
161
165
  ]
162
166
  end
163
167
 
@@ -293,7 +297,7 @@ module Pilot
293
297
  UI.message("Distributing new build to testers: #{uploaded_build.app_version} - #{uploaded_build.version}")
294
298
 
295
299
  # This is where we could add a check to see if encryption is required and has been updated
296
- set_export_compliance_if_needed(uploaded_build, options)
300
+ uploaded_build = set_export_compliance_if_needed(uploaded_build, options)
297
301
 
298
302
  if options[:groups] || options[:distribute_external]
299
303
  if uploaded_build.ready_for_beta_submission?
@@ -332,7 +336,9 @@ module Pilot
332
336
 
333
337
  UI.important("Export compliance has been set to '#{uses_non_exempt_encryption}'. Need to wait for build to finishing processing again...")
334
338
  UI.important("Set 'ITSAppUsesNonExemptEncryption' in the 'Info.plist' to skip this step and speed up the submission")
335
- wait_for_build_processing_to_be_complete
339
+ return wait_for_build_processing_to_be_complete
340
+ else
341
+ return uploaded_build
336
342
  end
337
343
  end
338
344
 
@@ -43,5 +43,34 @@ module Spaceship
43
43
  class << self
44
44
  attr_reader :token
45
45
  end
46
+
47
+ # Defined in the App Store Connect API docs:
48
+ # https://developer.apple.com/documentation/appstoreconnectapi/platform
49
+ #
50
+ # Used for query param filters
51
+ module Platform
52
+ IOS = "IOS"
53
+ MAC_OS = "MAC_OS"
54
+ TV_OS = "TV_OS"
55
+ WATCH_OS = "WATCH_OS"
56
+
57
+ ALL = [IOS, MAC_OS, TV_OS, WATCH_OS]
58
+
59
+ def self.map(platform)
60
+ return platform if ALL.include?(platform)
61
+
62
+ # Map from fastlane input and Spaceship::TestFlight platform values
63
+ case platform.to_sym
64
+ when :appletvos
65
+ return Spaceship::ConnectAPI::Platform::TV_OS
66
+ when :osx
67
+ return Spaceship::ConnectAPI::Platform::MAC_OS
68
+ when :ios
69
+ return Spaceship::ConnectAPI::Platform::IOS
70
+ else
71
+ raise "Cannot find a matching platform for '#{platform}' - valid values are #{ALL.join(', ')}"
72
+ end
73
+ end
74
+ end
46
75
  end
47
76
  end
@@ -69,6 +69,11 @@ module Spaceship
69
69
  return app.bundle_id
70
70
  end
71
71
 
72
+ def platform
73
+ raise "No pre_release_version included" unless pre_release_version
74
+ return pre_release_version.platform
75
+ end
76
+
72
77
  def processed?
73
78
  return processing_state != ProcessingState::PROCESSING
74
79
  end
@@ -81,6 +86,7 @@ module Spaceship
81
86
  # This is here temporarily until the removal of Spaceship::TestFlight
82
87
  def to_testflight_build
83
88
  h = {
89
+ 'id' => id,
84
90
  'buildVersion' => version,
85
91
  'uploadDate' => uploaded_date,
86
92
  'externalState' => processed? ? Spaceship::TestFlight::Build::BUILD_STATES[:active] : Spaceship::TestFlight::Build::BUILD_STATES[:processing],
@@ -96,14 +102,23 @@ module Spaceship
96
102
  # API
97
103
  #
98
104
 
99
- def self.all(app_id: nil, version: nil, build_number: nil, includes: ESSENTIAL_INCLUDES, sort: "-uploadedDate", limit: 30)
105
+ def self.all(app_id: nil, version: nil, build_number: nil, platform: nil, includes: ESSENTIAL_INCLUDES, sort: "-uploadedDate", limit: 30)
100
106
  resps = Spaceship::ConnectAPI.get_builds(
101
- filter: { app: app_id, "preReleaseVersion.version" => version, version: build_number },
107
+ filter: { app: app_id, "preReleaseVersion.version" => version, version: build_number, processingState: "PROCESSING,FAILED,INVALID,VALID" },
102
108
  includes: includes,
103
109
  sort: sort,
104
110
  limit: limit
105
111
  ).all_pages
106
- return resps.map(&:to_models).flatten
112
+ models = resps.map(&:to_models).flatten
113
+
114
+ # Filtering after models are fetched since there is no way to do this in a query param filter
115
+ if platform
116
+ models = models.select do |build|
117
+ build.pre_release_version && build.pre_release_version.platform == platform
118
+ end
119
+ end
120
+
121
+ return models
107
122
  end
108
123
 
109
124
  def self.get(build_id: nil, includes: ESSENTIAL_INCLUDES)
@@ -228,7 +228,7 @@ module Spaceship
228
228
  end
229
229
  }
230
230
 
231
- delete("betaTesters/#{beta_tester_id}/relationships/apps", nil, body)
231
+ Client.instance.delete("betaTesters/#{beta_tester_id}/relationships/apps", nil, body)
232
232
  end
233
233
 
234
234
  def delete_beta_tester_from_beta_groups(beta_tester_id: nil, beta_group_ids: [])
@@ -241,7 +241,7 @@ module Spaceship
241
241
  end
242
242
  }
243
243
 
244
- delete("betaTesters/#{beta_tester_id}/relationships/betaGroups", nil, body)
244
+ Client.instance.delete("betaTesters/#{beta_tester_id}/relationships/betaGroups", nil, body)
245
245
  end
246
246
 
247
247
  #
@@ -217,8 +217,7 @@ module Spaceship
217
217
  return if ready_to_test?
218
218
  return if approved?
219
219
 
220
- build = find_app_store_connect_build
221
- Spaceship::ConnectAPI.post_beta_app_review_submissions(build_id: build["id"])
220
+ Spaceship::ConnectAPI.post_beta_app_review_submissions(build_id: id)
222
221
  end
223
222
 
224
223
  def expire!
@@ -231,8 +230,12 @@ module Spaceship
231
230
 
232
231
  # Bridges the TestFlight::Build to the App Store Connect API build
233
232
  def find_app_store_connect_build
234
- resp = Spaceship::ConnectAPI.get_builds(filter: { expired: false, processingState: "PROCESSING,VALID", version: self.build_version, "preReleaseVersion.version" => self.train_version, app: app_id })
235
- resp.first
233
+ builds = Spaceship::ConnectAPI::Build.all(
234
+ app_id: app_id,
235
+ version: self.train_version,
236
+ build_number: self.build_version
237
+ )
238
+ return builds.find { |build| build.id == id }
236
239
  end
237
240
  end
238
241
  end
@@ -13,8 +13,12 @@ module Spaceship::TestFlight
13
13
  # See `Spaceship::TestFlight::Build#reload`
14
14
 
15
15
  def self.all(app_id: nil, platform: nil, retry_count: 3)
16
- resps = Spaceship::ConnectAPI.get_builds(filter: { app: app_id, processingState: "VALID,PROCESSING,FAILED,INVALID" }, limit: 100, sort: "uploadedDate", includes: "preReleaseVersion,app").all_pages
17
- connect_builds = resps.map(&:to_models).flatten
16
+ filter_platform = Spaceship::ConnectAPI::Platform.map(platform) if platform
17
+ connect_builds = Spaceship::ConnectAPI::Build.all(
18
+ app_id: app_id,
19
+ sort: "uploadedDate",
20
+ platform: filter_platform
21
+ )
18
22
 
19
23
  trains = {}
20
24
  connect_builds.each do |connect_build|
@@ -212,7 +212,9 @@ module Spaceship
212
212
 
213
213
  maskings_count = number_with_dialcode_masked.count('•') # => 9 or 8
214
214
  pattern = /^([0-9+]{2,4})([•]{#{maskings_count}})([0-9]{2})$/
215
- replacement = "\\1([0-9]{#{maskings_count - 1},#{maskings_count}})\\3"
215
+ # following regex: range from maskings_count-2 because sometimes the masked number has 1 or 2 dots more than the actual number
216
+ # e.g. https://github.com/fastlane/fastlane/issues/14969
217
+ replacement = "\\1([0-9]{#{maskings_count - 2},#{maskings_count}})\\3"
216
218
  number_with_dialcode_regex_part = number_with_dialcode_masked.gsub(pattern, replacement)
217
219
  # => +49([0-9]{8,9})85 or +1([0-9]{7,8})66
218
220
 
metadata CHANGED
@@ -1,33 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.127.0.beta.20190709200015
4
+ version: 2.127.0
5
5
  platform: ruby
6
6
  authors:
7
- - Matthew Ellis
8
- - Helmut Januschka
9
- - Jérôme Lacoste
10
- - Felix Krause
11
- - Jorge Revuelta H
12
7
  - Kohki Miki
8
+ - Jan Piotrowski
13
9
  - Iulian Onofrei
14
- - Olivier Halligon
15
- - Stefan Natchev
10
+ - Danielle Tomlinson
11
+ - Felix Krause
12
+ - Matthew Ellis
13
+ - Jérôme Lacoste
16
14
  - Joshua Liebowitz
17
- - Andrew McBurney
15
+ - Stefan Natchev
16
+ - Josh Holtz
17
+ - Luka Mirosevic
18
+ - Helmut Januschka
18
19
  - Maksym Grebenets
19
- - Danielle Tomlinson
20
+ - Aaron Brager
20
21
  - Manu Wallner
22
+ - Olivier Halligon
23
+ - Andrew McBurney
21
24
  - Fumiya Nakamura
22
- - Jan Piotrowski
23
25
  - Jimmy Dee
24
- - Josh Holtz
25
- - Aaron Brager
26
- - Luka Mirosevic
26
+ - Jorge Revuelta H
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
30
- date: 2019-07-09 00:00:00.000000000 Z
30
+ date: 2019-07-10 00:00:00.000000000 Z
31
31
  dependencies:
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: slack-notifier
@@ -980,6 +980,8 @@ files:
980
980
  - fastlane/lib/fastlane.rb
981
981
  - fastlane/lib/fastlane/action.rb
982
982
  - fastlane/lib/fastlane/action_collector.rb
983
+ - fastlane/lib/fastlane/actions/.slack.rb.swp
984
+ - fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp
983
985
  - fastlane/lib/fastlane/actions/README.md
984
986
  - fastlane/lib/fastlane/actions/actions_helper.rb
985
987
  - fastlane/lib/fastlane/actions/adb.rb
@@ -1304,6 +1306,7 @@ files:
1304
1306
  - fastlane/swift/Fastlane.swift
1305
1307
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj
1306
1308
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
1309
+ - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate
1307
1310
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme
1308
1311
  - fastlane/swift/FastlaneSwiftRunner/README.txt
1309
1312
  - fastlane/swift/Gymfile.swift
@@ -1456,6 +1459,8 @@ files:
1456
1459
  - pem/lib/pem/options.rb
1457
1460
  - pilot/README.md
1458
1461
  - pilot/lib/pilot.rb
1462
+ - pilot/lib/pilot/.manager.rb.swp
1463
+ - pilot/lib/pilot/.tester_manager.rb.swp
1459
1464
  - pilot/lib/pilot/build_manager.rb
1460
1465
  - pilot/lib/pilot/commands_generator.rb
1461
1466
  - pilot/lib/pilot/features.rb
@@ -1587,6 +1592,7 @@ files:
1587
1592
  - spaceship/lib/spaceship/client.rb
1588
1593
  - spaceship/lib/spaceship/commands_generator.rb
1589
1594
  - spaceship/lib/spaceship/connect_api.rb
1595
+ - spaceship/lib/spaceship/connect_api/.DS_Store
1590
1596
  - spaceship/lib/spaceship/connect_api/client.rb
1591
1597
  - spaceship/lib/spaceship/connect_api/model.rb
1592
1598
  - spaceship/lib/spaceship/connect_api/models/app.rb
@@ -1735,24 +1741,24 @@ metadata:
1735
1741
  post_install_message:
1736
1742
  rdoc_options: []
1737
1743
  require_paths:
1738
- - scan/lib
1739
- - spaceship/lib
1740
1744
  - credentials_manager/lib
1741
- - fastlane/lib
1742
- - sigh/lib
1745
+ - pem/lib
1746
+ - snapshot/lib
1747
+ - frameit/lib
1748
+ - match/lib
1743
1749
  - fastlane_core/lib
1750
+ - deliver/lib
1751
+ - scan/lib
1752
+ - supply/lib
1753
+ - cert/lib
1754
+ - fastlane/lib
1755
+ - spaceship/lib
1756
+ - pilot/lib
1757
+ - gym/lib
1744
1758
  - precheck/lib
1745
- - frameit/lib
1746
1759
  - screengrab/lib
1760
+ - sigh/lib
1747
1761
  - produce/lib
1748
- - pem/lib
1749
- - cert/lib
1750
- - gym/lib
1751
- - supply/lib
1752
- - match/lib
1753
- - pilot/lib
1754
- - snapshot/lib
1755
- - deliver/lib
1756
1762
  required_ruby_version: !ruby/object:Gem::Requirement
1757
1763
  requirements:
1758
1764
  - - ">="
@@ -1760,12 +1766,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
1760
1766
  version: 2.0.0
1761
1767
  required_rubygems_version: !ruby/object:Gem::Requirement
1762
1768
  requirements:
1763
- - - ">"
1769
+ - - ">="
1764
1770
  - !ruby/object:Gem::Version
1765
- version: 1.3.1
1771
+ version: '0'
1766
1772
  requirements: []
1767
- rubyforge_project:
1768
- rubygems_version: 2.6.8
1773
+ rubygems_version: 3.0.3
1769
1774
  signing_key:
1770
1775
  specification_version: 4
1771
1776
  summary: The easiest way to automate beta deployments and releases for your iOS and