fastlane 2.86.0.beta.20180316050051 → 2.86.0.beta.20180317050040
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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
|