fastlane 2.9.0 → 2.10.0

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/cert/lib/cert/options.rb +11 -1
  4. data/cert/lib/cert/runner.rb +11 -3
  5. data/credentials_manager/lib/credentials_manager/account_manager.rb +1 -1
  6. data/credentials_manager/lib/credentials_manager/appfile_config.rb +2 -2
  7. data/fastlane/README.md +1 -1
  8. data/fastlane/lib/assets/completions/completion.bash +3 -1
  9. data/fastlane/lib/assets/completions/completion.sh +4 -1
  10. data/fastlane/lib/assets/completions/completion.zsh +2 -0
  11. data/fastlane/lib/fastlane/actions/actions_helper.rb +2 -2
  12. data/fastlane/lib/fastlane/actions/clipboard.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/deploygate.rb +2 -2
  14. data/fastlane/lib/fastlane/actions/ipa.rb +2 -2
  15. data/fastlane/lib/fastlane/actions/sonar.rb +10 -3
  16. data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/xcodebuild.rb +23 -6
  18. data/fastlane/lib/fastlane/documentation/docs_generator.rb +1 -1
  19. data/fastlane/lib/fastlane/fast_file.rb +2 -2
  20. data/fastlane/lib/fastlane/lane_manager.rb +5 -2
  21. data/fastlane/lib/fastlane/plugins/plugin_manager.rb +2 -0
  22. data/fastlane/lib/fastlane/runner.rb +1 -1
  23. data/fastlane/lib/fastlane/version.rb +1 -1
  24. data/fastlane_core/lib/fastlane_core/cert_checker.rb +1 -1
  25. data/fastlane_core/lib/fastlane_core/configuration/configuration_file.rb +2 -2
  26. data/fastlane_core/lib/fastlane_core/print_table.rb +6 -0
  27. data/frameit/lib/frameit/strings_parser.rb +1 -1
  28. data/gym/lib/assets/wrap_xcodebuild/xcbuild-safe.sh +3 -0
  29. data/gym/lib/gym/generators/build_command_generator.rb +1 -0
  30. data/gym/lib/gym/options.rb +6 -1
  31. data/pem/README.md +1 -1
  32. data/scan/lib/scan/options.rb +14 -2
  33. data/scan/lib/scan/test_command_generator.rb +3 -2
  34. data/screengrab/lib/screengrab/options.rb +11 -1
  35. data/screengrab/lib/screengrab/runner.rb +48 -23
  36. data/sigh/lib/assets/resign.sh +75 -37
  37. data/sigh/lib/sigh/runner.rb +29 -9
  38. data/snapshot/lib/assets/SnapshotHelper.swift +4 -0
  39. data/snapshot/lib/assets/SnapshotHelper2-3.swift +4 -0
  40. data/snapshot/lib/snapshot/dependency_checker.rb +1 -1
  41. data/snapshot/lib/snapshot/options.rb +6 -0
  42. data/snapshot/lib/snapshot/runner.rb +15 -0
  43. data/spaceship/lib/spaceship/client.rb +1 -1
  44. data/spaceship/lib/spaceship/portal/certificate.rb +2 -1
  45. data/spaceship/lib/spaceship/portal/device.rb +3 -1
  46. data/spaceship/lib/spaceship/portal/portal_client.rb +2 -2
  47. data/spaceship/lib/spaceship/portal/provisioning_profile.rb +4 -2
  48. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ddf8e122e7e3948fd7f44a06a78246dadd138daf
4
- data.tar.gz: 26120e30269fafeec613d788d47367fa4c250639
3
+ metadata.gz: c750b0e8526d5e3e4d0d064a214ddcbf30fda96e
4
+ data.tar.gz: 341bebabdf36d4edacbd49c5275da7c42d0e9664
5
5
  SHA512:
