fastlane 2.86.0.beta.20180316050051 → 2.86.0.beta.20180317050040
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/credentials_manager/lib/credentials_manager/appfile_config.rb +1 -1
- data/deliver/lib/deliver/app_screenshot.rb +4 -4
- data/deliver/lib/deliver/commands_generator.rb +1 -1
- data/deliver/lib/deliver/options.rb +5 -0
- data/deliver/lib/deliver/runner.rb +9 -1
- data/deliver/lib/deliver/submit_for_review.rb +1 -1
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +8 -2
- data/fastlane/lib/fastlane/actions/badge.rb +1 -1
- data/fastlane/lib/fastlane/actions/crashlytics.rb +1 -1
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +18 -15
- data/fastlane/lib/fastlane/actions/get_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
- data/fastlane/lib/fastlane/actions/get_version_number.rb +68 -84
- data/fastlane/lib/fastlane/actions/hockey.rb +4 -4
- data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/installr.rb +1 -1
- data/fastlane/lib/fastlane/actions/oclint.rb +1 -1
- data/fastlane/lib/fastlane/actions/set_changelog.rb +1 -1
- data/fastlane/lib/fastlane/actions/slather.rb +1 -1
- data/fastlane/lib/fastlane/actions/sonar.rb +1 -1
- data/fastlane/lib/fastlane/actions/swiftlint.rb +1 -1
- data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
- data/fastlane/lib/fastlane/actions/tryouts.rb +2 -2
- data/fastlane/lib/fastlane/actions/typetalk.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_app_group_identifiers.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_icloud_container_identifiers.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_info_plist.rb +2 -2
- data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +2 -2
- data/fastlane/lib/fastlane/actions/verify_xcode.rb +1 -1
- data/fastlane/lib/fastlane/actions/xcode_server_get_assets.rb +1 -1
- data/fastlane/lib/fastlane/configuration_helper.rb +1 -1
- data/fastlane/lib/fastlane/lane_manager.rb +4 -4
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -1
- data/fastlane/lib/fastlane/runner.rb +2 -2
- data/fastlane/lib/fastlane/server/socket_server.rb +17 -3
- data/fastlane/lib/fastlane/setup/setup.rb +1 -1
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -4
- data/fastlane/lib/fastlane/swift_lane_manager.rb +2 -2
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core/command_executor.rb +1 -1
- data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +5 -5
- data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +1 -1
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +2 -2
- data/fastlane_core/lib/fastlane_core/project.rb +6 -5
- data/fastlane_core/lib/fastlane_core/tool_collector.rb +1 -1
- data/frameit/lib/frameit/editor.rb +2 -2
- data/gym/lib/gym/generators/build_command_generator.rb +0 -1
- data/match/lib/match/git_helper.rb +1 -1
- data/match/lib/match/options.rb +1 -1
- data/match/lib/match/runner.rb +3 -3
- data/pilot/lib/pilot/build_manager.rb +3 -3
- data/scan/lib/scan/slack_poster.rb +1 -1
- data/scan/lib/scan/test_command_generator.rb +0 -1
- data/scan/lib/scan/test_result_parser.rb +1 -1
- data/sigh/lib/sigh/runner.rb +1 -1
- data/snapshot/lib/snapshot/options.rb +8 -0
- data/snapshot/lib/snapshot/runner.rb +1 -1
- data/snapshot/lib/snapshot/test_command_generator.rb +28 -1
- data/spaceship/lib/spaceship/client.rb +4 -4
- data/spaceship/lib/spaceship/du/du_client.rb +1 -1
- data/spaceship/lib/spaceship/launcher.rb +1 -1
- data/spaceship/lib/spaceship/portal/provisioning_profile.rb +4 -4
- data/spaceship/lib/spaceship/tunes/application.rb +34 -0
- data/spaceship/lib/spaceship/tunes/build_train.rb +1 -0
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +4 -4
- metadata +27 -13
@@ -74,7 +74,7 @@ module Fastlane
|
|
74
74
|
optional: true,
|
75
75
|
verify_block: proc do |value|
|
76
76
|
UI.user_error!("Please pass the path to the project, not the workspace") if value.end_with?(".xcworkspace")
|
77
|
-
UI.user_error!("Could not find Xcode project") if !File.exist?(value)
|
77
|
+
UI.user_error!("Could not find Xcode project") if !File.exist?(value) && !Helper.test?
|
78
78
|
end)
|
79
79
|
]
|
80
80
|
end
|
@@ -70,7 +70,7 @@ module Fastlane
|
|
70
70
|
sensitive: true,
|
71
71
|
description: "API Token for Installr Access",
|
72
72
|
verify_block: proc do |value|
|
73
|
-
UI.user_error!("No API token for Installr given, pass using `api_token: 'token'`") unless value
|
73
|
+
UI.user_error!("No API token for Installr given, pass using `api_token: 'token'`") unless value && !value.empty?
|
74
74
|
end),
|
75
75
|
FastlaneCore::ConfigItem.new(key: :ipa,
|
76
76
|
env_name: "INSTALLR_IPA_PATH",
|
@@ -8,7 +8,7 @@ module Fastlane
|
|
8
8
|
# rubocop:disable Metrics/PerceivedComplexity
|
9
9
|
def self.run(params)
|
10
10
|
oclint_path = params[:oclint_path]
|
11
|
-
if `which #{oclint_path}`.to_s.empty?
|
11
|
+
if `which #{oclint_path}`.to_s.empty? && !Helper.test?
|
12
12
|
UI.user_error!("You have to install oclint or provide path to oclint binary. Fore more details: ") + "http://docs.oclint.org/en/stable/intro/installation.html".yellow
|
13
13
|
end
|
14
14
|
|
@@ -16,7 +16,7 @@ module Fastlane
|
|
16
16
|
unless version_number
|
17
17
|
# Automatically fetch the latest version
|
18
18
|
UI.message("Fetching the latest version for this app")
|
19
|
-
if app.edit_version
|
19
|
+
if app.edit_version && app.edit_version.version
|
20
20
|
version_number = app.edit_version.version
|
21
21
|
else
|
22
22
|
UI.message("You have to specify a new version number: ")
|
@@ -126,7 +126,7 @@ Slather is available at https://github.com/SlatherOrg/slather
|
|
126
126
|
env_name: "FL_SLATHER_PROJ", # The name of the environment variable
|
127
127
|
description: "The project file that slather looks at", # a short description of this parameter
|
128
128
|
verify_block: proc do |value|
|
129
|
-
UI.user_error!("No project file specified, pass using `proj: 'Project.xcodeproj'`") unless value
|
129
|
+
UI.user_error!("No project file specified, pass using `proj: 'Project.xcodeproj'`") unless value && !value.empty?
|
130
130
|
end,
|
131
131
|
optional: true),
|
132
132
|
FastlaneCore::ConfigItem.new(key: :workspace,
|
@@ -56,7 +56,7 @@ module Fastlane
|
|
56
56
|
description: "The path to your sonar project configuration file; defaults to `sonar-project.properties`", # default is enforced by sonar-scanner binary
|
57
57
|
optional: true,
|
58
58
|
verify_block: proc do |value|
|
59
|
-
UI.user_error!("Couldn't find file at path '#{value}'") unless value.nil?
|
59
|
+
UI.user_error!("Couldn't find file at path '#{value}'") unless value.nil? || File.exist?(value)
|
60
60
|
end),
|
61
61
|
FastlaneCore::ConfigItem.new(key: :project_key,
|
62
62
|
env_name: "FL_SONAR_RUNNER_PROJECT_KEY",
|
@@ -7,7 +7,7 @@ module Fastlane
|
|
7
7
|
end
|
8
8
|
|
9
9
|
version = swiftlint_version(executable: params[:executable])
|
10
|
-
if params[:mode] == :autocorrect
|
10
|
+
if params[:mode] == :autocorrect && version < Gem::Version.new('0.5.0') && !Helper.test?
|
11
11
|
UI.user_error!("Your version of swiftlint (#{version}) does not support autocorrect mode.\nUpdate swiftlint using `brew update && brew upgrade swiftlint`")
|
12
12
|
end
|
13
13
|
|
@@ -18,7 +18,7 @@ module Fastlane
|
|
18
18
|
builder.adapter(:net_http)
|
19
19
|
end
|
20
20
|
|
21
|
-
options[:file] = Faraday::UploadIO.new(ipa, 'application/octet-stream') if ipa
|
21
|
+
options[:file] = Faraday::UploadIO.new(ipa, 'application/octet-stream') if ipa && File.exist?(ipa)
|
22
22
|
|
23
23
|
symbols_file = options.delete(:symbols_file)
|
24
24
|
if symbols_file
|
@@ -71,14 +71,14 @@ module Fastlane
|
|
71
71
|
env_name: "TRYOUTS_APP_ID",
|
72
72
|
description: "Tryouts application hash",
|
73
73
|
verify_block: proc do |value|
|
74
|
-
UI.user_error!("No application identifier for Tryouts given, pass using `app_id: 'application id'`") unless value
|
74
|
+
UI.user_error!("No application identifier for Tryouts given, pass using `app_id: 'application id'`") unless value && !value.empty?
|
75
75
|
end),
|
76
76
|
FastlaneCore::ConfigItem.new(key: :api_token,
|
77
77
|
env_name: "TRYOUTS_API_TOKEN",
|
78
78
|
sensitive: true,
|
79
79
|
description: "API Token for Tryouts Access",
|
80
80
|
verify_block: proc do |value|
|
81
|
-
UI.user_error!("No API token for Tryouts given, pass using `api_token: 'token'`") unless value
|
81
|
+
UI.user_error!("No API token for Tryouts given, pass using `api_token: 'token'`") unless value && !value.empty?
|
82
82
|
end),
|
83
83
|
FastlaneCore::ConfigItem.new(key: :build_file,
|
84
84
|
env_name: "TRYOUTS_BUILD_FILE",
|
@@ -18,7 +18,7 @@ module Fastlane
|
|
18
18
|
message = "#{emoticon} #{options[:message]}"
|
19
19
|
|
20
20
|
note_path = File.expand_path(options[:note_path]) if options[:note_path]
|
21
|
-
if note_path
|
21
|
+
if note_path && File.exist?(note_path)
|
22
22
|
contents = File.read(note_path)
|
23
23
|
message += "\n\n```\n#{contents}\n```"
|
24
24
|
end
|
@@ -48,7 +48,7 @@ module Fastlane
|
|
48
48
|
description: "The path to the entitlement file which contains the app group identifiers", # a short description of this parameter
|
49
49
|
verify_block: proc do |value|
|
50
50
|
UI.user_error!("Please pass a path to an entitlements file. ") unless value.include?(".entitlements")
|
51
|
-
UI.user_error!("Could not find entitlements file") if !File.exist?(value)
|
51
|
+
UI.user_error!("Could not find entitlements file") if !File.exist?(value) && !Helper.test?
|
52
52
|
end),
|
53
53
|
FastlaneCore::ConfigItem.new(key: :app_group_identifiers,
|
54
54
|
env_name: "FL_UPDATE_APP_GROUP_IDENTIFIER_APP_GROUP_IDENTIFIERS",
|
@@ -56,7 +56,7 @@ module Fastlane
|
|
56
56
|
description: "The path to the entitlement file which contains the iCloud container identifiers",
|
57
57
|
verify_block: proc do |value|
|
58
58
|
UI.user_error!("Please pass a path to an entitlements file. ") unless value.include?(".entitlements")
|
59
|
-
UI.user_error!("Could not find entitlements file") if !File.exist?(value)
|
59
|
+
UI.user_error!("Could not find entitlements file") if !File.exist?(value) && !Helper.test?
|
60
60
|
end),
|
61
61
|
FastlaneCore::ConfigItem.new(key: :icloud_container_identifiers,
|
62
62
|
env_name: "FL_UPDATE_ICLOUD_CONTAINER_IDENTIFIERS_IDENTIFIERS",
|
@@ -8,8 +8,8 @@ module Fastlane
|
|
8
8
|
require 'xcodeproj'
|
9
9
|
|
10
10
|
# Check if parameters are set
|
11
|
-
if params[:app_identifier]
|
12
|
-
if (params[:app_identifier]
|
11
|
+
if params[:app_identifier] || params[:display_name] || params[:block]
|
12
|
+
if (params[:app_identifier] || params[:display_name]) && params[:block]
|
13
13
|
UI.important("block parameter can not be specified with app_identifier or display_name")
|
14
14
|
return false
|
15
15
|
end
|
@@ -100,13 +100,13 @@ module Fastlane
|
|
100
100
|
env_name: "SENTRY_ORG_SLUG",
|
101
101
|
description: "Organization slug for Sentry project",
|
102
102
|
verify_block: proc do |value|
|
103
|
-
UI.user_error!("No organization slug for SentryAction given, pass using `org_slug: 'org'`") unless value
|
103
|
+
UI.user_error!("No organization slug for SentryAction given, pass using `org_slug: 'org'`") unless value && !value.empty?
|
104
104
|
end),
|
105
105
|
FastlaneCore::ConfigItem.new(key: :project_slug,
|
106
106
|
env_name: "SENTRY_PROJECT_SLUG",
|
107
107
|
description: "Project slug for Sentry",
|
108
108
|
verify_block: proc do |value|
|
109
|
-
UI.user_error!("No project slug for SentryAction given, pass using `project_slug: 'project'`") unless value
|
109
|
+
UI.user_error!("No project slug for SentryAction given, pass using `project_slug: 'project'`") unless value && !value.empty?
|
110
110
|
end),
|
111
111
|
FastlaneCore::ConfigItem.new(key: :dsym_path,
|
112
112
|
env_name: "SENTRY_DSYM_PATH",
|
@@ -70,7 +70,7 @@ module Fastlane
|
|
70
70
|
|
71
71
|
output = verify(command: command, must_includes: must_includes, params: params)
|
72
72
|
|
73
|
-
if output.include?("source=Mac App Store")
|
73
|
+
if output.include?("source=Mac App Store") || output.include?("source=Apple") || output.include?("source=Apple System")
|
74
74
|
UI.success("Successfully verified Xcode installation at path '#{params[:xcode_path]}' 🎧")
|
75
75
|
else
|
76
76
|
show_and_raise_error("Invalid Download Source of Xcode: #{output}", params[:xcode_path])
|
@@ -186,7 +186,7 @@ module Fastlane
|
|
186
186
|
'X-XCSAPIVersion' => 1 # XCS API version with this API, Xcode needs this otherwise it explodes in a 500 error fire. Currently Xcode 7 Beta 5 is on Version 5.
|
187
187
|
}
|
188
188
|
|
189
|
-
if @username
|
189
|
+
if @username && @password
|
190
190
|
userpass = "#{@username}:#{@password}"
|
191
191
|
headers['Authorization'] = "Basic #{Base64.strict_encode64(userpass)}"
|
192
192
|
end
|
@@ -3,7 +3,7 @@ module Fastlane
|
|
3
3
|
def self.parse(action, params)
|
4
4
|
first_element = (action.available_options || []).first
|
5
5
|
|
6
|
-
if first_element
|
6
|
+
if first_element && first_element.kind_of?(FastlaneCore::ConfigItem)
|
7
7
|
# default use case
|
8
8
|
return FastlaneCore::Configuration.create(action.available_options, params)
|
9
9
|
elsif first_element
|
@@ -7,9 +7,9 @@ module Fastlane
|
|
7
7
|
# @param parameters [Hash] The parameters passed from the command line to the lane
|
8
8
|
# @param env Dot Env Information
|
9
9
|
def self.cruise_lane(platform, lane, parameters = nil, env = nil)
|
10
|
-
UI.user_error!("lane must be a string") unless lane.kind_of?(String)
|
11
|
-
UI.user_error!("platform must be a string") unless platform.kind_of?(String)
|
12
|
-
UI.user_error!("parameters must be a hash") unless parameters.kind_of?(Hash)
|
10
|
+
UI.user_error!("lane must be a string") unless lane.kind_of?(String) || lane.nil?
|
11
|
+
UI.user_error!("platform must be a string") unless platform.kind_of?(String) || platform.nil?
|
12
|
+
UI.user_error!("parameters must be a hash") unless parameters.kind_of?(Hash) || parameters.nil?
|
13
13
|
|
14
14
|
ff = Fastlane::FastFile.new(FastlaneCore::FastlaneFolder.fastfile_path)
|
15
15
|
|
@@ -29,7 +29,7 @@ module Fastlane
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
if !platform
|
32
|
+
if !platform && lane
|
33
33
|
# Either, the user runs a specific lane in root or want to auto complete the available lanes for a platform
|
34
34
|
# e.g. `fastlane ios` should list all available iOS actions
|
35
35
|
if ff.is_platform_block?(lane)
|
@@ -238,7 +238,7 @@ module Fastlane
|
|
238
238
|
# Since we usually just need the passed hash, we'll just use the first object if there is only one
|
239
239
|
if arguments.count == 0
|
240
240
|
arguments = ConfigurationHelper.parse(class_ref, {}) # no parameters => empty hash
|
241
|
-
elsif arguments.count == 1
|
241
|
+
elsif arguments.count == 1 && arguments.first.kind_of?(Hash)
|
242
242
|
arguments = ConfigurationHelper.parse(class_ref, arguments.first) # Correct configuration passed
|
243
243
|
elsif !class_ref.available_options
|
244
244
|
# This action does not use the new action format
|
@@ -309,7 +309,7 @@ module Fastlane
|
|
309
309
|
def add_lane(lane, override = false)
|
310
310
|
lanes[lane.platform] ||= {}
|
311
311
|
|
312
|
-
if !override
|
312
|
+
if !override && lanes[lane.platform][lane.name]
|
313
313
|
UI.user_error!("Lane '#{lane.name}' was defined multiple times!")
|
314
314
|
end
|
315
315
|
|
@@ -194,11 +194,18 @@ module Fastlane
|
|
194
194
|
return_value: closure_arg,
|
195
195
|
return_value_type: :string # always assume string for closure error_callback
|
196
196
|
)
|
197
|
-
closure_arg = ', "closure_argument_value": ' + closure_arg
|
198
197
|
end
|
199
198
|
|
200
199
|
Thread.current[:exception] = nil
|
201
|
-
|
200
|
+
|
201
|
+
payload = {
|
202
|
+
payload: {
|
203
|
+
status: "ready_for_next",
|
204
|
+
return_object: return_object,
|
205
|
+
closure_argument_value: closure_arg
|
206
|
+
}
|
207
|
+
}
|
208
|
+
return JSON.generate(payload)
|
202
209
|
rescue StandardError => e
|
203
210
|
Thread.current[:exception] = e
|
204
211
|
|
@@ -210,7 +217,14 @@ module Fastlane
|
|
210
217
|
exception_array << "cause: #{e.class}"
|
211
218
|
exception_array << e.backtrace
|
212
219
|
end
|
213
|
-
|
220
|
+
|
221
|
+
payload = {
|
222
|
+
payload: {
|
223
|
+
status: "failure",
|
224
|
+
failure_information: exception_array.flatten
|
225
|
+
}
|
226
|
+
}
|
227
|
+
return JSON.generate(payload)
|
214
228
|
end
|
215
229
|
end
|
216
230
|
end
|
@@ -34,7 +34,7 @@ module Fastlane
|
|
34
34
|
# Start the setup process
|
35
35
|
# rubocop:disable Metrics/BlockNesting
|
36
36
|
def self.start(user: nil, is_swift_fastfile: false)
|
37
|
-
if FastlaneCore::FastlaneFolder.setup?
|
37
|
+
if FastlaneCore::FastlaneFolder.setup? && !Helper.test?
|
38
38
|
require 'fastlane/lane_list'
|
39
39
|
Fastlane::LaneList.output(FastlaneCore::FastlaneFolder.fastfile_path)
|
40
40
|
UI.important("------------------")
|
@@ -321,10 +321,7 @@ func parseInt(fromString: String, function: String = #function) -> Int {
|
|
321
321
|
end
|
322
322
|
|
323
323
|
def process_action(action: nil)
|
324
|
-
|
325
|
-
return nil
|
326
|
-
end
|
327
|
-
options = action.available_options
|
324
|
+
options = action.available_options || []
|
328
325
|
|
329
326
|
action_name = action.action_name
|
330
327
|
keys = []
|
@@ -7,8 +7,8 @@ module Fastlane
|
|
7
7
|
# @param parameters [Hash] The parameters passed from the command line to the lane
|
8
8
|
# @param env Dot Env Information
|
9
9
|
def self.cruise_lane(lane, parameters = nil, env = nil, disable_runner_upgrades: false)
|
10
|
-
UI.user_error!("lane must be a string") unless lane.kind_of?(String)
|
11
|
-
UI.user_error!("parameters must be a hash") unless parameters.kind_of?(Hash)
|
10
|
+
UI.user_error!("lane must be a string") unless lane.kind_of?(String) || lane.nil?
|
11
|
+
UI.user_error!("parameters must be a hash") unless parameters.kind_of?(Hash) || parameters.nil?
|
12
12
|
|
13
13
|
# xcodeproj has a bug in certain versions that causes it to change directories
|
14
14
|
# and not return to the original working directory
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.86.0.beta.
|
2
|
+
VERSION = '2.86.0.beta.20180317050040'.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
|
@@ -43,7 +43,7 @@ module FastlaneCore
|
|
43
43
|
command = command.join(" ") if command.kind_of?(Array)
|
44
44
|
UI.command(command) if print_command
|
45
45
|
|
46
|
-
if print_all
|
46
|
+
if print_all && loading # this is only used to show the "Loading text"...
|
47
47
|
UI.command_output(loading)
|
48
48
|
end
|
49
49
|
|
@@ -216,9 +216,9 @@ module FastlaneCore
|
|
216
216
|
option = verify_options_key!(key)
|
217
217
|
|
218
218
|
# Same order as https://docs.fastlane.tools/advanced/#priorities-of-parameters-and-options
|
219
|
-
value = if @values.key?(key)
|
219
|
+
value = if @values.key?(key) && !@values[key].nil?
|
220
220
|
@values[key]
|
221
|
-
elsif option.env_name
|
221
|
+
elsif option.env_name && !ENV[option.env_name].nil?
|
222
222
|
ENV[option.env_name].dup
|
223
223
|
elsif self.config_file_options.key?(key)
|
224
224
|
self.config_file_options[key]
|
@@ -227,11 +227,11 @@ module FastlaneCore
|
|
227
227
|
end
|
228
228
|
|
229
229
|
value = option.auto_convert_value(value)
|
230
|
-
value = nil if value.nil?
|
231
|
-
return value unless value.nil?
|
230
|
+
value = nil if value.nil? && !option.string? # by default boolean flags are false
|
231
|
+
return value unless value.nil? && !option.optional && ask
|
232
232
|
|
233
233
|
# fallback to asking
|
234
|
-
if Helper.test?
|
234
|
+
if Helper.test? || !UI.interactive?
|
235
235
|
# Since we don't want to be asked on tests, we'll just call the verify block with no value
|
236
236
|
# to raise the exception that is shown when the user passes an invalid value
|
237
237
|
set(key, '')
|
@@ -342,7 +342,7 @@ module FastlaneCore
|
|
342
342
|
def self.gem_path(gem_name)
|
343
343
|
UI.deprecated('`Helper.gem_path` is deprecated. Use the `ROOT` constant from the appropriate tool module instead.')
|
344
344
|
|
345
|
-
if !Helper.test?
|
345
|
+
if !Helper.test? && Gem::Specification.find_all_by_name(gem_name).any?
|
346
346
|
return Gem::Specification.find_by_name(gem_name).gem_dir
|
347
347
|
else
|
348
348
|
return './'
|
@@ -51,7 +51,7 @@ module FastlaneCore
|
|
51
51
|
end
|
52
52
|
result = CFPropertyList.native_types(CFPropertyList::List.new(file: tmp_path).value)
|
53
53
|
|
54
|
-
if result['CFBundleIdentifier']
|
54
|
+
if result['CFBundleIdentifier'] || result['CFBundleVersion']
|
55
55
|
return result
|
56
56
|
end
|
57
57
|
end
|
@@ -118,7 +118,7 @@ module FastlaneCore
|
|
118
118
|
UI.error("[Transporter Error Output]: #{$1}")
|
119
119
|
|
120
120
|
# Check if it's a login error
|
121
|
-
if $1.include?("Your Apple ID or password was entered incorrectly")
|
121
|
+
if $1.include?("Your Apple ID or password was entered incorrectly") ||
|
122
122
|
$1.include?("This Apple ID has been locked for security reasons")
|
123
123
|
|
124
124
|
unless Helper.test?
|
@@ -148,7 +148,7 @@ module FastlaneCore
|
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
151
|
-
if !hide_output
|
151
|
+
if !hide_output && line =~ OUTPUT_REGEX
|
152
152
|
# General logging for debug purposes
|
153
153
|
unless output_done
|
154
154
|
UI.verbose("[Transporter]: #{$1}")
|
@@ -7,7 +7,7 @@ module FastlaneCore
|
|
7
7
|
class << self
|
8
8
|
# Project discovery
|
9
9
|
def detect_projects(config)
|
10
|
-
if config[:workspace].to_s.length > 0
|
10
|
+
if config[:workspace].to_s.length > 0 && config[:project].to_s.length > 0
|
11
11
|
UI.user_error!("You can only pass either a workspace or a project path, not both")
|
12
12
|
end
|
13
13
|
|
@@ -25,7 +25,7 @@ module FastlaneCore
|
|
25
25
|
|
26
26
|
return if config[:workspace].to_s.length > 0
|
27
27
|
|
28
|
-
if config[:workspace].to_s.length == 0
|
28
|
+
if config[:workspace].to_s.length == 0 && config[:project].to_s.length == 0
|
29
29
|
project = Dir["./*.xcodeproj"]
|
30
30
|
if project.count > 1
|
31
31
|
puts("Select Project: ")
|
@@ -35,7 +35,7 @@ module FastlaneCore
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
if config[:workspace].nil?
|
38
|
+
if config[:workspace].nil? && config[:project].nil?
|
39
39
|
select_project(config)
|
40
40
|
end
|
41
41
|
end
|
@@ -83,7 +83,7 @@ module FastlaneCore
|
|
83
83
|
self.xcodebuild_list_silent = xcodebuild_list_silent
|
84
84
|
self.xcodebuild_suppress_stderr = xcodebuild_suppress_stderr
|
85
85
|
|
86
|
-
if !path
|
86
|
+
if !path || !File.directory?(path)
|
87
87
|
UI.user_error!("Could not find project at path '#{path}'")
|
88
88
|
end
|
89
89
|
end
|
@@ -144,7 +144,7 @@ module FastlaneCore
|
|
144
144
|
preferred = schemes.find_all { |a| a.downcase.include?(preferred_to_include.downcase) }
|
145
145
|
end
|
146
146
|
|
147
|
-
if preferred_to_include
|
147
|
+
if preferred_to_include && preferred.count == 1
|
148
148
|
options[:scheme] = preferred.last
|
149
149
|
elsif automated_scheme_selection? && schemes.include?(project_name)
|
150
150
|
UI.important("Using scheme matching project name (#{project_name}).")
|
@@ -309,6 +309,7 @@ module FastlaneCore
|
|
309
309
|
proj << "-scheme #{options[:scheme].shellescape}" if options[:scheme]
|
310
310
|
proj << "-project #{options[:project].shellescape}" if options[:project]
|
311
311
|
proj << "-configuration #{options[:configuration].shellescape}" if options[:configuration]
|
312
|
+
proj << "-xcconfig #{options[:xcconfig].shellescape}" if options[:xcconfig]
|
312
313
|
|
313
314
|
return proj
|
314
315
|
end
|