fastlane 2.116.0 → 2.116.1

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
  SHA1:
3
- metadata.gz: 80a38146f7443a206080d4b3164a09ef9cd0e1b0
4
- data.tar.gz: ef3d4edecee96037c70116b2655a07e2c22cf70b
3
+ metadata.gz: 357885244c4c5a55322d9a30cebfc76890ddac94
4
+ data.tar.gz: 63b0437cc8422220f613c424245feed9a72ce203
5
5
  SHA512:
6
- metadata.gz: 39d1e5a57a7f94a65f5cfe1699e90ac374a2005f316acb65d768c9793f33f2fe9379632a515e594737da8b2f7755bf2c7fb5d976ea4a0f34d347e29b89cd2a2b
7
- data.tar.gz: f8649c624127163085afe74ece341d4a9f7b147616f56a832d61f12eb069cbe4d581915bcb1e9be6d30beda64da19b8b62e12a2b1c0a9198387ccb2a53d3a068
6
+ metadata.gz: 3e8d22bf1baac9a797a20267c533c7f9fc6d5a7ca6db3c6594799fa8f594f602a788b3d61fe78143ad3e6bbce3476df9f885e362aae6bc44d7d6ec5bd2e55722
7
+ data.tar.gz: f9c9c84163439e511110c5f6a6037c1a09c51da1e8bc1e86f1c52be46ddb4b5f74306fddc3074c70271c5579460786719ea78a364b8fc5ce313eafde9ab2d6fe
data/README.md CHANGED
@@ -33,43 +33,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
33
33
  <!-- This table is regenerated and resorted on each release -->
34
34
  <table id='team'>
35
35
  <tr>
36
- <td id='luka-mirosevic'>
37
- <a href='https://github.com/lmirosevic'>
38
- <img src='https://github.com/lmirosevic.png?size=140'>
39
- </a>
40
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
41
- </td>
42
- <td id='iulian-onofrei'>
43
- <a href='https://github.com/revolter'>
44
- <img src='https://github.com/revolter.png?size=140'>
45
- </a>
46
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
47
- </td>
48
- <td id='kohki-miki'>
49
- <a href='https://github.com/giginet'>
50
- <img src='https://github.com/giginet.png?size=140'>
51
- </a>
52
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
53
- </td>
54
- <td id='jérôme-lacoste'>
55
- <a href='https://github.com/lacostej'>
56
- <img src='https://github.com/lacostej.png?size=140'>
57
- </a>
58
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
59
- </td>
60
- <td id='manu-wallner'>
61
- <a href='https://github.com/milch'>
62
- <img src='https://github.com/milch.png?size=140'>
36
+ <td id='jan-piotrowski'>
37
+ <a href='https://github.com/janpio'>
38
+ <img src='https://github.com/janpio.png?size=140'>
63
39
  </a>
64
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
40
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
65
41
  </td>
66
- </tr>
67
- <tr>
68
- <td id='jimmy-dee'>
69
- <a href='https://github.com/jdee'>
70
- <img src='https://github.com/jdee.png?size=140'>
42
+ <td id='aaron-brager'>
43
+ <a href='https://github.com/getaaron'>
44
+ <img src='https://github.com/getaaron.png?size=140'>
71
45
  </a>
72
- <h4 align='center'>Jimmy Dee</h4>
46
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
73
47
  </td>
74
48
  <td id='felix-krause'>
75
49
  <a href='https://github.com/KrauseFx'>
@@ -77,43 +51,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
77
51
  </a>
78
52
  <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
79
53
  </td>
80
- <td id='fumiya-nakamura'>
81
- <a href='https://github.com/nafu'>
82
- <img src='https://github.com/nafu.png?size=140'>
83
- </a>
84
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
85
- </td>
86
54
  <td id='josh-holtz'>
87
55
  <a href='https://github.com/joshdholtz'>
88
56
  <img src='https://github.com/joshdholtz.png?size=140'>
89
57
  </a>
90
58
  <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
91
59
  </td>
92
- <td id='danielle-tomlinson'>
93
- <a href='https://github.com/DanToml'>
94
- <img src='https://github.com/DanToml.png?size=140'>
60
+ <td id='fumiya-nakamura'>
61
+ <a href='https://github.com/nafu'>
62
+ <img src='https://github.com/nafu.png?size=140'>
95
63
  </a>
