fastlane_iac_publish 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +74 -74
  3. data/fastlane/lib/fastlane/actions/build_ios_app.rb +2 -2
  4. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +1 -1
  5. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -1
  6. data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -1
  7. data/fastlane/lib/fastlane/actions/increment_version_number.rb +1 -1
  8. data/fastlane/lib/fastlane/actions/swiftlint.rb +10 -2
  9. data/fastlane/lib/fastlane/actions/version_bump_podspec.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/xcodebuild.rb +1 -1
  11. data/fastlane/lib/fastlane/fast_file.rb +23 -2
  12. data/fastlane/lib/fastlane/version.rb +1 -1
  13. data/fastlane/swift/Deliverfile.swift +1 -1
  14. data/fastlane/swift/Fastlane.swift +5 -3
  15. data/fastlane/swift/Gymfile.swift +1 -1
  16. data/fastlane/swift/Matchfile.swift +1 -1
  17. data/fastlane/swift/Precheckfile.swift +1 -1
  18. data/fastlane/swift/Scanfile.swift +1 -1
  19. data/fastlane/swift/Screengrabfile.swift +1 -1
  20. data/fastlane/swift/Snapshotfile.swift +1 -1
  21. data/fastlane_core/lib/fastlane_core/build_watcher.rb +35 -23
  22. data/pilot/lib/pilot/build_manager.rb +11 -5
  23. data/snapshot/lib/assets/SnapshotHelper.swift +2 -2
  24. data/spaceship/lib/.DS_Store +0 -0
  25. data/spaceship/lib/spaceship/connect_api.rb +29 -0
  26. data/spaceship/lib/spaceship/connect_api/models/build.rb +18 -3
  27. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +2 -2
  28. data/spaceship/lib/spaceship/test_flight/build.rb +7 -4
  29. data/spaceship/lib/spaceship/test_flight/build_trains.rb +6 -2
  30. data/spaceship/lib/spaceship/tunes/application.rb +10 -0
  31. metadata +27 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 381b89d5c23dca7c204c5519ea966d9c72fb4aa4cff9df16049e849e2e9d83a9
4
- data.tar.gz: 9c950d117b781b42359bc7ca55780e1dd8f6af35c50fc487abaaf9e897d36ac0
3
+ metadata.gz: 9516d5b72274f8cdf6e0f269004869d6e6f5e6a733e6a720f6ef410308254955
4
+ data.tar.gz: dfc382dd6907fc920ea000e10a5f57b8690af54beb36ee31b2032f3f091e3b81
5
5
  SHA512:
6
- metadata.gz: e8bd00f99cf2bae712ff8f9e0e4091b2bd20b3f2fc683634bdbffb5557dbb8f9ede343ca4c77b017684f8bc9db3b726bae235ec51663fdbff5d19e3474196857
7
- data.tar.gz: 6ab0cc5e9aa0862b61b9cfd4033bc37f69e79749c96885d8cc1c99c9ed70d5025693d91d5490f7bee56448fe0bcea6cd2654fdb0d9b53dffc86b884f7e16c96a
6
+ metadata.gz: 5b7938c75e8e315188d7c3a03b3950087e1751c5a19db2c5d5eac8e39619573647d9894682f465060d1ace472c36ad38fc29d167701fe63d6e1690deb99d261a
7
+ data.tar.gz: e8de6fa8436770f8c3332cbe8e5a5de5bbaf73f52c5d6b897f0f56c60dec23130811d9675b45508b5a82352d01b1382710892a1f680e79d9a722a60e9ce66fdf
data/README.md CHANGED
@@ -34,35 +34,35 @@ 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='helmut-januschka'>
38
+ <a href='https://github.com/hjanuschka'>
39
+ <img src='https://github.com/hjanuschka.png?size=140'>
40
+ </a>
41
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
42
+ </td>
37
43
  <td id='danielle-tomlinson'>
38
44
  <a href='https://github.com/endocrimes'>
39
45
  <img src='https://github.com/endocrimes.png?size=140'>
40
46
  </a>
41
47
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
42
48
  </td>
43
- <td id='fumiya-nakamura'>
44
- <a href='https://github.com/nafu'>
45
- <img src='https://github.com/nafu.png?size=140'>
46
- </a>
47
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
48
- </td>
49
- <td id='olivier-halligon'>
50
- <a href='https://github.com/AliSoftware'>
51
- <img src='https://github.com/AliSoftware.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'>
52
52
  </a>
53
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
54
54
  </td>
