fastlane 2.127.0.beta.20190709200015 → 2.127.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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