fastlane_core 0.41.2 → 0.41.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fastlane_core/cert_checker.rb +20 -2
- data/lib/fastlane_core/helper.rb +1 -0
- data/lib/fastlane_core/itunes_transporter.rb +36 -14
- data/lib/fastlane_core/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3501dde8a99eaa2d37c5f5052a5835ff93a09384
|
4
|
+
data.tar.gz: 9802e017e03259a343f54976ff928b936bdb482c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3da7e12d5a745ad709035348a8b2dd1d5b9d1b8e2b1bb76634283f891bd1f12a042a28ec0d75aaa6ec8126eca4e4a565b93a370fb2ee01bf9d98c72f46c42159
|
7
|
+
data.tar.gz: b7b51581a819640271b43f15599ebb7121c7b10de4d1f8ffd13b8bffb2f5e2207d5eb7adaa365a2a69be72dc9d1497e60c523b41fbcaa287e37e3aa956b07412
|
@@ -48,7 +48,8 @@ module FastlaneCore
|
|
48
48
|
|
49
49
|
def self.wwdr_certificate_installed?
|
50
50
|
certificate_name = "Apple Worldwide Developer Relations Certification Authority"
|
51
|
-
|
51
|
+
keychain = wwdr_keychain
|
52
|
+
response = Helper.backticks("security find-certificate -c '#{certificate_name}' #{keychain}", print: $verbose)
|
52
53
|
return response.include?("attributes:")
|
53
54
|
end
|
54
55
|
|
@@ -56,11 +57,28 @@ module FastlaneCore
|
|
56
57
|
Dir.chdir('/tmp') do
|
57
58
|
url = 'https://developer.apple.com/certificationauthority/AppleWWDRCA.cer'
|
58
59
|
filename = File.basename(url)
|
59
|
-
|
60
|
+
keychain = wwdr_keychain
|
61
|
+
keychain.prepend("-k ") unless keychain.empty?
|
62
|
+
`curl -O #{url} && security import #{filename} #{keychain}`
|
60
63
|
UI.user_error!("Could not install WWDR certificate") unless $?.success?
|
61
64
|
end
|
62
65
|
end
|
63
66
|
|
67
|
+
def self.wwdr_keychain
|
68
|
+
priority = [
|
69
|
+
"security list-keychains -d user",
|
70
|
+
"security default-keychain -d user"
|
71
|
+
]
|
72
|
+
priority.each do |command|
|
73
|
+
keychains = Helper.backticks(command, print: $verbose).split("\n")
|
74
|
+
unless keychains.empty?
|
75
|
+
# Select first keychain name from returned keychains list
|
76
|
+
return keychains[0].strip.tr('"', '').split(File::SEPARATOR)[-1]
|
77
|
+
end
|
78
|
+
end
|
79
|
+
return ""
|
80
|
+
end
|
81
|
+
|
64
82
|
def self.sha1_fingerprint(path)
|
65
83
|
result = `openssl x509 -in "#{path}" -inform der -noout -sha1 -fingerprint`
|
66
84
|
begin
|
data/lib/fastlane_core/helper.rb
CHANGED
@@ -151,6 +151,7 @@ module FastlaneCore
|
|
151
151
|
|
152
152
|
# @return the full path to the iTMSTransporter executable
|
153
153
|
def self.itms_path
|
154
|
+
return ENV["FASTLANE_ITUNES_TRANSPORTER_PATH"] if ENV["FASTLANE_ITUNES_TRANSPORTER_PATH"]
|
154
155
|
return '' unless self.is_mac? # so tests work on Linx too
|
155
156
|
|
156
157
|
[
|
@@ -37,25 +37,35 @@ module FastlaneCore
|
|
37
37
|
|
38
38
|
begin
|
39
39
|
PTY.spawn(command) do |stdin, stdout, pid|
|
40
|
-
|
41
|
-
|
40
|
+
begin
|
41
|
+
stdin.each do |line|
|
42
|
+
parse_line(line, hide_output) # this is where the parsing happens
|
43
|
+
end
|
44
|
+
rescue Errno::EIO
|
45
|
+
# Exception ignored intentionally.
|
46
|
+
# https://stackoverflow.com/questions/10238298/ruby-on-linux-pty-goes-away-without-eof-raises-errnoeio
|
47
|
+
ensure
|
48
|
+
Process.wait(pid)
|
42
49
|
end
|
43
50
|
end
|
44
51
|
rescue => ex
|
45
|
-
UI.error(ex.to_s)
|
46
52
|
@errors << ex.to_s
|
47
53
|
end
|
48
54
|
|
55
|
+
exit_status = $?.exitstatus
|
56
|
+
unless exit_status.zero?
|
57
|
+
@errors << "The call to the iTMSTransporter completed with a non-zero exit status: #{exit_status}. This indicates a failure."
|
58
|
+
end
|
59
|
+
|
49
60
|
if @warnings.count > 0
|
50
61
|
UI.important(@warnings.join("\n"))
|
51
62
|
end
|
52
63
|
|
53
64
|
if @errors.count > 0
|
54
65
|
UI.error(@errors.join("\n"))
|
55
|
-
return false
|
56
66
|
end
|
57
67
|
|
58
|
-
|
68
|
+
@errors.count.zero?
|
59
69
|
end
|
60
70
|
|
61
71
|
private
|
@@ -139,6 +149,18 @@ module FastlaneCore
|
|
139
149
|
].join(' ')
|
140
150
|
end
|
141
151
|
|
152
|
+
def handle_error(password)
|
153
|
+
# rubocop:disable Style/CaseEquality
|
154
|
+
unless /^[0-9a-zA-Z\.\$\_]*$/ === password
|
155
|
+
UI.error([
|
156
|
+
"Password contains special characters, which may not be handled properly by iTMSTransporter.",
|
157
|
+
"If you experience problems uploading to iTunes Connect, please consider changing your password to something with only alphanumeric characters."
|
158
|
+
].join(' '))
|
159
|
+
end
|
160
|
+
# rubocop:enable Style/CaseEquality
|
161
|
+
UI.error("Could not download/upload from iTunes Connect! It's probably related to your password or your internet connection.")
|
162
|
+
end
|
163
|
+
|
142
164
|
private
|
143
165
|
|
144
166
|
def shell_escaped_password(password)
|
@@ -204,6 +226,14 @@ module FastlaneCore
|
|
204
226
|
].join(' ')
|
205
227
|
end
|
206
228
|
|
229
|
+
def handle_error(password)
|
230
|
+
unless File.exist?(Helper.transporter_java_jar_path)
|
231
|
+
UI.error("The iTMSTransporter Java app was not found at '#{Helper.transporter_java_jar_path}'.")
|
232
|
+
UI.error("If you're using Xcode 6, please select the shell script executor by setting the environment variable "\
|
233
|
+
"FASTLANE_ITUNES_TRANSPORTER_USE_SHELL_SCRIPT=1")
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
207
237
|
def execute(command, hide_output)
|
208
238
|
# The Java command needs to be run starting in a working directory in the iTMSTransporter
|
209
239
|
# file area. The shell script takes care of changing directories over to there, but we'll
|
@@ -301,15 +331,7 @@ module FastlaneCore
|
|
301
331
|
private
|
302
332
|
|
303
333
|
def handle_error(password)
|
304
|
-
|
305
|
-
unless /^[0-9a-zA-Z\.\$\_]*$/ === password
|
306
|
-
UI.error([
|
307
|
-
"Password contains special characters, which may not be handled properly by iTMSTransporter.",
|
308
|
-
"If you experience problems uploading to iTunes Connect, please consider changing your password to something with only alphanumeric characters."
|
309
|
-
].join(' '))
|
310
|
-
end
|
311
|
-
# rubocop:enable Style/CaseEquality
|
312
|
-
UI.error("Could not download/upload from iTunes Connect! It's probably related to your password or your internet connection.")
|
334
|
+
@transporter_executor.handle_error(password)
|
313
335
|
end
|
314
336
|
end
|
315
337
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.41.
|
4
|
+
version: 0.41.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|