6
- metadata.gz: f056debe3fab1e7f3453a782298445068420f03600ee078879437c3a4f45cab725e7ce81751e7734dc32e5ed248e4068c96b49e4aefe876d75bed109cb422271
7
- data.tar.gz: bc2db5d2e4ae33241ea26ca166f16f7be039b4fc35bd0e18cd785e5ce6c80c6a470531f6ee9283ee9ad48ba0853d688041dee0784f9ff54f4abcf704e9743550
6
+ metadata.gz: 389af2d4b9bf553315cc479f8997de9464729ce67d28c19ca020f56934b138a4f17d2fab362daf23a217b7a07f7273588329ac04adabd71aeee2bb79ea2adf46
7
+ data.tar.gz: 4e2e5b357ce222b78c4fee27fecd527d162bec3e6954f32451898b819e4eda3a6a5547b33a177f017d0b8be5a3b73ad0d9707a36826b4277ab8e7581d7a685ac
data/README.md CHANGED
@@ -46,7 +46,7 @@ Then to deploy a new 'beta' version of your app just run
46
46
  :ghost: | [Jenkins Integration](https://docs.fastlane.tools/best-practices/continuous-integration/#jenkins-integration): Show output directly in test results
47
47
  :book: | Automatically generate Markdown documentation of your lane configurations
48
48
  :hatching_chick: | Over 170 built-in integrations available
49
- :computer: | Support for iOS, Mac, and Android apps
49
+ :computer: | Support for iOS, macOS, and Android apps
50
50
  :octocat: | Full Git and Mercurial support
51
51
 
52
52
  <hr />
@@ -60,7 +60,17 @@ module Cert
60
60
  env_name: "CERT_KEYCHAIN_PASSWORD",
61
61
  sensitive: true,
62
62
  description: "This might be required the first time you access certificates on a new mac. For the login/default keychain this is your account password",
63
- optional: true)
63
+ optional: true),
64
+ FastlaneCore::ConfigItem.new(key: :platform,
65
+ env_name: "CERT_PLATFORM",
66
+ description: "Set the provisioning profile's platform (ios, macos)",
67
+ is_string: false,
68
+ default_value: "ios",
69
+ verify_block: proc do |value|
70
+ value = value.to_s
71
+ pt = %w(macos ios)
72
+ UI.user_error!("Unsupported platform, must be: #{pt}") unless pt.include?(value)
73
+ end)
64
74
  ]
65
75
  end
66
76
  end
@@ -123,9 +123,17 @@ module Cert
123
123
 
124
124
  # The kind of certificate we're interested in
125
125
  def certificate_type
126
- cert_type = Spaceship.certificate.production
127
- cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house?
128
- cert_type = Spaceship.certificate.development if Cert.config[:development]
126
+ case Cert.config[:platform].to_s
127
+ when 'ios', 'tvos'
128
+ cert_type = Spaceship.certificate.production
129
+ cert_type = Spaceship.certificate.in_house if Spaceship.client.in_house?
130
+ cert_type = Spaceship.certificate.development if Cert.config[:development]
131
+
132
+ when 'macos'
133
+ cert_type = Spaceship.certificate.mac_app_distribution
134
+ cert_type = Spaceship.certificate.mac_development if Cert.config[:development]
135
+
136
+ end
129
137
 
130
138
  cert_type
131
139
  end
@@ -101,7 +101,7 @@ module CredentialsManager
101
101
 
102
102
  def ask_for_login
103
103
  puts "-------------------------------------------------------------------------------------".green
104
- puts "The login information you enter will be stored in your Mac OS Keychain".green
104
+ puts "The login information you enter will be stored in your macOS Keychain".green
105
105
  if default_prefix?
106
106
  # We don't want to show this message, if we ask for the application specific password
107
107
  # which has a different prefix
@@ -40,9 +40,9 @@ module CredentialsManager
40
40
  'you should turn off smart quotes in your editor of choice.'.red
41
41
  end
42
42
 
43
- # rubocop:disable Lint/Eval
43
+ # rubocop:disable Security/Eval
44
44
  eval(content)
45
- # rubocop:enable Lint/Eval
45
+ # rubocop:enable Security/Eval
46
46
 
47
47
  print_debug_information(path: full_path) if $verbose
48
48
  end
