fastlane 2.157.4 → 2.158.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
2
  SHA256:
3
- metadata.gz: 724ffba6ca23aa124bf2c5493e9bb4eda084ce2361eb9c1ee2db3eb04c3a25cc
4
- data.tar.gz: 51d3469c018497d533e66922626264fe6b561b71ec30351a1c578e500ed2b7fa
3
+ metadata.gz: 788ea487bca43498edde1360e40fe59761bc470b5028f3b7f6bcccf25f8348a9
4
+ data.tar.gz: 7333608271e41308100b68c9c56d572751b07feeed59d45ee72f0e972eff296d
5
5
  SHA512:
6
- metadata.gz: e4f3bd7df2c383ae03f2550a9a7847e2913d3d6a048ad7efa14e4bf145156da2590b5c75c12eb303d14e6aaa838be7cadf8f6986b76d3121c2fdaacd7a0c2104
7
- data.tar.gz: '0853ba7ad4d7725e0c1ab9f89e733e1ec361dee2abdbc835aace640216d7d0f3796afafd8e852f8b5a2d8cdae9d5347c064946c3eccfd9242065455602558796'
6
+ metadata.gz: 3d173dc0f428264f2eaba63baf543e849525871cf7981f769fa72aa1ee8896b0b042b262ef0a0d3687423892ae9d2cfd5e28487100a887d78b703af83f847de2
7
+ data.tar.gz: ecfee323ba2035466bbb7efa6fd34a3af1339046ddc93f13de6a88dae9d65b4a65960bed69baa08b738e193cd050e66363699e682f051e0e4e5b5ab38a176007
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='matthew-ellis'>
38
- <a href='https://github.com/matthewellis'>
39
- <img src='https://github.com/matthewellis.png?size=140'>
37
+ <td id='felix-krause'>
38
+ <a href='https://github.com/KrauseFx'>
39
+ <img src='https://github.com/KrauseFx.png?size=140'>
40
40
  </a>
41
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
42
42
  </td>
43
- <td id='jorge-revuelta-h'>
44
- <a href='https://github.com/minuscorp'>
45
- <img src='https://github.com/minuscorp.png?size=140'>
43
+ <td id='olivier-halligon'>
44
+ <a href='https://github.com/AliSoftware'>
45
+ <img src='https://github.com/AliSoftware.png?size=140'>
46
46
  </a>
47
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
47
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
48
48
  </td>
49
- <td id='jan-piotrowski'>
50
- <a href='https://github.com/janpio'>
51
- <img src='https://github.com/janpio.png?size=140'>
49
+ <td id='danielle-tomlinson'>
50
+ <a href='https://github.com/endocrimes'>
51
+ <img src='https://github.com/endocrimes.png?size=140'>
52
52
  </a>
53
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
54
54
  </td>
55
- <td id='jérôme-lacoste'>
56
- <a href='https://github.com/lacostej'>
57
- <img src='https://github.com/lacostej.png?size=140'>
55
+ <td id='luka-mirosevic'>
56
+ <a href='https://github.com/lmirosevic'>
57
+ <img src='https://github.com/lmirosevic.png?size=140'>
58
58
  </a>
59
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
59
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
60
60
  </td>
61
- <td id='olivier-halligon'>
62
- <a href='https://github.com/AliSoftware'>
63
- <img src='https://github.com/AliSoftware.png?size=140'>
61
+ <td id='kohki-miki'>
62
+ <a href='https://github.com/giginet'>
63
+ <img src='https://github.com/giginet.png?size=140'>
64
64
  </a>
65
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
65
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
66
66
  </td>
67
67
  </tr>
68
68
  <tr>
@@ -72,11 +72,17 @@ 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/getaaron'>Aaron Brager</a></h4>
74
74
  </td>
75
- <td id='fumiya-nakamura'>
76
- <a href='https://github.com/nafu'>
77
- <img src='https://github.com/nafu.png?size=140'>
75
+ <td id='andrew-mcburney'>
76
+ <a href='https://github.com/armcburney'>
77
+ <img src='https://github.com/armcburney.png?size=140'>
78
78
  </a>
79
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
80
+ </td>
81
+ <td id='jorge-revuelta-h'>
82
+ <a href='https://github.com/minuscorp'>
83
+ <img src='https://github.com/minuscorp.png?size=140'>
84
+ </a>
85
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
80
86
  </td>
81
87
  <td id='joshua-liebowitz'>