55
- <td id='joshua-liebowitz'>
56
- <a href='https://github.com/taquitos'>
57
- <img src='https://github.com/taquitos.png?size=140'>
55
+ <td id='jérôme-lacoste'>
56
+ <a href='https://github.com/lacostej'>
57
+ <img src='https://github.com/lacostej.png?size=140'>
58
58
  </a>
59
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
60
60
  </td>
61
- <td id='josh-holtz'>
62
- <a href='https://github.com/joshdholtz'>
63
- <img src='https://github.com/joshdholtz.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/joshdholtz'>Josh Holtz</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>
@@ -72,93 +72,93 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
72
72
  </a>
73
73
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
74
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'>
75
+ <td id='stefan-natchev'>
76
+ <a href='https://github.com/snatchev'>
77
+ <img src='https://github.com/snatchev.png?size=140'>
78
78
  </a>
79
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
80
80
  </td>
81
- <td id='matthew-ellis'>
82
- <a href='https://github.com/matthewellis'>
83
- <img src='https://github.com/matthewellis.png?size=140'>
81
+ <td id='jan-piotrowski'>
82
+ <a href='https://github.com/janpio'>
83
+ <img src='https://github.com/janpio.png?size=140'>
84
84
  </a>
85
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
86
86
  </td>
87
- <td id='iulian-onofrei'>
88
- <a href='https://github.com/revolter'>
89
- <img src='https://github.com/revolter.png?size=140'>
87
+ <td id='aaron-brager'>
88
+ <a href='https://github.com/getaaron'>
89
+ <img src='https://github.com/getaaron.png?size=140'>
90
90
  </a>
91
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
91
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
92
92
  </td>
93
- <td id='kohki-miki'>
94
- <a href='https://github.com/giginet'>
95
- <img src='https://github.com/giginet.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'><a href='https://twitter.com/giginet'>Kohki Miki</a></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='jan-piotrowski'>
102
- <a href='https://github.com/janpio'>
103
- <img src='https://github.com/janpio.png?size=140'>
101
+ <td id='jimmy-dee'>
102
+ <a href='https://github.com/jdee'>
103
+ <img src='https://github.com/jdee.png?size=140'>
104
104
  </a>
105
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
105
+ <h4 align='center'>Jimmy Dee</h4>
106
106
  </td>
107
- <td id='andrew-mcburney'>
108
- <a href='https://github.com/armcburney'>
109
- <img src='https://github.com/armcburney.png?size=140'>
107
+ <td id='iulian-onofrei'>
108
+ <a href='https://github.com/revolter'>
109
+ <img src='https://github.com/revolter.png?size=140'>
110
110
  </a>
111
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
111
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
112
112
  </td>
113
- <td id='maksym-grebenets'>
114
- <a href='https://github.com/mgrebenets'>
115
- <img src='https://github.com/mgrebenets.png?size=140'>
113
+ <td id='jorge-revuelta-h'>
114
+ <a href='https://github.com/minuscorp'>
115
+ <img src='https://github.com/minuscorp.png?size=140'>
116
116
  </a>
117
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
117
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
118
118
  </td>
119
- <td id='stefan-natchev'>
120
- <a href='https://github.com/snatchev'>
121
- <img src='https://github.com/snatchev.png?size=140'>
119
+ <td id='joshua-liebowitz'>
120
+ <a href='https://github.com/taquitos'>
121
+ <img src='https://github.com/taquitos.png?size=140'>
122
122
  </a>
123
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
123
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
124
124
  </td>
125
- <td id='aaron-brager'>
126
- <a href='https://github.com/getaaron'>
127
- <img src='https://github.com/getaaron.png?size=140'>
125
+ <td id='kohki-miki'>
126
+ <a href='https://github.com/giginet'>
127
+ <img src='https://github.com/giginet.png?size=140'>
128
128
  </a>
129
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
129
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
130
130
  </td>
131
131
  </tr>
132
132
  <tr>
133
- <td id='felix-krause'>
134
- <a href='https://github.com/KrauseFx'>
135
- <img src='https://github.com/KrauseFx.png?size=140'>
136
- </a>
137
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
138
- </td>
139
- <td id='helmut-januschka'>
140
- <a href='https://github.com/hjanuschka'>
141
- <img src='https://github.com/hjanuschka.png?size=140'>
142
- </a>
143
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
144
- </td>
145
133
  <td id='luka-mirosevic'>
146
134
  <a href='https://github.com/lmirosevic'>
147
135
  <img src='https://github.com/lmirosevic.png?size=140'>
