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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/credentials_manager/lib/credentials_manager/appfile_config.rb +1 -1
  3. data/deliver/lib/deliver/app_screenshot.rb +4 -4
  4. data/deliver/lib/deliver/commands_generator.rb +1 -1
  5. data/deliver/lib/deliver/options.rb +5 -0
  6. data/deliver/lib/deliver/runner.rb +9 -1
  7. data/deliver/lib/deliver/submit_for_review.rb +1 -1
  8. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +8 -2
  9. data/fastlane/lib/fastlane/actions/badge.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/crashlytics.rb +1 -1
  11. data/fastlane/lib/fastlane/actions/download_dsyms.rb +18 -15
  12. data/fastlane/lib/fastlane/actions/get_build_number.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/get_version_number.rb +68 -84
  15. data/fastlane/lib/fastlane/actions/hockey.rb +4 -4
  16. data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/installr.rb +1 -1
  18. data/fastlane/lib/fastlane/actions/oclint.rb +1 -1
  19. data/fastlane/lib/fastlane/actions/set_changelog.rb +1 -1
  20. data/fastlane/lib/fastlane/actions/slather.rb +1 -1
  21. data/fastlane/lib/fastlane/actions/sonar.rb +1 -1
  22. data/fastlane/lib/fastlane/actions/swiftlint.rb +1 -1
  23. data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
  24. data/fastlane/lib/fastlane/actions/tryouts.rb +2 -2
  25. data/fastlane/lib/fastlane/actions/typetalk.rb +1 -1
  26. data/fastlane/lib/fastlane/actions/update_app_group_identifiers.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/update_icloud_container_identifiers.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/update_info_plist.rb +2 -2
  29. data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +2 -2
  30. data/fastlane/lib/fastlane/actions/verify_xcode.rb +1 -1
  31. data/fastlane/lib/fastlane/actions/xcode_server_get_assets.rb +1 -1
  32. data/fastlane/lib/fastlane/configuration_helper.rb +1 -1
  33. data/fastlane/lib/fastlane/lane_manager.rb +4 -4
  34. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -1
  35. data/fastlane/lib/fastlane/runner.rb +2 -2
  36. data/fastlane/lib/fastlane/server/socket_server.rb +17 -3
  37. data/fastlane/lib/fastlane/setup/setup.rb +1 -1
  38. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -4
  39. data/fastlane/lib/fastlane/swift_lane_manager.rb +2 -2
  40. data/fastlane/lib/fastlane/version.rb +1 -1
  41. data/fastlane_core/lib/fastlane_core/command_executor.rb +1 -1
  42. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +5 -5
  43. data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
  44. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +1 -1
  45. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +2 -2
  46. data/fastlane_core/lib/fastlane_core/project.rb +6 -5
  47. data/fastlane_core/lib/fastlane_core/tool_collector.rb +1 -1
  48. data/frameit/lib/frameit/editor.rb +2 -2
  49. data/gym/lib/gym/generators/build_command_generator.rb +0 -1
  50. data/match/lib/match/git_helper.rb +1 -1
  51. data/match/lib/match/options.rb +1 -1
  52. data/match/lib/match/runner.rb +3 -3
  53. data/pilot/lib/pilot/build_manager.rb +3 -3
  54. data/scan/lib/scan/slack_poster.rb +1 -1
  55. data/scan/lib/scan/test_command_generator.rb +0 -1
  56. data/scan/lib/scan/test_result_parser.rb +1 -1
  57. data/sigh/lib/sigh/runner.rb +1 -1
  58. data/snapshot/lib/snapshot/options.rb +8 -0
  59. data/snapshot/lib/snapshot/runner.rb +1 -1
  60. data/snapshot/lib/snapshot/test_command_generator.rb +28 -1
  61. data/spaceship/lib/spaceship/client.rb +4 -4
  62. data/spaceship/lib/spaceship/du/du_client.rb +1 -1
  63. data/spaceship/lib/spaceship/launcher.rb +1 -1
  64. data/spaceship/lib/spaceship/portal/provisioning_profile.rb +4 -4
  65. data/spaceship/lib/spaceship/tunes/application.rb +34 -0
  66. data/spaceship/lib/spaceship/tunes/build_train.rb +1 -0
  67. data/spaceship/lib/spaceship/tunes/tunes_client.rb +4 -4
  68. 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) and !Helper.test?
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 and !value.empty?
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? and !Helper.test?
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 and app.edit_version.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 and !value.empty?
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? or File.exist?(value)
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 and version < Gem::Version.new('0.5.0') and !Helper.test?
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 and File.exist?(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 and !value.empty?
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 and !value.empty?
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 and File.exist?(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) and !Helper.test?
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) and !Helper.test?
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] or params[:display_name] or params[:block]
12
- if (params[:app_identifier] or params[:display_name]) and params[:block]
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 and !value.empty?
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 and !value.empty?
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") or output.include?("source=Apple") or output.include?("source=Apple System")
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 and @password
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 and first_element.kind_of?(FastlaneCore::ConfigItem)
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) or lane.nil?
11
- UI.user_error!("platform must be a string") unless platform.kind_of?(String) or platform.nil?
12
- UI.user_error!("parameters must be a hash") unless parameters.kind_of?(Hash) or parameters.nil?
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 and lane
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)
@@ -90,7 +90,8 @@ Style/RedundantReturn:
90
90
  Style/IfUnlessModifier:
91
91
  Enabled: false
92
92
  Style/AndOr:
93
- Enabled: false
93
+ Enabled: true
94
+ EnforcedStyle: conditionals
94
95
  Metrics/ClassLength:
95
96
  Max: 320
96
97
  Metrics/LineLength:
@@ -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 and arguments.first.kind_of?(Hash)
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 and lanes[lane.platform][lane.name]
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
- return '{"payload":{"status":"ready_for_next", "return_object":' + return_object + closure_arg + '}}'
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
- return "{\"payload\":{\"status\":\"failure\",\"failure_information\":#{exception_array.flatten}}}"
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? and !Helper.test?
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
- unless action.available_options
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) or lane.nil?
11
- UI.user_error!("parameters must be a hash") unless parameters.kind_of?(Hash) or parameters.nil?
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.20180316050051'.freeze
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 and loading # this is only used to show the "Loading text"...
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) and !@values[key].nil?
219
+ value = if @values.key?(key) && !@values[key].nil?
220
220
  @values[key]
221
- elsif option.env_name and !ENV[option.env_name].nil?
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? and !option.string? # by default boolean flags are false
231
- return value unless value.nil? and !option.optional and ask
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? or !UI.interactive?
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? and Gem::Specification.find_all_by_name(gem_name).any?
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'] or result['CFBundleVersion']
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") or
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 and line =~ OUTPUT_REGEX
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 and config[:project].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 and config[:project].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? and config[:project].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 or !File.directory?(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 and preferred.count == 1
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