82
88
  <a href='https://github.com/taquitos'>
@@ -84,31 +90,25 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
84
90
  </a>
85
91
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
86
92
  </td>
87
- <td id='helmut-januschka'>
88
- <a href='https://github.com/hjanuschka'>
89
- <img src='https://github.com/hjanuschka.png?size=140'>
90
- </a>
91
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
92
- </td>
93
- <td id='luka-mirosevic'>
94
- <a href='https://github.com/lmirosevic'>
95
- <img src='https://github.com/lmirosevic.png?size=140'>
93
+ <td id='jimmy-dee'>
94
+ <a href='https://github.com/jdee'>
95
+ <img src='https://github.com/jdee.png?size=140'>
96
96
  </a>
97
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
97
+ <h4 align='center'>Jimmy Dee</h4>
98
98
  </td>
99
99
  </tr>
100
100
  <tr>
101
- <td id='max-ott'>
102
- <a href='https://github.com/max-ott'>
103
- <img src='https://github.com/max-ott.png?size=140'>
101
+ <td id='stefan-natchev'>
102
+ <a href='https://github.com/snatchev'>
103
+ <img src='https://github.com/snatchev.png?size=140'>
104
104
  </a>
105
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
105
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
106
106
  </td>
107
- <td id='josh-holtz'>
108
- <a href='https://github.com/joshdholtz'>
109
- <img src='https://github.com/joshdholtz.png?size=140'>
107
+ <td id='jan-piotrowski'>
108
+ <a href='https://github.com/janpio'>
109
+ <img src='https://github.com/janpio.png?size=140'>
110
110
  </a>
111
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
111
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
112
112
  </td>
113
113
  <td id='maksym-grebenets'>
114
114
  <a href='https://github.com/mgrebenets'>
@@ -116,37 +116,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
116
116
  </a>
117
117
  <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
118
118
  </td>
119
- <td id='jimmy-dee'>
120
- <a href='https://github.com/jdee'>
121
- <img src='https://github.com/jdee.png?size=140'>
119
+ <td id='max-ott'>
120
+ <a href='https://github.com/max-ott'>
121
+ <img src='https://github.com/max-ott.png?size=140'>
122
122
  </a>
123
- <h4 align='center'>Jimmy Dee</h4>
123
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
124
124
  </td>
125
- <td id='manu-wallner'>
126
- <a href='https://github.com/milch'>
127
- <img src='https://github.com/milch.png?size=140'>
125
+ <td id='jérôme-lacoste'>
126
+ <a href='https://github.com/lacostej'>
127
+ <img src='https://github.com/lacostej.png?size=140'>
128
128
  </a>
129
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
129
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</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='danielle-tomlinson'>
140
- <a href='https://github.com/endocrimes'>
141
- <img src='https://github.com/endocrimes.png?size=140'>
133
+ <td id='matthew-ellis'>
134
+ <a href='https://github.com/matthewellis'>
135
+ <img src='https://github.com/matthewellis.png?size=140'>
142
136
  </a>
143
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
137
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
144
138
  </td>
145
- <td id='iulian-onofrei'>
146
- <a href='https://github.com/revolter'>
147
- <img src='https://github.com/revolter.png?size=140'>
139
+ <td id='fumiya-nakamura'>
140
+ <a href='https://github.com/nafu'>
141
+ <img src='https://github.com/nafu.png?size=140'>
148
142
  </a>
149
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
150
144
  </td>
151
145
  <td id='daniel-jankowski'>
152
146
  <a href='https://github.com/mollyIV'>
@@ -154,25 +148,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
154
148
  </a>
155
149
  <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
156
150
  </td>
157
- <td id='stefan-natchev'>
158
- <a href='https://github.com/snatchev'>
159
- <img src='https://github.com/snatchev.png?size=140'>
151
+ <td id='manu-wallner'>
152
+ <a href='https://github.com/milch'>
153
+ <img src='https://github.com/milch.png?size=140'>
160
154
  </a>
161
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
155
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
156
+ </td>
157
+ <td id='helmut-januschka'>
158
+ <a href='https://github.com/hjanuschka'>
159
+ <img src='https://github.com/hjanuschka.png?size=140'>
160
+ </a>
161
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  <tr>
165
- <td id='andrew-mcburney'>
166
- <a href='https://github.com/armcburney'>
167
- <img src='https://github.com/armcburney.png?size=140'>
165
+ <td id='iulian-onofrei'>
166
+ <a href='https://github.com/revolter'>
167
+ <img src='https://github.com/revolter.png?size=140'>
168
168
  </a>