data/fastlane/README.md CHANGED
@@ -89,7 +89,7 @@ fastlane release
89
89
  :ghost: | [Jenkins Integration](https://docs.fastlane.tools/best-practices/continuous-integration/#jenkins-integration): Show the output directly in the Jenkins test results
90
90
  :book: | Automatically generate a markdown documentation of your lane config
91
91
  :hatching_chick: | Over 170 built-in integrations available
92
- :computer: | Support for both iOS, Mac OS and Android apps
92
+ :computer: | Support for iOS, macOS and Android apps
93
93
  :octocat: | Full git and mercurial support
94
94
 
95
95
 
@@ -1,3 +1,5 @@
1
+ #!/bin/bash
2
+
1
3
  _fastlane_complete() {
2
4
  COMPREPLY=()
3
5
  local word="${COMP_WORDS[COMP_CWORD]}"
@@ -13,7 +15,7 @@ _fastlane_complete() {
13
15
  fi
14
16
 
15
17
  # parse 'beta' out of 'lane :beta do', etc
16
- completions=`cat $file | grep "^\s*lane \:" | awk -F ':' '{print $2}' | awk -F ' ' '{print $1}'`
18
+ completions=$(grep "^\s*lane \:" $file | awk -F ':' '{print $2}' | awk -F ' ' '{print $1}')
17
19
 
18
20
  COMPREPLY=( $(compgen -W "$completions" -- "$word") )
19
21
  }
@@ -1,7 +1,10 @@
1
1
  #!/bin/sh
2
+ # shellcheck disable=SC2155
3
+ # shellcheck disable=SC1090
4
+ # shellcheck disable=SC2039
5
+
2
6
  if [ -n "$BASH_VERSION" ]; then
3
7
  source ~/.fastlane/completions/completion.bash
4
-
5
8
  elif [ -n "$ZSH_VERSION" ]; then
6
9
  source ~/.fastlane/completions/completion.zsh
7
10
  fi
@@ -1,3 +1,5 @@
1
+ #!/bin/zsh
2
+
1
3
  _fastlane_complete() {
2
4
  local word completions
3
5
  word="$1"
@@ -118,13 +118,13 @@ module Fastlane
118
118
  UI.success "Successfully loaded custom action '#{file}'." if $verbose
119
119
  else
120
120
  UI.error "Could not find method 'run' in class #{class_name}."
121
- UI.error 'For more information, check out the docs: https://github.com/fastlane/fastlane/tree/master/fastlane'
121
+ UI.error 'For more information, check out the docs: https://docs.fastlane.tools/'
122
122
  UI.user_error!("Action '#{file_name}' is damaged!", show_github_issues: true)
123
123
  end
124
124
  rescue NameError
125
125
  # Action not found
126
126
  UI.error "Could not find '#{class_name}' class defined."
127
- UI.error 'For more information, check out the docs: https://github.com/fastlane/fastlane/tree/master/fastlane'
127
+ UI.error 'For more information, check out the docs: https://docs.fastlane.tools/'
128
128
  UI.user_error!("Action '#{file_name}' is damaged!", show_github_issues: true)
129
129
  end
130
130
  end
@@ -33,7 +33,7 @@ module Fastlane
33
33
 
34
34
  def self.example_code
35
35
  [
36
- 'clipboard(value: "https://github.com/fastlane/fastlane/tree/master/fastlane")',
36
+ 'clipboard(value: "https://docs.fastlane.tools/")',
37
37
  'clipboard(value: lane_context[SharedValues::HOCKEY_DOWNLOAD_LINK] || "")'
38
38
  ]
39
39
  end
@@ -48,7 +48,7 @@ module Fastlane
48
48
  [:message, :distribution_key, :release_note, :disable_notify].include? key
49
49
  end
50
50
 
51
- raise 'missing `ipa` and `apk`. deploygate action needs least one.' unless binary
51
+ UI.user_error!('missing `ipa` and `apk`. deploygate action needs least one.') unless binary
52
52
 
53
53
  return binary if Helper.test?
54
54
 
@@ -122,7 +122,7 @@ module Fastlane
122
122
  env_name: "DEPLOYGATE_USER",
123
123
  description: "Target username or organization name",
124
124
  verify_block: proc do |value|
125
- UI.user_error!("No User for app given, pass using `user: 'user'`") unless value.to_s.length > 0
125
+ UI.user_error!("No User for DeployGate given, pass using `user: 'user'`") unless value.to_s.length > 0
126
126
  end),
127
127
  FastlaneCore::ConfigItem.new(key: :ipa,
128
128
  env_name: "DEPLOYGATE_IPA_PATH",
@@ -77,7 +77,7 @@ module Fastlane
77
77
  "Original Error:",
78
78
  " => " + ex.to_s,
79
79
  "A build error occured. You are using legacy `shenzhen` for building",
80
- "it is recommended to upgrade to `gym`: ",
80
+ "it is recommended to upgrade to _gym_: ",
81
81
  "https://github.com/fastlane/fastlane/tree/master/gym",
82
82
  core_command,
83
83
  "-------------------------------------------------------"
@@ -227,7 +227,7 @@ module Fastlane
227
227
 
228
228
  def self.deprecated_notes
229
229
  "You are using legacy `shenzhen` to build your app, which will be removed soon!\n" \
230
- "It is recommended to upgrade to `gym`\n" \
230
+ "It is recommended to upgrade to _gym_\n" \
231
231
  "To do so, just replace `ipa(...)` with `gym(...)` in your Fastfile\n" \
232
232
  "To make code signing work, follow https://docs.fastlane.tools/codesigning/xcode-project/#"
233
233
  end
@@ -18,6 +18,7 @@ module Fastlane
18
18
  sonar_scanner_args << "-Dsonar.sources=\"#{params[:sources_path]}\"" if params[:sources_path]
19
19
  sonar_scanner_args << "-Dsonar.language=\"#{params[:project_language]}\"" if params[:project_language]
20
20
  sonar_scanner_args << "-Dsonar.sourceEncoding=\"#{params[:source_encoding]}\"" if params[:source_encoding]
21
+ sonar_scanner_args << "-Dsonar.login=\"#{params[:sonar_login]}\"" if params[:sonar_login]
21
22
  sonar_scanner_args << params[:sonar_runner_args] if params[:sonar_runner_args]
22
23
 
23
24
  command = [
@@ -25,8 +26,8 @@ module Fastlane
25
26
  'sonar-scanner',
26
27
  sonar_scanner_args
27
28
  ].join(' ')
28
-
29
- Action.sh command
29
+ # hide command, as it may contain credentials
30
+ Fastlane::Actions.sh_control_output(command, print_command: false, print_command_output: true)
30
31
  end
31
32
 
32
33
  def self.verify_sonar_scanner_binary
@@ -84,7 +85,13 @@ module Fastlane
84
85
  FastlaneCore::ConfigItem.new(key: :sonar_runner_args,
85
86
  env_name: "FL_SONAR_RUNNER_ARGS",
86
87
  description: "Pass additional arguments to sonar-scanner. Be sure to provide the arguments with a leading `-D` e.g. FL_SONAR_RUNNER_ARGS=\"-Dsonar.verbose=true\"",
87
- optional: true)
88
+ optional: true),
89
+ FastlaneCore::ConfigItem.new(key: :sonar_login,
90
+ env_name: "FL_SONAR_LOGIN",
91
+ description: "Pass the Sonar Login token (e.g: xxxxxxprivate_token_XXXXbXX7e)",
92
+ optional: true,
93
+ is_string: true,
94
+ sensitive: true)
88
95
  ]
89
96
  end
90
97
 
@@ -78,7 +78,7 @@ module Fastlane
78
78
 
79
79
  def self.details
80
80
  [
81
- "You should check out the code signing gide before using this action: https://github.com/fastlane/fastlane/tree/master/fastlane/docs/Codesigning",
81
+ "You should check out the code signing gide before using this action: https://docs.fastlane.tools/codesigning/getting-started/",
82
82
  "This action retrieves a provisioning profile UUID from a provisioning profile (.mobileprovision) to set",
83
83
  "up the xcode projects' code signing settings in *.xcodeproj/project.pbxproj",
84
84
  "The `target_filter` value can be used to only update code signing for specified targets",
@@ -29,6 +29,7 @@ module Fastlane
29
29
  destination_timeout: "-destination-timeout",
30
30
  dry_run: "-dry-run",
31
31
  enableAddressSanitizer: "-enableAddressSanitizer",
32
+ enableThreadSanitizer: "-enableThreadSanitizer",
32
33
  enableCodeCoverage: "-enableCodeCoverage",
33
34
  export_archive: "-exportArchive",
34
35
  export_format: "-exportFormat",
@@ -98,11 +99,15 @@ module Fastlane
98
99
  # By default we use xcpretty
99
100
  raw_buildlog = false
100
101
 
102
+ # By default we don't pass the utf flag
103
+ xcpretty_utf = false
104
+
101
105
  if params
102
106
  # Operation bools
103
107
  archiving = params.key? :archive
104
108
  exporting = params.key? :export_archive
105
109
  testing = params.key? :test
110
+ xcpretty_utf = params[:xcpretty_utf]
106
111
 
107
112
  if params.key? :raw_buildlog
108
113
  raw_buildlog = params[:raw_buildlog]
@@ -147,6 +152,9 @@ module Fastlane
147
152
  if params.key? :enable_address_sanitizer
148
153
  params[:enableAddressSanitizer] = params[:enable_address_sanitizer] ? 'YES' : 'NO'
149
154
  end
155
+ if params.key? :enable_thread_sanitizer
156
+ params[:enableThreadSanitizer] = params[:enable_thread_sanitizer] ? 'YES' : 'NO'
157
+ end
150
158
  if params.key? :enable_code_coverage
151
159
  params[:enableCodeCoverage] = params[:enable_code_coverage] ? 'YES' : 'NO'
152
160
  end
@@ -248,6 +256,9 @@ module Fastlane
248
256
 
249
257
  xcpretty_command = ""
250
258
  xcpretty_command = "| xcpretty #{xcpretty_args}" unless raw_buildlog
259
+ unless raw_buildlog
260
+ xcpretty_command = "#{xcpretty_command} --utf" if xcpretty_utf
261
+ end
251
262
 
252
263
  pipe_command = "| tee '#{buildlog_path}/xcodebuild.log' #{xcpretty_command}"
253
264
 
@@ -365,7 +376,8 @@ module Fastlane
365
376
  ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
366
377
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
367
378
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
368
- ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\'']
379
+ ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
380
+ ['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
369
381
  ]
370
382
  end
371
383
 
@@ -417,7 +429,8 @@ module Fastlane
417
429
  ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
418
430
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
419
431
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
420
- ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\'']
432
+ ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
433
+ ['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
421
434
  ]
422
435
  end
423
436
  end
@@ -462,7 +475,8 @@ module Fastlane
462
475
  ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
463
476
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
464
477
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
465
- ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\'']
478
+ ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
479
+ ['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
466
480
  ]
467
481
  end
468
482
  end
@@ -507,7 +521,8 @@ module Fastlane
507
521
  ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
508
522
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
509
523
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
510
- ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\'']
524
+ ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
525
+ ['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
511
526
  ]
512
527
  end
513
528
  end
@@ -548,7 +563,8 @@ module Fastlane
548
563
  ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
549
564
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
550
565
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
551
- ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\'']
566
+ ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
567
+ ['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
552
568
  ]
553
569
  end
554
570
 
@@ -597,7 +613,8 @@ module Fastlane
597
613
  ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
598
614
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
599
615
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
600
- ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\'']
616
+ ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
617
+ ['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
601
618
  ]
602
619
  end
603
620
 
@@ -37,7 +37,7 @@ module Fastlane
37
37
 
38
38
  output << "This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run."
39
39
  output << "More information about fastlane can be found on [https://fastlane.tools](https://fastlane.tools)."
40
- output << "The documentation of fastlane can be found on [GitHub](https://github.com/fastlane/fastlane/tree/master/fastlane)."
40
+ output << "The documentation of fastlane can be found on [https://docs.fastlane.tools](https://docs.fastlane.tools)."
41
41
  output << ""
42
42
 
43
43
  File.write(output_path, output.join("\n"))
@@ -50,9 +50,9 @@ module Fastlane
50
50
  # is this always clear and safe to declare any local variables we want, because the eval function uses the instance scope
51
51
  # instead of local.
52
52
 
53
- # rubocop:disable Lint/Eval
53
+ # rubocop:disable Security/Eval
54
54
  eval(data, parsing_binding, relative_path) # using eval is ok for this case
55
- # rubocop:enable Lint/Eval
55
+ # rubocop:enable Security/Eval
56
56
  rescue SyntaxError => ex
57
57
  line = ex.to_s.match(/#{Regexp.escape(relative_path)}:(\d+)/)[1]
58
58
  UI.user_error!("Syntax error in your Fastfile on line #{line}: #{ex}")
@@ -162,8 +162,11 @@ module Fastlane
162
162
  end
163
163
 
164
164
  def self.load_dot_env(env)
165
- # search for dotenvs in either fastlane or the current dir
166
- search_paths = [FastlaneCore::FastlaneFolder.path, '.'].compact
165
+ # find the first directory of [fastlane, its parent] containing dotenv files
166
+ path = FastlaneCore::FastlaneFolder.path
167
+ search_paths = [path]
168
+ search_paths << path + "/.." unless path.nil?
169
+ search_paths.compact!
167
170
  base_path = search_paths.find do |dir|
168
171
  Dir.glob(File.join(dir, '*.env*'), File::FNM_DOTMATCH).count > 0
169
172
  end
@@ -1,3 +1,5 @@
1
+ require "fastlane/cli_tools_distributor"
2
+
1
3
  module Fastlane
2
4
  class PluginManager
3
5
  require "bundler"
@@ -153,7 +153,7 @@ module Fastlane
153
153
  else
154
154
  # So there is no plugin under that name, so just show the error message generated by the lane switch
155
155
  UI.verbose(caller.join("\n"))
156
- UI.user_error!("Could not find action or lane '#{method_sym}'. Check out the README for more details: https://github.com/fastlane/fastlane/tree/master/fastlane")
156
+ UI.user_error!("Could not find action, lane or variable '#{method_sym}'. Check out the documentation for more details: https://docs.fastlane.tools/actions")
157
157
  end
158
158
  end
159
159
  end
@@ -1,4 +1,4 @@
1
1
  module Fastlane
2
- VERSION = '2.9.0'.freeze
2
+ VERSION = '2.10.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  end
@@ -26,7 +26,7 @@ module FastlaneCore
26
26
  "You can run `security find-identity -v -p codesigning` to get this output.",
27
27
  "This Stack Overflow thread has more information: https://stackoverflow.com/q/35390072/774.",
28
28
  "(Check in Keychain Access for an expired WWDR certificate: https://stackoverflow.com/a/35409835/774 has more info.)"
29
- ].join(' '))
29
+ ].join("\n"))
30
30
  end