148
136
  </a>
149
137
  <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
150
138
  </td>
151
- <td id='jimmy-dee'>
152
- <a href='https://github.com/jdee'>
153
- <img src='https://github.com/jdee.png?size=140'>
139
+ <td id='maksym-grebenets'>
140
+ <a href='https://github.com/mgrebenets'>
141
+ <img src='https://github.com/mgrebenets.png?size=140'>
154
142
  </a>
155
- <h4 align='center'>Jimmy Dee</h4>
143
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
156
144
  </td>
157
- <td id='jérôme-lacoste'>
158
- <a href='https://github.com/lacostej'>
159
- <img src='https://github.com/lacostej.png?size=140'>
145
+ <td id='matthew-ellis'>
146
+ <a href='https://github.com/matthewellis'>
147
+ <img src='https://github.com/matthewellis.png?size=140'>
160
148
  </a>
161
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
150
+ </td>
151
+ <td id='josh-holtz'>
152
+ <a href='https://github.com/joshdholtz'>
153
+ <img src='https://github.com/joshdholtz.png?size=140'>
154
+ </a>
155
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
156
+ </td>
157
+ <td id='olivier-halligon'>
158
+ <a href='https://github.com/AliSoftware'>
159
+ <img src='https://github.com/AliSoftware.png?size=140'>
160
+ </a>
161
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  </table>
@@ -1,8 +1,8 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  module SharedValues
4
- IPA_OUTPUT_PATH = :IPA_OUTPUT_PATH
5
- DSYM_OUTPUT_PATH = :DSYM_OUTPUT_PATH
4
+ IPA_OUTPUT_PATH ||= :IPA_OUTPUT_PATH
5
+ DSYM_OUTPUT_PATH ||= :DSYM_OUTPUT_PATH
6
6
  XCODEBUILD_ARCHIVE ||= :XCODEBUILD_ARCHIVE # originally defined in XcodebuildAction
7
7
  end
8
8
 
@@ -1,7 +1,7 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  module SharedValues
4
- FL_CHANGELOG = :FL_CHANGELOG
4
+ FL_CHANGELOG ||= :FL_CHANGELOG
5
5
  end
6
6
 
7
7
  class ChangelogFromGitCommitsAction < Action
@@ -6,7 +6,7 @@ module Fastlane
6
6
  SIGH_UDID = :SIGH_UDID # deprecated
7
7
  SIGH_UUID = :SIGH_UUID
8
8
  SIGH_NAME = :SIGH_NAME
9
- SIGH_PROFILE_TYPE = :SIGH_PROFILE_TYPE
9
+ SIGH_PROFILE_TYPE ||= :SIGH_PROFILE_TYPE
10
10
  end
11
11
 
12
12
  class GetProvisioningProfileAction < Action
@@ -1,7 +1,7 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  module SharedValues
4
- BUILD_NUMBER = :BUILD_NUMBER
4
+ BUILD_NUMBER ||= :BUILD_NUMBER
5
5
  end
6
6
 
7
7
  class IncrementBuildNumberAction < Action
@@ -1,7 +1,7 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  module SharedValues
4
- VERSION_NUMBER = :VERSION_NUMBER
4
+ VERSION_NUMBER ||= :VERSION_NUMBER
5
5
  end
6
6
 
7
7
  class IncrementVersionNumberAction < Action
@@ -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,7 +1,7 @@
1
1
  module Fastlane
2
2
  module Actions
3
3
  module SharedValues
4
- PODSPEC_VERSION_NUMBER = :PODSPEC_VERSION_NUMBER
4
+ PODSPEC_VERSION_NUMBER ||= :PODSPEC_VERSION_NUMBER
5
5
  end
6
6
 
7
7
  class VersionBumpPodspecAction < Action
@@ -2,7 +2,7 @@
2
2
  module Fastlane
3
3
  module Actions
4
4
  module SharedValues
5
- XCODEBUILD_ARCHIVE = :XCODEBUILD_ARCHIVE
5
+ XCODEBUILD_ARCHIVE ||= :XCODEBUILD_ARCHIVE
6
6
  XCODEBUILD_DERIVED_DATA_PATH = :XCODEBUILD_DERIVED_DATA_PATH
7
7
  end
8
8
 
@@ -182,8 +182,29 @@ module Fastlane
182
182
  end
183
183
 
184
184
  # Execute shell command
185
- def sh(*command, log: true, error_callback: nil, &b)
186
- FastFile.sh(*command, log: log, error_callback: error_callback, &b)
185
+ # Accepts arguments with with and without the command named keyword so that sh
186
+ # behaves like other actions with named keywords
187
+ # https://github.com/fastlane/fastlane/issues/14930
188
+ #
189
+ # Example:
190
+ # sh("ls")
191
+ # sh("ls", log: false)
192
+ # sh(command: "ls")
193
+ # sh(command: "ls", log: false)
194
+ def sh(*args, &b)
195
+ # First accepts hash (or named keywords) like other actions
196
+ # Otherwise uses sh method that doesn't have an interface like an action
197
+ if args.count == 1 && args.first.kind_of?(Hash)
198
+ hash = args.first
199
+ command = hash.delete(:command)
200
+
201
+ raise ArgumentError, "sh requires :command keyword in argument" if command.nil?
202
+
203
+ new_args = [*command, hash]
204
+ FastFile.sh(*new_args, &b)
205
+ else
206
+ FastFile.sh(*args, &b)
207
+ end
187
208
  end
188
209
 
189
210
  def self.sh(*command, log: true, error_callback: nil, &b)
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.126.0'.freeze
2
+ VERSION = '2.127.2'.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.2
@@ -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.2
@@ -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.2
@@ -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.2
@@ -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.2
@@ -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.2
@@ -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.2
@@ -10,18 +10,27 @@ module FastlaneCore
10
10
  # Warn about train_version being removed in the future
11
11
  if train_version
12
12
  UI.deprecated(":train_version is no longer a used argument on FastlaneCore::BuildWatcher. Please use :app_version instead.")
13
+ app_version = train_version
13
14
  end
14
- app_version = train_version
15
15
 
16
16
  # Warn about strict_build_watch being removed in the future
17
17
  if strict_build_watch
18
18
  UI.deprecated(":strict_build_watch is no longer a used argument on FastlaneCore::BuildWatcher.")
19
19
  end
20
20
 
21
+ platform = Spaceship::ConnectAPI::Platform.map(platform) if platform
22
+ UI.message("Waiting for processing on... app_id: #{app_id}, app_version: #{app_version}, build_version: #{build_version}, platform: #{platform}")
23
+
24
+ showed_info = false
21
25
  loop do
22
- matched_build, build_delivery = matching_build(watched_app_version: app_version, watched_build_version: build_version, app_id: app_id)
26
+ matched_build = matching_build(watched_app_version: app_version, watched_build_version: build_version, app_id: app_id, platform: platform)
27
+
28
+ if matched_build.nil? && !showed_info
29
+ UI.important("Read more information on why this build isn't showing up yet - https://github.com/fastlane/fastlane/issues/14997")
30
+ showed_info = true
31
+ end
23
32
 
24
- report_status(build: matched_build, build_delivery: build_delivery)
33
+ report_status(build: matched_build)
25
34
 
26
35
  if matched_build && matched_build.processed?
27
36
  if return_spaceship_testflight_build
@@ -47,32 +56,35 @@ module FastlaneCore
47
56
  watched_app_version = remove_version_leading_zeros(version: watched_app_version)
48
57
  watched_build_version = remove_version_leading_zeros(version: watched_build_version)
49
58
 
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
59
+ matched_builds = Spaceship::ConnectAPI::Build.all(
60
+ app_id: app_id,
61
+ version: watched_app_version,
62
+ build_number: watched_build_version,
63
+ platform: platform
64
+ )
65
+
66
+ # Raise error if more than 1 build is returned
67
+ # This should never happen but need to inform the user if it does
68
+ if matched_builds.size > 1
69
+ error_builds = matched_builds.map do |build|
70
+ "#{build.app_version}(#{build.version}) for #{build.platform} - #{build.processing_state}"
71
+ end.join("\n")
72
+ error_message = "FastlaneCore::BuildWatcher found more than 1 matching build: \n#{error_builds}"
73
+ UI.crash!(error_message)
62
74
  end
63
75
 
64
- return matched_build, build_delivery
76
+ matched_build = matched_builds.first
77
+
78
+ return matched_build
65
79
  end
66
80
 
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})")
81
+ def report_status(build: nil)
82
+ if build && !build.processed?
83
+ UI.message("Waiting for App Store Connect to finish processing the new build (#{build.app_version} - #{build.version}) for #{build.platform}")
72
84
  elsif build && build.processed?
73
- UI.success("Successfully finished processing the build #{build.app_version} - #{build.version}")
85
+ UI.success("Successfully finished processing the build #{build.app_version} - #{build.version} for #{build.platform}")
74
86
  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)")