169
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
169
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
170
170
  </td>
171
- <td id='kohki-miki'>
172
- <a href='https://github.com/giginet'>
173
- <img src='https://github.com/giginet.png?size=140'>
171
+ <td id='josh-holtz'>
172
+ <a href='https://github.com/joshdholtz'>
173
+ <img src='https://github.com/joshdholtz.png?size=140'>
174
174
  </a>
175
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
175
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
176
176
  </td>
177
177
  </table>
178
178
 
@@ -68,7 +68,8 @@ module Deliver
68
68
  default_rule_level: options[:precheck_default_rule_level],
69
69
  include_in_app_purchases: options[:precheck_include_in_app_purchases],
70
70
  app_identifier: options[:app_identifier],
71
- username: options[:username]
71
+ username: options[:username],
72
+ platform: options[:platform]
72
73
  }
73
74
 
74
75
  precheck_config = FastlaneCore::Configuration.create(Precheck::Options.available_options, precheck_options)
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.157.4'.freeze
2
+ VERSION = '2.158.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
@@ -14,4 +14,4 @@ class Deliverfile: DeliverfileProtocol {
14
14
  // during the `init` process, and you won't see this message
15
15
  }
16
16
 
17
- // Generated with fastlane 2.157.4
17
+ // Generated with fastlane 2.158.0
@@ -245,4 +245,4 @@ extension DeliverfileProtocol {
245
245
 
246
246
  // Please don't remove the lines below
247
247
  // They are used to detect outdated files
248
- // FastlaneRunnerAPIVersion [0.9.39]
248
+ // FastlaneRunnerAPIVersion [0.9.40]
@@ -1952,6 +1952,7 @@ func chatwork(apiToken: String,
1952
1952
  - username: Your Apple ID Username
1953
1953
  - teamId: The ID of your App Store Connect team if you're in multiple teams
1954
1954
  - teamName: The name of your App Store Connect team if you're in multiple teams
1955
+ - platform: The platform to use (optional)
1955
1956
  - defaultRuleLevel: The default rule level unless otherwise configured
1956
1957
  - includeInAppPurchases: Should check in-app purchases?
1957
1958
  - negativeAppleSentiment: mentioning  in a way that could be considered negative
@@ -1973,6 +1974,7 @@ func checkAppStoreMetadata(appIdentifier: String,
1973
1974
  username: String,
1974
1975
  teamId: String? = nil,
1975
1976
  teamName: String? = nil,
1977
+ platform: String = "ios",
1976
1978
  defaultRuleLevel: Any = "error",
1977
1979
  includeInAppPurchases: Bool = true,
1978
1980
  negativeAppleSentiment: Any? = nil,
@@ -1990,6 +1992,7 @@ func checkAppStoreMetadata(appIdentifier: String,
1990
1992
  RubyCommand.Argument(name: "username", value: username),
1991
1993
  RubyCommand.Argument(name: "team_id", value: teamId),
1992
1994
  RubyCommand.Argument(name: "team_name", value: teamName),
1995
+ RubyCommand.Argument(name: "platform", value: platform),
1993
1996
  RubyCommand.Argument(name: "default_rule_level", value: defaultRuleLevel),
1994
1997
  RubyCommand.Argument(name: "include_in_app_purchases", value: includeInAppPurchases),
1995
1998
  RubyCommand.Argument(name: "negative_apple_sentiment", value: negativeAppleSentiment),
@@ -5470,6 +5473,7 @@ func podioItem(clientId: String,
5470
5473
  - username: Your Apple ID Username
5471
5474
  - teamId: The ID of your App Store Connect team if you're in multiple teams
5472
5475
  - teamName: The name of your App Store Connect team if you're in multiple teams
5476
+ - platform: The platform to use (optional)
5473
5477
  - defaultRuleLevel: The default rule level unless otherwise configured
5474
5478
  - includeInAppPurchases: Should check in-app purchases?
5475
5479
  - freeStuffInIap: using text indicating that your IAP is free
@@ -5482,6 +5486,7 @@ func precheck(appIdentifier: Any = precheckfile.appIdentifier,
5482
5486
  username: Any = precheckfile.username,
5483
5487
  teamId: Any? = precheckfile.teamId,
5484
5488
  teamName: Any? = precheckfile.teamName,
5489
+ platform: Any = precheckfile.platform,
5485
5490
  defaultRuleLevel: Any = precheckfile.defaultRuleLevel,
5486
5491
  includeInAppPurchases: Bool = precheckfile.includeInAppPurchases,
5487
5492
  freeStuffInIap: Any? = precheckfile.freeStuffInIap)
@@ -5490,6 +5495,7 @@ func precheck(appIdentifier: Any = precheckfile.appIdentifier,
5490
5495
  RubyCommand.Argument(name: "username", value: username),
5491
5496
  RubyCommand.Argument(name: "team_id", value: teamId),
5492
5497
  RubyCommand.Argument(name: "team_name", value: teamName),
5498
+ RubyCommand.Argument(name: "platform", value: platform),
5493
5499
  RubyCommand.Argument(name: "default_rule_level", value: defaultRuleLevel),
5494
5500
  RubyCommand.Argument(name: "include_in_app_purchases", value: includeInAppPurchases),
5495
5501
  RubyCommand.Argument(name: "free_stuff_in_iap", value: freeStuffInIap)])
@@ -9118,7 +9124,7 @@ func xcov(workspace: String? = nil,
9118
9124
  coverallsServiceJobId: String? = nil,
9119
9125
  coverallsRepoToken: String? = nil,
9120
9126
  xcconfig: String? = nil,
9121
- ideFoundationPath: String = "/Applications/Xcode-12.beta.5.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
9127
+ ideFoundationPath: String = "/Applications/Xcode.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
9122
9128
  legacySupport: Bool = false)
9123
9129
  {
9124
9130
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
@@ -9264,4 +9270,4 @@ let snapshotfile = Snapshotfile()
9264
9270
 
9265
9271
  // Please don't remove the lines below
9266
9272
  // They are used to detect outdated files
9267
- // FastlaneRunnerAPIVersion [0.9.92]
9273
+ // FastlaneRunnerAPIVersion [0.9.93]
@@ -14,4 +14,4 @@ class Gymfile: GymfileProtocol {
14
14
  // during the `init` process, and you won't see this message
15
15
  }
16
16
 
17
- // Generated with fastlane 2.157.4
17
+ // Generated with fastlane 2.158.0
@@ -181,4 +181,4 @@ extension GymfileProtocol {
181
181
 
182
182
  // Please don't remove the lines below
183
183
  // They are used to detect outdated files
184
- // FastlaneRunnerAPIVersion [0.9.42]
184
+ // FastlaneRunnerAPIVersion [0.9.43]
@@ -14,4 +14,4 @@ class Matchfile: MatchfileProtocol {
14
14
  // during the `init` process, and you won't see this message
15
15
  }
16
16
 
17
- // Generated with fastlane 2.157.4
17
+ // Generated with fastlane 2.158.0
@@ -165,4 +165,4 @@ extension MatchfileProtocol {
165
165
 
166
166
  // Please don't remove the lines below
167
167
  // They are used to detect outdated files
168
- // FastlaneRunnerAPIVersion [0.9.36]
168
+ // FastlaneRunnerAPIVersion [0.9.37]
@@ -14,4 +14,4 @@ class Precheckfile: PrecheckfileProtocol {
14
14
  // during the `init` process, and you won't see this message
15
15
  }
16
16
 
17
- // Generated with fastlane 2.157.4
17
+ // Generated with fastlane 2.158.0
@@ -11,6 +11,9 @@ protocol PrecheckfileProtocol: class {
11
11
  /// The name of your App Store Connect team if you're in multiple teams
12
12
  var teamName: String? { get }
13
13
 
14
+ /// The platform to use (optional)
15
+ var platform: String { get }
16
+
14
17
  /// The default rule level unless otherwise configured
15
18
  var defaultRuleLevel: String { get }
16
19
 
@@ -26,6 +29,7 @@ extension PrecheckfileProtocol {
26
29
  var username: String { return "" }
27
30
  var teamId: String? { return nil }
28
31
  var teamName: String? { return nil }
32
+ var platform: String { return "ios" }
29
33
  var defaultRuleLevel: String { return "error" }
30
34
  var includeInAppPurchases: Bool { return true }
31
35
  var freeStuffInIap: String? { return nil }
@@ -33,4 +37,4 @@ extension PrecheckfileProtocol {
33
37
 
34
38
  // Please don't remove the lines below
35
39
  // They are used to detect outdated files
36
- // FastlaneRunnerAPIVersion [0.9.35]
40
+ // FastlaneRunnerAPIVersion [0.9.36]
@@ -14,4 +14,4 @@ class Scanfile: ScanfileProtocol {
14
14
  // during the `init` process, and you won't see this message
15
15
  }
16
16
 
17
- // Generated with fastlane 2.157.4
17
+ // Generated with fastlane 2.158.0
@@ -257,4 +257,4 @@ extension ScanfileProtocol {
257
257
 
258
258
  // Please don't remove the lines below
259
259
  // They are used to detect outdated files
260
- // FastlaneRunnerAPIVersion [0.9.47]
260
+ // FastlaneRunnerAPIVersion [0.9.48]
@@ -14,4 +14,4 @@ class Screengrabfile: ScreengrabfileProtocol {
14
14
  // during the `init` process, and you won't see this message
15
15
  }
16
16
 
17
- // Generated with fastlane 2.157.4
17
+ // Generated with fastlane 2.158.0
@@ -93,4 +93,4 @@ extension ScreengrabfileProtocol {
93
93
 
94
94
  // Please don't remove the lines below
95
95
  // They are used to detect outdated files
96
- // FastlaneRunnerAPIVersion [0.9.37]
96
+ // FastlaneRunnerAPIVersion [0.9.38]
@@ -14,4 +14,4 @@ class Snapshotfile: SnapshotfileProtocol {
14
14
  // during the `init` process, and you won't see this message
15
15
  }
16
16
 
17
- // Generated with fastlane 2.157.4
17
+ // Generated with fastlane 2.158.0
@@ -181,4 +181,4 @@ extension SnapshotfileProtocol {
181
181
 
182
182
  // Please don't remove the lines below
183
183
  // They are used to detect outdated files
184
- // FastlaneRunnerAPIVersion [0.9.31]
184
+ // FastlaneRunnerAPIVersion [0.9.32]
@@ -60,6 +60,15 @@ module Precheck
60
60
  verify_block: proc do |value|
61
61
  ENV["FASTLANE_ITC_TEAM_NAME"] = value.to_s
62
62
  end),
63
+ FastlaneCore::ConfigItem.new(key: :platform,
64
+ short_option: "-j",
65
+ env_name: "PRECHECK_PLATFORM",
66
+ description: "The platform to use (optional)",
67
+ optional: true,
68
+ default_value: "ios",
69
+ verify_block: proc do |value|
70
+ UI.user_error!("The platform can only be ios, appletvos, or osx") unless %('ios', 'appletvos', 'osx').include?(value)
71
+ end),
63
72
  FastlaneCore::ConfigItem.new(key: :default_rule_level,
64
73
  short_option: "-r",
65
74
  env_name: "PRECHECK_DEFAULT_RULE_LEVEL",
@@ -1,4 +1,5 @@
1
1
  require 'spaceship/tunes/language_item'
2
+ require 'spaceship/tunes/iap_list'
2
3
  require 'fastlane/markdown_table_formatter'
3
4
 
4
5
  require_relative 'module'
@@ -43,8 +44,8 @@ module Precheck
43
44
  class RuleProcessor
44
45
  def self.process_app_and_version(app: nil, app_version: nil, rules: nil)
45
46
  items_to_check = []
46
- items_to_check += generate_text_items_to_check(app: app, app_version: app_version)
47
- items_to_check += generate_url_items_to_check(app: app, app_version: app_version)
47
+ items_to_check += generate_app_items_to_check(app: app)
48
+ items_to_check += generate_version_items_to_check(app_version: app_version)
48
49
 
49
50
  return process_rules(items_to_check: items_to_check, rules: rules)
50
51
  end
@@ -125,66 +126,41 @@ module Precheck
125
126
  return rule_hash
126
127
  end
127
128
 
128
- def self.generate_url_items_to_check(app: nil, app_version: nil)
129
+ def self.generate_app_items_to_check(app: nil)
129
130
  items = []
130
- items += collect_urls_from_hash(hash: app_version.support_url,
131
- item_name: :support_url,
132
- friendly_name_postfix: "support URL")
133
- items += collect_urls_from_hash(hash: app_version.marketing_url,
134
- item_name: :marketing_url,
135
- friendly_name_postfix: "marketing URL",
136
- is_optional: true)
137
-
138
- items += collect_urls_from_hash(hash: app.details.privacy_url,
139
- item_name: :privacy_url,
140
- friendly_name_postfix: "privacy URL",
141
- is_optional: true)
142
- return items
143
- end
144
131
 
145
- def self.collect_urls_from_hash(hash: nil, item_name: nil, friendly_name_postfix: nil, is_optional: false)
146
- items = []
147
- hash.each do |key, value|
148
- items << URLItemToCheck.new(value, item_name, "#{friendly_name_postfix}: (#{key})", is_optional)
132
+ # App info localizations
133
+ app_info = app.fetch_edit_app_info
134
+ app_info_localizations = app_info.get_app_info_localizations
135
+ app_info_localizations.each do |localization|
136
+ items << collect_text_items_from_language_item(locale: localization.locale,
137
+ value: localization.name,
138
+ item_name: :app_name,
139
+ friendly_name_postfix: "app name")
140
+
141
+ items << collect_text_items_from_language_item(locale: localization.locale,
142
+ value: localization.subtitle,
143
+ item_name: :app_subtitle,
144
+ friendly_name_postfix: "app name subtitle",
145
+ is_optional: true)
146
+
147
+ items << collect_text_items_from_language_item(locale: localization.locale,
148
+ value: localization.privacy_policy_text,
149
+ item_name: :privacy_policy_text,
150
+ friendly_name_postfix: " tv privacy policy")
151
+
152
+ items << collect_urls_from_language_item(locale: localization.locale,
153
+ value: localization.privacy_policy_url,
154
+ item_name: :privacy_policy_url,
155
+ friendly_name_postfix: "privacy URL",
156
+ is_optional: true)
149
157
  end
150
- return items
151
- end
152
-
153
- def self.generate_text_items_to_check(app: nil, app_version: nil)
154
- items = []
155
-
156
- items << TextItemToCheck.new(app_version.copyright, :copyright, "copyright")
157
-
158
- items += collect_text_items_from_language_item(hash: app_version.keywords,
159
- item_name: :keywords,
160
- friendly_name_postfix: "keywords")
161
-
162
- items += collect_text_items_from_language_item(hash: app_version.description,
163
- item_name: :description,
164
- friendly_name_postfix: "description")
165
-
166
- items += collect_text_items_from_language_item(hash: app_version.release_notes,
167
- item_name: :release_notes,
168
- friendly_name_postfix: "release notes")
169
-
170
- items += collect_text_items_from_language_item(hash: app.details.name,
171
- item_name: :app_name,
172
- friendly_name_postfix: "app name")
173
-
174
- items += collect_text_items_from_language_item(hash: app.details.apple_tv_privacy_policy,
175
- item_name: :app_subtitle,
176
- friendly_name_postfix: " tv privacy policy")
177
-
178
- items += collect_text_items_from_language_item(hash: app.details.subtitle,
179
- item_name: :app_subtitle,
180
- friendly_name_postfix: "app name subtitle",
181
- is_optional: true)
182
158
 
183
159
  should_include_iap = Precheck.config[:include_in_app_purchases]
184
160
  if should_include_iap
185
161
  UI.message("Reading in-app purchases. If you have a lot, this might take a while")
186
162
  UI.message("You can disable IAP checking by setting the `include_in_app_purchases` flag to `false`")
187
- in_app_purchases = app.in_app_purchases.all
163
+ in_app_purchases = get_iaps(app_id: app.id)
188
164
  in_app_purchases ||= []
189
165
  in_app_purchases.each do |purchase|
190
166
  items += collect_iap_language_items(purchase_edit_versions: purchase.edit.versions)
@@ -195,6 +171,64 @@ module Precheck
195
171
  return items
196
172
  end
197
173
 
174
+ def self.generate_version_items_to_check(app_version: nil)
175
+ items = []
176
+
177
+ items << TextItemToCheck.new(app_version.copyright, :copyright, "copyright")
178
+
179
+ # Version localizations
180
+ version_localizations = app_version.get_app_store_version_localizations
181
+ version_localizations.each do |localization|
182
+ items << collect_text_items_from_language_item(locale: localization.locale,
183
+ value: localization.keywords,
184
+ item_name: :keywords,
185
+ friendly_name_postfix: "keywords")
186
+
187
+ items << collect_text_items_from_language_item(locale: localization.locale,
188
+ value: localization.description,
189
+ item_name: :description,
190
+ friendly_name_postfix: "description")
191
+
192
+ items << collect_text_items_from_language_item(locale: localization.locale,
193
+ value: localization.whats_new,
194
+ item_name: :release_notes,
195
+ friendly_name_postfix: "what's new")
196
+
197
+ items << collect_urls_from_language_item(locale: localization.locale,
198
+ value: localization.support_url,
199
+ item_name: :support_url,
200
+ friendly_name_postfix: "support URL")
201
+
202
+ items << collect_urls_from_language_item(locale: localization.locale,
203
+ value: localization.marketing_url,
204
+ item_name: :marketing_url,
205
+ friendly_name_postfix: "marketing URL",
206
+ is_optional: true)
207
+ end
208
+
209
+ return items
210
+ end
211
+
212
+ # As of 2020-09-04, this is the only non App Store Connect call in prechecks
213
+ # This will need to get replaced when the API becomes available
214
+ def self.get_iaps(app_id: nil, include_deleted: false)
215
+ r = Spaceship::Tunes.client.iaps(app_id: app_id)
216
+ return_iaps = []
217
+ r.each do |product|
218
+ attrs = product
219
+
220
+ # This is not great but Spaceship::Tunes::IAPList.factory looks
221
+ # for `application.apple_id`
222
+ mock_application = OpenStruct.new({ apple_id: app_id })
223
+ attrs[:application] = mock_application
224
+
225
+ loaded_iap = Spaceship::Tunes::IAPList.factory(attrs)
226
+ next if loaded_iap.status == "deleted" && !include_deleted
227
+ return_iaps << loaded_iap
228
+ end
229
+ return return_iaps
230
+ end
231
+
198
232
  def self.collect_iap_language_items(purchase_edit_versions: nil, is_optional: false)
199
233
  items = []
200
234
  purchase_edit_versions.each do |language_key, hash|
@@ -207,12 +241,12 @@ module Precheck
207
241
  end
208
242
 
209
243
  # a few attributes are LanguageItem this method creates a TextItemToCheck for each pair
210
- def self.collect_text_items_from_language_item(hash: nil, item_name: nil, friendly_name_postfix: nil, is_optional: false)
211
- items = []
212
- hash.each do |key, value|
213
- items << TextItemToCheck.new(value, item_name, "#{friendly_name_postfix}: (#{key})", is_optional)
214
- end
215
- return items
244
+ def self.collect_text_items_from_language_item(locale: nil, value: nil, item_name: nil, friendly_name_postfix: nil, is_optional: false)
245
+ return TextItemToCheck.new(value, item_name, "#{friendly_name_postfix}: (#{locale})", is_optional)
246
+ end
247
+
248
+ def self.collect_urls_from_language_item(locale: nil, value: nil, item_name: nil, friendly_name_postfix: nil, is_optional: false)
249
+ return URLItemToCheck.new(value, item_name, "#{friendly_name_postfix}: (#{locale})", is_optional)
216
250
  end
217
251
  end
218
252
  end
@@ -19,9 +19,10 @@ module Precheck
19
19
  title: "Summary for precheck #{Fastlane::VERSION}")
20
20
 
21
21
  unless Spaceship::Tunes.client
22
+ # Team selection passed though FASTLANE_ITC_TEAM_ID and FASTLANE_ITC_TEAM_NAME environment variables
23
+ # Prompts select team if multiple teams and none specified
22
24
  UI.message("Starting login with user '#{Precheck.config[:username]}'")
23
- Spaceship::Tunes.login(Precheck.config[:username])
24
- Spaceship::Tunes.select_team
25
+ Spaceship::ConnectAPI.login(Precheck.config[:username], use_portal: false, use_tunes: true)
25
26
 
26
27
  UI.message("Successfully logged in")
27
28
  end
@@ -160,11 +161,12 @@ module Precheck
160
161
  end
161
162
 
162
163
  def app
163
- Spaceship::Tunes::Application.find(Precheck.config[:app_identifier])
164
+ Spaceship::ConnectAPI::App.find(Precheck.config[:app_identifier])
164
165
  end
165
166
 
166
167
  def latest_app_version
167
- @latest_version ||= app.latest_version
168
+ platform = Spaceship::ConnectAPI::Platform.map(Precheck.config[:platform])
169
+ @latest_version ||= app.get_edit_app_store_version(platform: platform)
168
170
  end
169
171
 
170
172
  # Makes sure the current App ID exists. If not, it will show an appropriate error message
@@ -11,6 +11,9 @@ module Spaceship
11
11
 
12
12
  module PhasedReleaseState
13
13
  INACTIVE = "INACTIVE"
14
+ ACTIVE = "ACTIVE"
15
+ PAUSED = "PAUSED"
16
+ COMPLETE = "COMPLETE"
14
17
  end
15
18
 
16
19
  attr_mapping({
@@ -28,9 +31,27 @@ module Spaceship
28
31
  # API
29
32
  #
30
33
 
34
+ def pause
35
+ update(PhasedReleaseState::PAUSED)
36
+ end
37
+
38
+ def resume
39
+ update(PhasedReleaseState::ACTIVE)
40
+ end
41
+
42
+ def complete
43
+ update(PhasedReleaseState::COMPLETE)
44
+ end
45
+
31
46
  def delete!(filter: {}, includes: nil, limit: nil, sort: nil)
32
47
  Spaceship::ConnectAPI.delete_app_store_version_phased_release(app_store_version_phased_release_id: id)
33
48
  end
49
+
50
+ private def update(state)
51
+ Spaceship::ConnectAPI.patch_app_store_version_phased_release(app_store_version_phased_release_id: id, attributes: {
52
+ phasedReleaseState: state
53
+ }).to_models.first
54
+ end
34
55
  end
35
56
  end
36
57
  end
@@ -710,6 +710,18 @@ module Spaceship
710
710
  tunes_request_client.post("appStoreVersionPhasedReleases", body)
711
711
  end
712
712
 
713
+ def patch_app_store_version_phased_release(app_store_version_phased_release_id: nil, attributes: {})
714
+ body = {
715
+ data: {
716
+ type: "appStoreVersionPhasedReleases",
717
+ attributes: attributes,
718
+ id: app_store_version_phased_release_id
719
+ }
720
+ }
721
+
722
+ tunes_request_client.patch("appStoreVersionPhasedReleases/#{app_store_version_phased_release_id}", body)
723
+ end
724
+
713
725
  def delete_app_store_version_phased_release(app_store_version_phased_release_id: nil)
714
726
  params = tunes_request_client.build_params(filter: nil, includes: nil, limit: nil, sort: nil)
715
727
  tunes_request_client.delete("appStoreVersionPhasedReleases/#{app_store_version_phased_release_id}", params)
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.157.4
4
+ version: 2.158.0
5
5
  platform: ruby
6
6
  authors:
7
- - Josh Holtz
8
- - Manu Wallner
9
- - Fumiya Nakamura
10
- - Helmut Januschka
11
- - Olivier Halligon
12
7
  - Aaron Brager
13
- - Luka Mirosevic
8
+ - Stefan Natchev
9
+ - Manu Wallner
14
10
  - Maksym Grebenets
15
- - Iulian Onofrei
16
11
  - Jérôme Lacoste
17
- - Jimmy Dee
12
+ - Josh Holtz
13
+ - Matthew Ellis
18
14
  - Felix Krause
19
- - Jorge Revuelta H
20
- - Stefan Natchev
21
- - Jan Piotrowski
22
- - Max Ott
15
+ - Daniel Jankowski
23
16
  - Danielle Tomlinson
17
+ - Iulian Onofrei
18
+ - Luka Mirosevic
19
+ - Jimmy Dee
20
+ - Andrew McBurney
24
21
  - Kohki Miki
25
- - Daniel Jankowski
22
+ - Jorge Revuelta H
26
23
  - Joshua Liebowitz
27
- - Andrew McBurney
28
- - Matthew Ellis
24
+ - Fumiya Nakamura
25
+ - Helmut Januschka
26
+ - Olivier Halligon
27
+ - Jan Piotrowski
28
+ - Max Ott
29
29
  autorequire:
30
30
  bindir: bin
31
31
  cert_chain: []
@@ -982,7 +982,6 @@ files:
982
982
  - fastlane/lib/fastlane.rb
983
983
  - fastlane/lib/fastlane/action.rb
984
984
  - fastlane/lib/fastlane/action_collector.rb
985
- - fastlane/lib/fastlane/actions/.ensure_git_status_clean.rb.swp
986
985
  - fastlane/lib/fastlane/actions/.hockey.rb.swp
987
986
  - fastlane/lib/fastlane/actions/.slack.rb.swp
988
987
  - fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp