fastlane 2.157.4 → 2.158.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
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