96
- <h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
64
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
97
65
  </td>
98
66
  </tr>
99
67
  <tr>
100
- <td id='stefan-natchev'>
101
- <a href='https://github.com/snatchev'>
102
- <img src='https://github.com/snatchev.png?size=140'>
68
+ <td id='jérôme-lacoste'>
69
+ <a href='https://github.com/lacostej'>
70
+ <img src='https://github.com/lacostej.png?size=140'>
103
71
  </a>
104
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
72
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
105
73
  </td>
106
- <td id='olivier-halligon'>
107
- <a href='https://github.com/AliSoftware'>
108
- <img src='https://github.com/AliSoftware.png?size=140'>
74
+ <td id='manu-wallner'>
75
+ <a href='https://github.com/milch'>
76
+ <img src='https://github.com/milch.png?size=140'>
109
77
  </a>
110
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
78
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
111
79
  </td>
112
- <td id='matthew-ellis'>
113
- <a href='https://github.com/matthewellis'>
114
- <img src='https://github.com/matthewellis.png?size=140'>
80
+ <td id='danielle-tomlinson'>
81
+ <a href='https://github.com/DanToml'>
82
+ <img src='https://github.com/DanToml.png?size=140'>
115
83
  </a>
116
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
84
+ <h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
117
85
  </td>
118
86
  <td id='maksym-grebenets'>
119
87
  <a href='https://github.com/mgrebenets'>
@@ -121,19 +89,57 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
121
89
  </a>
122
90
  <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
123
91
  </td>
92
+ <td id='luka-mirosevic'>
93
+ <a href='https://github.com/lmirosevic'>
94
+ <img src='https://github.com/lmirosevic.png?size=140'>
95
+ </a>
96
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
97
+ </td>
98
+ </tr>
99
+ <tr>
100
+ <td id='iulian-onofrei'>
101
+ <a href='https://github.com/revolter'>
102
+ <img src='https://github.com/revolter.png?size=140'>
103
+ </a>
104
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
105
+ </td>
124
106
  <td id='jorge-revuelta-h'>
125
107
  <a href='https://github.com/minuscorp'>
126
108
  <img src='https://github.com/minuscorp.png?size=140'>
127
109
  </a>
128
110
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
129
111
  </td>
112
+ <td id='kohki-miki'>
113
+ <a href='https://github.com/giginet'>
114
+ <img src='https://github.com/giginet.png?size=140'>
115
+ </a>
116
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
117
+ </td>
118
+ <td id='jimmy-dee'>
119
+ <a href='https://github.com/jdee'>
120
+ <img src='https://github.com/jdee.png?size=140'>
121
+ </a>
122
+ <h4 align='center'>Jimmy Dee</h4>
123
+ </td>
124
+ <td id='stefan-natchev'>
125
+ <a href='https://github.com/snatchev'>
126
+ <img src='https://github.com/snatchev.png?size=140'>
127
+ </a>
128
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
129
+ </td>
130
130
  </tr>
131
131
  <tr>
132
- <td id='andrew-mcburney'>
133
- <a href='https://github.com/armcburney'>
134
- <img src='https://github.com/armcburney.png?size=140'>
132
+ <td id='helmut-januschka'>
133
+ <a href='https://github.com/hjanuschka'>
134
+ <img src='https://github.com/hjanuschka.png?size=140'>
135
135
  </a>
136
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
136
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
137
+ </td>
138
+ <td id='olivier-halligon'>
139
+ <a href='https://github.com/AliSoftware'>
140
+ <img src='https://github.com/AliSoftware.png?size=140'>
141
+ </a>
142
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
137
143
  </td>
138
144
  <td id='joshua-liebowitz'>
139
145
  <a href='https://github.com/taquitos'>
@@ -141,23 +147,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
141
147
  </a>
142
148
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
143
149
  </td>
144
- <td id='aaron-brager'>
145
- <a href='https://github.com/getaaron'>
146
- <img src='https://github.com/getaaron.png?size=140'>
147
- </a>
148
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
149
- </td>
150
- <td id='jan-piotrowski'>
151
- <a href='https://github.com/janpio'>
152
- <img src='https://github.com/janpio.png?size=140'>
150
+ <td id='andrew-mcburney'>
151
+ <a href='https://github.com/armcburney'>
152
+ <img src='https://github.com/armcburney.png?size=140'>
153
153
  </a>
154
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
154
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
155
155
  </td>
156
- <td id='helmut-januschka'>
157
- <a href='https://github.com/hjanuschka'>
158
- <img src='https://github.com/hjanuschka.png?size=140'>
156
+ <td id='matthew-ellis'>
157
+ <a href='https://github.com/matthewellis'>
158
+ <img src='https://github.com/matthewellis.png?size=140'>
159
159
  </a>
160
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
160
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
161
161
  </td>
162
162
  </tr>
163
163
  </table>
@@ -74,7 +74,7 @@ To pass parameters, make use of the `:` symbol, for example
74
74
  fastlane run <%= @action.action_name %> parameter1:"value1" parameter2:"value2"
75
75
  ```
76
76
 
77
- It's important to note that the CLI supports primative types like integers, floats, booleans, and strings. Arrays can be passed as a comma delimited string (e.g. `param:"1,2,3"`). Hashes are not currently supported.
77
+ It's important to note that the CLI supports primitive types like integers, floats, booleans, and strings. Arrays can be passed as a comma delimited string (e.g. `param:"1,2,3"`). Hashes are not currently supported.
78
78
 
79
79
  It is recommended to add all _fastlane_ actions you use to your `Fastfile`.
80
80
 
@@ -4,16 +4,14 @@ module Fastlane
4
4
  def self.run(params)
5
5
  require 'produce'
6
6
 
7
- return if Helper.test?
8
-
9
7
  Produce.config = params
10
8
 
11
9
  Dir.chdir(FastlaneCore::FastlaneFolder.path || Dir.pwd) do
12
10
  require 'produce/service'
13
11
  services = params[:services]
14
12
 
15
- enabled_services = services.reject { |k, v| v == 'off' }
16
- disabled_services = services.select { |k, v| v == 'off' }
13
+ enabled_services = services.select { |_k, v| v == true || v.to_s == 'on' }.map { |k, v| [k, 'on'] }.to_h
14
+ disabled_services = services.reject { |_k, v| v == true || v.to_s == 'on' }.map { |k, v| [k, 'off'] }.to_h
17
15
 
18
16
  enabled_services_object = self.service_object
19
17
  enabled_services.each do |k, v|
@@ -72,7 +70,7 @@ module Fastlane
72
70
 
73
71
  def self.allowed_services_description
74
72
  return Produce::DeveloperCenter::ALLOWED_SERVICES.map do |k, v|
75
- "#{k}: (#{v.join('|')})"
73
+ "#{k}: (#{v.join('|')})(:on|:off)(true|false)"
76
74
  end.join(", ")
77
75
  end
78
76
 
@@ -158,9 +156,12 @@ module Fastlane
158
156
  app_identifier: "com.someorg.app",
159
157
  services: {
160
158
  push_notification: "on",
161
- associated_domains: "off"
162
- }
163
- )'
159
+ associated_domains: "off",
160
+ wallet: :on,
161
+ apple_pay: :off,
162
+ data_protection: true,
163
+ multipath: false
164
+ })'
164
165
  ]
165
166
  end
166
167
 
@@ -17,7 +17,8 @@ module Fastlane
17
17
  UI.important("Submit inputs using \"#{params[:multi_line_end_keyword]}\"")
18
18
  user_input = ""
19
19
  loop do
20
- line = STDIN.gets
20
+ line = STDIN.gets # returns `nil` if called at end of file
21
+ break unless line
21
22
  end_tag_index = line.index(end_tag)
22
23
  if end_tag_index.nil?
23
24
  user_input << line
@@ -156,7 +156,7 @@ module Fastlane
156
156
  "Built by" => "Jenkins",
157
157
  },
158
158
  default_payloads: [:git_branch, :git_author], # Optional, lets you specify a whitelist of default payloads to include. Pass an empty array to suppress all the default payloads.
159
- # Don\'t add this key, or pass nil, if you want all the default payloads. The available default payloads are: `lane`, `test_result`, `git_branch`, `git_author`, `last_git_commit_message`, `last_git_commit_hash`.
159
+ # Don\'t add this key, or pass nil, if you want all the default payloads. The available default payloads are: `lane`, `test_result`, `git_branch`, `git_author`, `last_git_commit`, `last_git_commit_hash`.
160
160
  attachment_properties: { # Optional, lets you specify any other properties available for attachments in the slack API (see https://api.slack.com/docs/attachments).
161
161
  # This hash is deep merged with the existing properties set using the other properties above. This allows your own fields properties to be appended to the existing fields that were created using the `payload` property for instance.
162
162
  thumb_url: "http://example.com/path/to/thumb.png",
@@ -184,7 +184,7 @@ module Fastlane
184
184
 
185
185
  def self.generate_slack_attachments(options)
186
186
  color = (options[:success] ? 'good' : 'danger')
187
- should_add_payload = ->(payload_name) { options[:default_payloads].nil? || options[:default_payloads].join(" ").include?(payload_name.to_s) }
187
+ should_add_payload = ->(payload_name) { options[:default_payloads].nil? || options[:default_payloads].map(&:to_sym).include?(payload_name.to_sym) }
188
188
 
189
189
  slack_attachment = {
190
190
  fallback: options[:message],
@@ -102,6 +102,12 @@ module Fastlane
102
102
  # When we launch this feature, this should never be the case
103
103
  abort("#{tool_name} can't be called via `fastlane #{tool_name}`, run '#{tool_name}' directly instead".red)
104
104
  end
105
+
106
+ # Some of the tools use other actions so need to load all
107
+ # actions before we start the tool generator
108
+ # Example: scan uses slack
109
+ Fastlane.load_actions
110
+
105
111
  commands_generator.start
106
112
  elsif tool_name == "fastlane-credentials"
107
113
  require 'credentials_manager'
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.116.0'.freeze
2
+ VERSION = '2.116.1'.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.116.0
21
+ // Generated with fastlane 2.116.1
@@ -18,4 +18,4 @@ class Gymfile: GymfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.116.0
21
+ // Generated with fastlane 2.116.1
@@ -18,4 +18,4 @@ class Matchfile: MatchfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.116.0
21
+ // Generated with fastlane 2.116.1
@@ -18,4 +18,4 @@ class Precheckfile: PrecheckfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.116.0
21
+ // Generated with fastlane 2.116.1
@@ -18,4 +18,4 @@ class Scanfile: ScanfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.116.0
21
+ // Generated with fastlane 2.116.1
@@ -18,4 +18,4 @@ class Screengrabfile: ScreengrabfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.116.0
21
+ // Generated with fastlane 2.116.1
@@ -18,4 +18,4 @@ class Snapshotfile: SnapshotfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.116.0
21
+ // Generated with fastlane 2.116.1
@@ -6,6 +6,11 @@ module FastlaneCore
6
6
  ALL_LANGUAGES_LEGACY = ["da-DK", "de-DE", "el-GR", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi-FI", "fr-CA", "fr-FR", "id-ID", "it-IT", "ja-JP", "ko-KR", "ms-MY", "nl-NL", "no-NO", "pt-BR", "pt-PT", "ru-RU", "sv-SE", "th-TH", "tr-TR", "vi-VI", "cmn-Hans", "cmn-Hant"]
7
7
 
8
8
  # The new format used from September 2015 on
9
- ALL_LANGUAGES = ["da", "de-DE", "el", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi", "fr-CA", "fr-FR", "id", "it", "ja", "ko", "ms", "nl-NL", "no", "pt-BR", "pt-PT", "ru", "sv", "th", "tr", "vi", "zh-Hans", "zh-Hant"]
9
+ # This was generated from `Spaceship::Tunes.client.available_languages.sort`
10
+ # Updates should also be made to:
11
+ # - produce/lib/produce/available_default_languages.rb
12
+ # - spaceship/lib/assets/languageMapping.json
13
+ # See pull request for example: https://github.com/fastlane/fastlane/pull/14110
14
+ ALL_LANGUAGES = ["ca", "cs", "da", "de-DE", "el", "en-AU", "en-CA", "en-GB", "en-US", "es-ES", "es-MX", "fi", "fr-CA", "fr-FR", "hi", "hr", "hu", "id", "it", "ja", "ko", "ms", "nl-NL", "no", "pl", "pt-BR", "pt-PT", "ro", "ru", "sk", "sv", "th", "tr", "uk", "vi", "zh-Hans", "zh-Hant"]
10
15
  end
11
16
  end
@@ -15,6 +15,7 @@ module Match
15
15
  force: true, # we don't need a certificate without its private key, we only care about a new certificate
16
16
  username: params[:username],
17
17
  team_id: params[:team_id],
18
+ team_name: params[:team_name],
18
19
  keychain_path: FastlaneCore::Helper.keychain_path(params[:keychain_name]),
19
20
  keychain_password: params[:keychain_password]
20
21
  })
@@ -63,6 +64,7 @@ module Match
63
64
  provisioning_name: profile_name,
64
65
  ignore_profiles_with_different_name: true,
65
66
  team_id: params[:team_id],
67
+ team_name: params[:team_name],
66
68
  template_name: params[:template_name]
67
69
  }
68
70
 
@@ -169,6 +169,14 @@ module Match
169
169
  self.files_to_commit << private_key_path
170
170
  else
171
171
  cert_path = certs.last
172
+
173
+ # Check validity of certificate
174
+ if Utils.is_cert_valid?(cert_path)
175
+ UI.verbose("Your certificate '#{File.basename(cert_path)}' is valid")
176
+ else
177
+ UI.user_error!("Your certificate '#{File.basename(cert_path)}' is not valid, please check end date and renew it if necessary")
178
+ end
179
+
172
180
  if Helper.mac?
173
181
  UI.message("Installing certificate...")
174
182
 
@@ -58,6 +58,12 @@ module Match
58
58
  return {}
59
59
  end
60
60
 
61
+ def self.is_cert_valid?(cer_certificate_path)
62
+ cert = OpenSSL::X509::Certificate.new(File.binread(cer_certificate_path))
63
+ now = Time.now.utc
64
+ return (now <=> cert.not_after) == -1
65
+ end
66
+
61
67
  def self.base_environment_variable_name(app_identifier: nil, type: nil, platform: :ios)
62
68
  if platform.to_s == :ios.to_s
63
69
  ["sigh", app_identifier, type] # We keep the ios profiles without the platform for backwards compatibility
@@ -51,12 +51,12 @@ module Pilot
51
51
  short_option: "-w",
52
52
  optional: true,
53
53
  env_name: "PILOT_CHANGELOG",
54
- description: "Provide the 'what's new' text when uploading a new build"),
54
+ description: "Provide the 'What to Test' text when uploading a new build. `skip_waiting_for_build_processing: false` is required to set the changelog"),
55
55
  FastlaneCore::ConfigItem.new(key: :beta_app_description,
56
56
  short_option: "-d",
57
57
  optional: true,
58
58
  env_name: "PILOT_BETA_APP_DESCRIPTION",
59
- description: "Provide the beta app description when uploading a new build"),
59
+ description: "Provide the 'Beta App Description' when uploading a new build"),
60
60
  FastlaneCore::ConfigItem.new(key: :beta_app_feedback_email,
61
61
  short_option: "-n",
62
62
  optional: true,
@@ -1,7 +1,14 @@
1
1
  module Produce
2
2
  class AvailableDefaultLanguages
3
+ # If you update this list, you probably also have to update these files:
4
+ # - fastlane_core/lib/fastlane_core/languages.rb
5
+ # - spaceship/lib/assets/languageMapping.json
6
+ # See this pull request for example: https://github.com/fastlane/fastlane/pull/14110
3
7
  def self.all_languages
4
8
  [
9
+ "Catalan",
10
+ "Croatian",
11
+ "Czech",
5
12
  "Brazilian Portuguese",
6
13
  "Danish",
7
14
  "Dutch",
@@ -14,18 +21,24 @@ module Produce
14
21
  "French_CA",
15
22
  "German",
16
23
  "Greek",
24
+ "Hindi",
25
+ "Hungarian",
17
26
  "Indonesian",
18
27
  "Italian",
19
28
  "Japanese",
20
29
  "Korean",
21
30
  "Malay",
22
31
  "Norwegian",
32
+ "Polish",
23
33
  "Portuguese",
34
+ "Romanian",
24
35
  "Russian",
25
36
  "Simplified Chinese",
37
+ "Slovak",
26
38
  "Spanish",
27
39
  "Spanish_MX",
28
40
  "Swedish",
41
+ "Ukrainian",
29
42
  "Thai",
30
43
  "Traditional Chinese",
31
44
  "Turkish",
@@ -93,6 +93,7 @@ module Scan
93
93
  puts("")
94
94
 
95
95
  copy_simulator_logs
96
+ zip_build_products
96
97
 
97
98
  if result[:failures] > 0
98
99
  open_report
@@ -104,7 +105,6 @@ module Scan
104
105
  UI.test_failure!("Test execution failed. Exit status: #{tests_exit_status}")
105
106
  end
106
107
 
107
- zip_build_products
108
108
  open_report
109
109
  end
110
110
 
@@ -1,4 +1,10 @@
1
1
  [
2
+ {
3
+ "locale": "ca-ES",
4
+ "name": "Catalan",
5
+ "game-center": false,
6
+ "itc_locale": "ca"
7
+ },
2
8
  {
3
9
  "locale": "cmn-Hans",
4
10
  "name": "Simplified Chinese",
@@ -11,6 +17,12 @@
11
17
  "game-center": true,
12
18
  "itc_locale": "zh-Hant"
13
19
  },
20
+ {
21
+ "locale": "cs-CZ",
22
+ "name": "Czech",
23
+ "game-center": false,
24
+ "itc_locale": "cs"
25
+ },
14
26
  {
15
27
  "locale": "da-DK",
16
28
  "name": "Danish",
@@ -107,6 +119,24 @@
107
119
  ],
108
120
  "itc_locale": "el"
109
121
  },
122
+ {
123
+ "locale": "hi-IN",
124
+ "name": "Hindi",
125
+ "game-center": false,
126
+ "itc_locale": "hi"
127
+ },
128
+ {
129
+ "locale": "hr-HR",
130
+ "name": "Croatian",
131
+ "game-center": false,
132
+ "itc_locale": "hr"
133
+ },
134
+ {
135
+ "locale": "hu-HU",
136
+ "name": "Hungarian",
137
+ "game-center": false,
138
+ "itc_locale": "hu"
139
+ },
110
140
  {
111
141
  "locale": "id-ID",
112
142
  "name": "Indonesian",
@@ -161,6 +191,12 @@
161
191
  ],
162
192
  "itc_locale": "no"
163
193
  },
194
+ {
195
+ "locale": "pl-PL",
196
+ "name": "Polish",
197
+ "game-center": false,
198
+ "itc_locale": "pl"
199
+ },
164
200
  {
165
201
  "locale": "pt-BR",
166
202
  "name": "Brazilian Portuguese",
@@ -174,6 +210,12 @@
174
210
  "pt"
175
211
  ]
176
212
  },
213
+ {
214
+ "locale": "ro-RO",
215
+ "name": "Romanian",
216
+ "game-center": false,
217
+ "itc_locale": "ro"
218
+ },
177
219
  {
178
220
  "locale": "ru-RU",
179
221
  "name": "Russian",
@@ -201,6 +243,12 @@
201
243
  "es"
202
244
  ]
203
245
  },
246
+ {
247
+ "locale": "sk-SK",
248
+ "name": "Slovak",
249
+ "game-center": false,
250
+ "itc_locale": "sk"
251
+ },
204
252
  {
205
253
  "locale": "sv-SE",
206
254
  "name": "Swedish",
@@ -228,6 +276,12 @@
228
276
  ],
229
277
  "itc_locale": "tr"
230
278
  },