87
+ 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
88
  end
77
89
  end
78
90
  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
 
@@ -178,7 +178,7 @@ open class Snapshot: NSObject {
178
178
 
179
179
  do {
180
180
  // The simulator name contains "Clone X of " inside the screenshot file when running parallelized UI Tests on concurrent devices
181
- let regex = try NSRegularExpression(pattern: "Clone [0-1]+ of ")
181
+ let regex = try NSRegularExpression(pattern: "Clone [0-9]+ of ")
182
182
  let range = NSMakeRange(0, simulator.count)
183
183
  simulator = regex.stringByReplacingMatches(in: simulator, range: range, withTemplate: "")
184
184
 
@@ -300,4 +300,4 @@ private extension CGFloat {
300
300
 
301
301
  // Please don't remove the lines below
302
302
  // They are used to detect outdated configuration files
303
- // SnapshotHelperVersion [1.18]
303
+ // SnapshotHelperVersion [1.19]
Binary file
@@ -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, processing_states: "PROCESSING,FAILED,INVALID,VALID", 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_states },
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|
@@ -216,6 +216,16 @@ module Spaceship
216
216
  end
217
217
  end
218
218
 
219
+ def versions_history_custom(plat)
220
+ ensure_not_a_bundle
221
+ p "prova"
222
+ versions = client.versions_history(apple_id, plat)
223
+ versions.map do |attrs|
224
+ attrs[:application] = self
225
+ Tunes::AppVersionHistory.factory(attrs)
226
+ end
227
+ end
228
+
219
229
  #####################################################
220
230
  # @!group Modifying
221
231
  #####################################################
metadata CHANGED
@@ -1,33 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane_iac_publish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
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
- - Kohki Miki
13
- - Iulian Onofrei
14
- - Olivier Halligon
15
- - Stefan Natchev
7
+ - Danielle Tomlinson
16
8
  - Joshua Liebowitz
17
9
  - Andrew McBurney
18
- - Maksym Grebenets
19
- - Danielle Tomlinson
20
- - Manu Wallner
21
- - Fumiya Nakamura
22
- - Jan Piotrowski
23
10
  - Jimmy Dee
11
+ - Jorge Revuelta H
24
12
  - Josh Holtz
13
+ - Helmut Januschka
14
+ - Jan Piotrowski
25
15
  - Aaron Brager
16
+ - Kohki Miki
17
+ - Matthew Ellis
18
+ - Fumiya Nakamura
19
+ - Jérôme Lacoste
20
+ - Manu Wallner
21
+ - Felix Krause
26
22
  - Luka Mirosevic
23
+ - Olivier Halligon
24
+ - Stefan Natchev
25
+ - Maksym Grebenets
26
+ - Iulian Onofrei
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
30
- date: 2019-07-08 00:00:00.000000000 Z
30
+ date: 2019-07-20 00:00:00.000000000 Z
31
31
  dependencies:
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: slack-notifier
@@ -431,16 +431,22 @@ dependencies:
431
431
  name: mini_magick
432
432
  requirement: !ruby/object:Gem::Requirement
433
433
  requirements:
434
- - - "~>"
434
+ - - ">="
435
+ - !ruby/object:Gem::Version
436
+ version: 4.9.4
437
+ - - "<"
435
438
  - !ruby/object:Gem::Version
436
- version: 4.5.1
439
+ version: 5.0.0
437
440
  type: :runtime
438
441
  prerelease: false
439
442
  version_requirements: !ruby/object:Gem::Requirement
440
443
  requirements:
441
- - - "~>"
444
+ - - ">="
445
+ - !ruby/object:Gem::Version
446
+ version: 4.9.4
447
+ - - "<"
442
448
  - !ruby/object:Gem::Version
443
- version: 4.5.1
449
+ version: 5.0.0
444
450
  - !ruby/object:Gem::Dependency
445
451
  name: multi_xml
446
452
  requirement: !ruby/object:Gem::Requirement
@@ -1578,6 +1584,7 @@ files:
1578
1584
  - snapshot/lib/snapshot/test_command_generator_xcode_8.rb
1579
1585
  - snapshot/lib/snapshot/update.rb
1580
1586
  - spaceship/README.md
1587
+ - spaceship/lib/.DS_Store
1581
1588
  - spaceship/lib/assets/displayFamilies.json
1582
1589
  - spaceship/lib/assets/languageMapping.json
1583
1590
  - spaceship/lib/assets/languageMappingReadable.json