31
31
 
32
32
  ids = []
@@ -21,9 +21,9 @@ module FastlaneCore
21
21
  end
22
22
 
23
23
  begin
24
- # rubocop:disable Lint/Eval
24
+ # rubocop:disable Security/Eval
25
25
  eval(content) # this is okay in this case
26
- # rubocop:enable Lint/Eval
26
+ # rubocop:enable Security/Eval
27
27
 
28
28
  print_resulting_config_values(path) # only on success
29
29
  rescue SyntaxError => ex
@@ -10,6 +10,12 @@ module FastlaneCore
10
10
  options = {}
11
11
  unless config.nil?
12
12
  if config.kind_of?(FastlaneCore::Configuration)
13
+ # find sensitive options and mask them by default
14
+ config.available_options.each do |config_item|
15
+ if config_item.sensitive
16
+ mask_keys << config_item.key.to_s
17
+ end
18
+ end
13
19
  options = config.values(ask: false)
14
20
  else
15
21
  options = config
@@ -8,7 +8,7 @@ module Frameit
8
8
  result = {}
9
9
 
10
10
  # A .strings file is UTF-16 encoded. We only want to deal with UTF-8
11
- content = `iconv -f UTF-16 -t UTF-8 '#{path}'`
11
+ content = `iconv -f UTF-16 -t UTF-8 '#{path}' 2>&1`
12
12
 
13
13
  content.split("\n").each_with_index do |line, index|
14
14
  begin