279
+ {
280
+ "locale": "uk-UA",
281
+ "name": "Ukrainian",
282
+ "game-center": false,
283
+ "itc_locale": "uk"
284
+ },
231
285
  {
232
286
  "locale": "vi-VI",
233
287
  "name": "Vietnamese",
@@ -67,7 +67,11 @@ module Spaceship
67
67
  return team['teamId'] if team['teamId'].strip == team_id
68
68
  return team['teamId'] if team['currentTeamMember']['teamMemberId'].to_s.strip == team_id
69
69
  end
70
- puts("Couldn't find team with ID '#{team_id}'")
70
+ # Better message to inform user of misconfiguration as Apple now provides less friendly error as of 2019-02-12
71
+ # This is especially important as Developer Portal team IDs are deprecated and should be replaced with App Store Connect teamIDs
72
+ # "Access Unavailable - You currently don't have access to this membership resource. Contact your team's Account Holder, Josh Holtz, or an Admin."
73
+ # https://github.com/fastlane/fastlane/issues/14228
74
+ puts("Couldn't find team with ID '#{team_id}'. Make sure your are using the correct App Store Connect team ID and have the proper permissions for this team")
71
75
  end
72
76
 
73
77
  if team_name.length > 0
@@ -75,7 +79,10 @@ module Spaceship
75
79
  teams.each_with_index do |team, i|
76
80
  return team['teamId'] if team['name'].strip == team_name
77
81
  end
78
- puts("Couldn't find team with Name '#{team_name}'")
82
+ # Better message to inform user of misconfiguration as Apple now provides less friendly error as of 2019-02-12
83
+ # "Access Unavailable - You currently don't have access to this membership resource. Contact your team's Account Holder, Josh Holtz, or an Admin."
84
+ # https://github.com/fastlane/fastlane/issues/14228
85
+ puts("Couldn't find team with Name '#{team_name}. Make sure you have the proper permissions for this team'")
79
86
  end
80
87
 
81
88
  return teams[0]['teamId'] if teams.count == 1 # user is just in one team
@@ -1193,6 +1193,12 @@ module Spaceship
1193
1193
  parse_response(r, 'data')
1194
1194
  end
1195
1195
 
1196
+ # Submit the In-App-Purchase for review
1197
+ def submit_iap!(app_id: nil, purchase_id: nil)
1198
+ r = request(:post, "ra/apps/#{app_id}/iaps/#{purchase_id}/submission")
1199
+ handle_itc_response(r)
1200
+ end
1201
+
1196
1202
  # Loads the full In-App-Purchases-Family
1197
1203
  def load_iap_family(app_id: nil, family_id: nil)
1198
1204
  r = request(:get, "ra/apps/#{app_id}/iaps/family/#{family_id}")
@@ -13,13 +13,24 @@ module Supply
13
13
  attr_accessor :client
14
14
 
15
15
  def self.make_from_config(params: nil)
16
- unless params[:json_key] || params[:json_key_data]
17
- UI.important("To not be asked about this value, you can specify it using 'json_key'")
18
- json_key_path = UI.input("The service account json file used to authenticate with Google: ")
19
- json_key_path = File.expand_path(json_key_path)
16
+ params ||= Supply.config
17
+ service_account_data = self.service_account_authentication(params: params)
18
+ return self.new(service_account_json: service_account_data, params: params)
19
+ end
20
20
 
21
- UI.user_error!("Could not find service account json file at path '#{json_key_path}'") unless File.exist?(json_key_path)
22
- params[:json_key] = json_key_path
21
+ # Supply authentication file
22
+ def self.service_account_authentication(params: nil)
23
+ unless params[:json_key] || params[:json_key_data]
24
+ if UI.interactive?
25
+ UI.important("To not be asked about this value, you can specify it using 'json_key'")
26
+ json_key_path = UI.input("The service account json file used to authenticate with Google: ")
27
+ json_key_path = File.expand_path(json_key_path)
28
+
29
+ UI.user_error!("Could not find service account json file at path '#{json_key_path}'") unless File.exist?(json_key_path)
30
+ params[:json_key] = json_key_path
31
+ else
32
+ UI.user_error!("Could not load Google authentication. Make sure it has been added as an environment variable in 'json_key' or 'json_key_data'")
33
+ end
23
34
  end
24
35
 
25
36
  if params[:json_key]
@@ -28,7 +39,7 @@ module Supply
28
39
  service_account_json = StringIO.new(params[:json_key_data])
29
40
  end
30
41
 
31
- return self.new(service_account_json: service_account_json, params: params)
42
+ service_account_json
32
43
  end
33
44
 
34
45
  # Initializes the service and its auth_client using the specified information
@@ -86,40 +97,22 @@ module Supply
86
97
  # @!group Login
87
98
  #####################################################
88
99
 
89
- # instantiate a client given the supplied configuration
90
- def self.make_from_config(params: nil)
91
- if params.nil?
92
- params = Supply.config
93
- end
94
-
95
- # first consider deprecated params
96
- unless params[:json_key] || params[:json_key_data] || (params[:key] && params[:issuer])
97
- UI.important("To not be asked about this value, you can specify it using 'json_key'")
98
- params[:json_key] = UI.input("The service account json file used to authenticate with Google: ")
99
- end
100
-
101
- super(params: params)
102
- end
103
-
104
- # Initializes the client and its auth_client using the specified information
105
- # @param service_account_json: The raw service account Json data
106
- # @param path_to_key: The path to your p12 file (@deprecated)
107
- # @param issuer: Email address for oauth (@deprecated)
108
- def initialize(path_to_key: nil, issuer: nil, service_account_json: nil, params: nil)
109
- if service_account_json
110
- key_io = service_account_json
111
- else
112
- # deprecated
100
+ def self.service_account_authentication(params: nil)
101
+ if params[:json_key] || params[:json_key_data]
102
+ super(params: params)
103
+ elsif params[:key] && params[:issuer]
113
104
  require 'google/api_client/auth/key_utils'
114
- key = Google::APIClient::KeyUtils.load_from_pkcs12(File.expand_path(path_to_key), 'notasecret')
105
+ UI.important("This type of authentication is deprecated. Please consider using JSON authentication instead")
106
+ key = Google::APIClient::KeyUtils.load_from_pkcs12(File.expand_path(params[:key]), 'notasecret')
115
107
  cred_json = {
116
108
  private_key: key.to_s,
117
- client_email: issuer
109
+ client_email: params[:issuer]
118
110
  }
119
- key_io = StringIO.new(MultiJson.dump(cred_json))
111
+ service_account_json = StringIO.new(MultiJson.dump(cred_json))
112
+ service_account_json
113
+ else
114
+ UI.user_error!("No authentication parameters were specified. These must be provided in order to authenticate with Google")
120
115
  end
121
-
122
- super(service_account_json: key_io, params: params)
123
116
  end
124
117
 
125
118
  #####################################################
metadata CHANGED
@@ -1,33 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.116.0
4
+ version: 2.116.1
5
5
  platform: ruby
6
6
  authors:
7
- - Olivier Halligon
8
- - Matthew Ellis
9
- - Jimmy Dee
7
+ - Jérôme Lacoste
8
+ - Stefan Natchev
9
+ - Kohki Miki
10
10
  - Aaron Brager
11
- - Helmut Januschka
12
- - Jorge Revuelta H
13
- - Iulian Onofrei
14
- - Josh Holtz
11
+ - Felix Krause
12
+ - Andrew McBurney
13
+ - Jimmy Dee
15
14
  - Jan Piotrowski
16
- - Kohki Miki
17
- - Luka Mirosevic
18
- - Stefan Natchev
15
+ - Matthew Ellis
16
+ - Joshua Liebowitz
17
+ - Josh Holtz
19
18
  - Maksym Grebenets
19
+ - Luka Mirosevic
20
+ - Fumiya Nakamura
20
21
  - Manu Wallner
22
+ - Iulian Onofrei
23
+ - Olivier Halligon
24
+ - Helmut Januschka
25
+ - Jorge Revuelta H
21
26
  - Danielle Tomlinson
22
- - Andrew McBurney
23
- - Felix Krause
24
- - Jérôme Lacoste
25
- - Joshua Liebowitz
26
- - Fumiya Nakamura
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
30
- date: 2019-02-06 00:00:00.000000000 Z
30
+ date: 2019-02-20 00:00:00.000000000 Z
31
31
  dependencies:
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: slack-notifier
@@ -966,6 +966,7 @@ files:
966
966
  - fastlane/lib/fastlane.rb
967
967
  - fastlane/lib/fastlane/action.rb
968
968
  - fastlane/lib/fastlane/action_collector.rb
969
+ - fastlane/lib/fastlane/actions/.slack.rb.swp
969
970
  - fastlane/lib/fastlane/actions/README.md
970
971
  - fastlane/lib/fastlane/actions/actions_helper.rb
971
972
  - fastlane/lib/fastlane/actions/adb.rb
@@ -1602,6 +1603,7 @@ files:
1602
1603
  - spaceship/lib/spaceship/portal/provisioning_profile.rb
1603
1604
  - spaceship/lib/spaceship/portal/provisioning_profile_template.rb
1604
1605
  - spaceship/lib/spaceship/portal/spaceship.rb
1606
+ - spaceship/lib/spaceship/portal/ui/.select_team.rb.swp
1605
1607
  - spaceship/lib/spaceship/portal/ui/select_team.rb
1606
1608
  - spaceship/lib/spaceship/portal/website_push.rb
1607
1609
  - spaceship/lib/spaceship/provider.rb