fastlane 2.9.0 → 2.10.0

Sign up to get free protection for your applications and to get access to all the features.
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