fastlane 1.20.0 → 1.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/bin/fastlane +16 -16
  3. data/lib/assets/custom_action_template.rb +2 -2
  4. data/lib/fastlane.rb +1 -0
  5. data/lib/fastlane/action.rb +5 -6
  6. data/lib/fastlane/action_collector.rb +6 -6
  7. data/lib/fastlane/actions/actions_helper.rb +12 -74
  8. data/lib/fastlane/actions/add_git_tag.rb +2 -2
  9. data/lib/fastlane/actions/appstore.rb +2 -2
  10. data/lib/fastlane/actions/backup_file.rb +2 -2
  11. data/lib/fastlane/actions/backup_xcarchive.rb +11 -12
  12. data/lib/fastlane/actions/bundle_install.rb +5 -1
  13. data/lib/fastlane/actions/chatwork.rb +12 -12
  14. data/lib/fastlane/actions/clean_build_artifacts.rb +4 -6
  15. data/lib/fastlane/actions/clipboard.rb +1 -1
  16. data/lib/fastlane/actions/commit_version_bump.rb +35 -10
  17. data/lib/fastlane/actions/crashlytics.rb +26 -26
  18. data/lib/fastlane/actions/create_keychain.rb +6 -6
  19. data/lib/fastlane/actions/default_platform.rb +1 -1
  20. data/lib/fastlane/actions/delete_keychain.rb +3 -3
  21. data/lib/fastlane/actions/deliver.rb +3 -3
  22. data/lib/fastlane/actions/deploygate.rb +19 -18
  23. data/lib/fastlane/actions/dsym_zip.rb +7 -9
  24. data/lib/fastlane/actions/ensure_git_branch.rb +2 -3
  25. data/lib/fastlane/actions/ensure_no_debug_code.rb +8 -8
  26. data/lib/fastlane/actions/fastlane_version.rb +4 -2
  27. data/lib/fastlane/actions/frameit.rb +7 -7
  28. data/lib/fastlane/actions/gcovr.rb +5 -4
  29. data/lib/fastlane/actions/get_build_number.rb +27 -30
  30. data/lib/fastlane/actions/get_github_release.rb +11 -11
  31. data/lib/fastlane/actions/get_version_number.rb +28 -30
  32. data/lib/fastlane/actions/git_branch.rb +1 -2
  33. data/lib/fastlane/actions/gym.rb +2 -2
  34. data/lib/fastlane/actions/hg_commit_version_bump.rb +28 -6
  35. data/lib/fastlane/actions/hg_push.rb +0 -1
  36. data/lib/fastlane/actions/hipchat.rb +20 -20
  37. data/lib/fastlane/actions/hockey.rb +16 -17
  38. data/lib/fastlane/actions/import.rb +1 -2
  39. data/lib/fastlane/actions/import_certificate.rb +1 -1
  40. data/lib/fastlane/actions/import_from_git.rb +6 -2
  41. data/lib/fastlane/actions/increment_build_number.rb +25 -28
  42. data/lib/fastlane/actions/increment_version_number.rb +55 -57
  43. data/lib/fastlane/actions/install_carthage.rb +10 -11
  44. data/lib/fastlane/actions/install_cocoapods.rb +3 -3
  45. data/lib/fastlane/actions/ipa.rb +8 -6
  46. data/lib/fastlane/actions/is_ci.rb +37 -0
  47. data/lib/fastlane/actions/lane_context.rb +2 -2
  48. data/lib/fastlane/actions/last_git_tag.rb +1 -1
  49. data/lib/fastlane/actions/lcov.rb +28 -31
  50. data/lib/fastlane/actions/mailgun.rb +11 -42
  51. data/lib/fastlane/actions/oclint.rb +10 -13
  52. data/lib/fastlane/actions/pem.rb +2 -2
  53. data/lib/fastlane/actions/pilot.rb +4 -2
  54. data/lib/fastlane/actions/prompt.rb +6 -6
  55. data/lib/fastlane/actions/push_git_tags.rb +38 -0
  56. data/lib/fastlane/actions/push_to_git_remote.rb +4 -1
  57. data/lib/fastlane/actions/puts.rb +1 -1
  58. data/lib/fastlane/actions/register_devices.rb +4 -3
  59. data/lib/fastlane/actions/reset_git_repo.rb +6 -6
  60. data/lib/fastlane/actions/resign.rb +4 -5
  61. data/lib/fastlane/actions/restore_file.rb +2 -2
  62. data/lib/fastlane/actions/s3.rb +19 -22
  63. data/lib/fastlane/actions/set_build_number_repository.rb +26 -36
  64. data/lib/fastlane/actions/set_changelog.rb +4 -4
  65. data/lib/fastlane/actions/set_github_release.rb +10 -11
  66. data/lib/fastlane/actions/sigh.rb +1 -1
  67. data/lib/fastlane/actions/slack.rb +85 -74
  68. data/lib/fastlane/actions/snapshot.rb +2 -2
  69. data/lib/fastlane/actions/team_id.rb +2 -1
  70. data/lib/fastlane/actions/team_name.rb +2 -1
  71. data/lib/fastlane/actions/testflight.rb +2 -2
  72. data/lib/fastlane/actions/testmunk.rb +16 -16
  73. data/lib/fastlane/actions/typetalk.rb +14 -14
  74. data/lib/fastlane/actions/update_app_group_identifiers.rb +17 -17
  75. data/lib/fastlane/actions/update_fastlane.rb +16 -14
  76. data/lib/fastlane/actions/update_info_plist.rb +14 -16
  77. data/lib/fastlane/actions/update_project_code_signing.rb +3 -3
  78. data/lib/fastlane/actions/update_project_provisioning.rb +48 -36
  79. data/lib/fastlane/actions/xcode_select.rb +4 -3
  80. data/lib/fastlane/actions/xcode_server_get_assets.rb +23 -24
  81. data/lib/fastlane/actions/xcodebuild.rb +13 -13
  82. data/lib/fastlane/actions/xctool.rb +2 -2
  83. data/lib/fastlane/actions_list.rb +27 -29
  84. data/lib/fastlane/command_line_handler.rb +13 -14
  85. data/lib/fastlane/configuration_helper.rb +18 -20
  86. data/lib/fastlane/core_ext/string.rb +2 -2
  87. data/lib/fastlane/docs_generator.rb +33 -32
  88. data/lib/fastlane/erb_template_helper.rb +1 -1
  89. data/lib/fastlane/fast_file.rb +27 -18
  90. data/lib/fastlane/fastlane_folder.rb +1 -1
  91. data/lib/fastlane/helper/git_helper.rb +27 -0
  92. data/lib/fastlane/helper/sh_helper.rb +48 -0
  93. data/lib/fastlane/junit_generator.rb +1 -1
  94. data/lib/fastlane/lane.rb +6 -6
  95. data/lib/fastlane/lane_list.rb +12 -13
  96. data/lib/fastlane/lane_manager.rb +17 -11
  97. data/lib/fastlane/new_action.rb +1 -1
  98. data/lib/fastlane/runner.rb +23 -24
  99. data/lib/fastlane/setup.rb +16 -17
  100. data/lib/fastlane/supported_platforms.rb +2 -2
  101. data/lib/fastlane/version.rb +1 -1
  102. metadata +16 -12
@@ -4,7 +4,7 @@ module Fastlane
4
4
  def self.run(params)
5
5
  cmd = []
6
6
 
7
- cmd << ['bundle exec'] if File.exists?('Gemfile') && params[:use_bundle_exec]
7
+ cmd << ['bundle exec'] if File.exist?('Gemfile') && params[:use_bundle_exec]
8
8
  cmd << ['pod install']
9
9
 
10
10
  cmd << '--no-clean' unless params[:clean]
@@ -51,12 +51,12 @@ module Fastlane
51
51
  env_name: "FL_COCOAPODS_USE_BUNDLE_EXEC",
52
52
  description: "Use bundle exec when there is a Gemfile presented",
53
53
  is_string: false,
54
- default_value: true),
54
+ default_value: true)
55
55
  ]
56
56
  end
57
57
 
58
58
  def self.is_supported?(platform)
59
- [:ios, :mac].include?platform
59
+ [:ios, :mac].include? platform
60
60
  end
61
61
 
62
62
  def self.authors
@@ -1,3 +1,5 @@
1
+ # rubocop:disable Lint/AssignmentInCondition
2
+ # rubocop:disable Style/Next
1
3
  module Fastlane
2
4
  module Actions
3
5
  ARGS_MAP = {
@@ -23,9 +25,6 @@ module Fastlane
23
25
  end
24
26
 
25
27
  def self.run(params)
26
- # The args we will build with
27
- build_args = nil
28
-
29
28
  # The output directory of the IPA and dSYM
30
29
  absolute_dest_directory = nil
31
30
 
@@ -34,10 +33,11 @@ module Fastlane
34
33
  absolute_dest_directory = File.expand_path(dest)
35
34
  end
36
35
 
36
+ # The args we will build with
37
37
  # Maps nice developer build parameters to Shenzhen args
38
38
  build_args = params_to_build_args(params)
39
39
 
40
- unless (params[:scheme] rescue nil)
40
+ unless params[:scheme]
41
41
  Helper.log.warn "You haven't specified a scheme. This might cause problems. If you can't see any output, please pass a `scheme`"
42
42
  end
43
43
 
@@ -101,7 +101,7 @@ module Fastlane
101
101
  # Maps nice developer param names to Shenzhen's `ipa build` arguments
102
102
  params.collect do |k, v|
103
103
  v ||= ''
104
- if args = ARGS_MAP[k]
104
+ if ARGS_MAP[k]
105
105
  if k == :clean
106
106
  v == true ? '--clean' : '--no-clean'
107
107
  elsif k == :archive
@@ -196,7 +196,7 @@ module Fastlane
196
196
  FastlaneCore::ConfigItem.new(key: :xcargs,
197
197
  env_name: "IPA_XCARGS",
198
198
  description: "Pass additional arguments to xcodebuild when building the app. Be sure to quote multiple args",
199
- optional: true),
199
+ optional: true)
200
200
  ]
201
201
  end
202
202
 
@@ -213,3 +213,5 @@ module Fastlane
213
213
  end
214
214
  end
215
215
  end
216
+ # rubocop:enable Lint/AssignmentInCondition
217
+ # rubocop:enable Style/Next
@@ -0,0 +1,37 @@
1
+ module Fastlane
2
+ module Actions
3
+ class IsCiAction < Action
4
+ def self.run(params)
5
+ Helper.is_ci?
6
+ end
7
+
8
+ #####################################################
9
+ # @!group Documentation
10
+ #####################################################
11
+
12
+ def self.description
13
+ "Is the current run being executed on a CI system, like Jenkins or Travis"
14
+ end
15
+
16
+ def self.details
17
+ [
18
+ "The return value of this method is true if fastlane is currently executed on",
19
+ "Travis, Jenkins, Circle or a similar CI service"
20
+ ].join("\n")
21
+ end
22
+
23
+ def self.available_options
24
+ []
25
+ end
26
+
27
+ def self.authors
28
+ # So no one will ever forget your contribution to fastlane :) You are awesome btw!
29
+ ["KrauseFx"]
30
+ end
31
+
32
+ def self.is_supported?(platform)
33
+ true
34
+ end
35
+ end
36
+ end
37
+ end
@@ -21,7 +21,7 @@ module Fastlane
21
21
  []
22
22
  end
23
23
 
24
- def self.authors
24
+ def self.authors
25
25
  ["KrauseFx"]
26
26
  end
27
27
 
@@ -35,4 +35,4 @@ module Fastlane
35
35
  end
36
36
  end
37
37
  end
38
- end
38
+ end
@@ -30,4 +30,4 @@ module Fastlane
30
30
  end
31
31
  end
32
32
  end
33
- end
33
+ end
@@ -35,7 +35,6 @@ module Fastlane
35
35
  is_string: true,
36
36
  default_value: "coverage_reports")
37
37
 
38
-
39
38
  ]
40
39
  end
41
40
 
@@ -43,45 +42,43 @@ module Fastlane
43
42
  "thiagolioy"
44
43
  end
45
44
 
46
- private
47
-
48
- def self.gen_cov(options)
49
- tmp_cov_file = "/tmp/coverage.info"
50
- output_dir = options[:output_dir]
51
- derived_data_path = derived_data_dir(options)
45
+ def self.gen_cov(options)
46
+ tmp_cov_file = "/tmp/coverage.info"
47
+ output_dir = options[:output_dir]
48
+ derived_data_path = derived_data_dir(options)
52
49
 
53
- system("lcov --capture --directory \"#{derived_data_path}\" --output-file #{tmp_cov_file}")
54
- system(gen_lcov_cmd(tmp_cov_file))
55
- system("genhtml #{tmp_cov_file} --output-directory #{output_dir}")
56
- end
50
+ system("lcov --capture --directory \"#{derived_data_path}\" --output-file #{tmp_cov_file}")
51
+ system(gen_lcov_cmd(tmp_cov_file))
52
+ system("genhtml #{tmp_cov_file} --output-directory #{output_dir}")
53
+ end
57
54
 
58
- def self.gen_lcov_cmd(cov_file)
59
- cmd = "lcov "
60
- exclude_dirs.each do |e|
61
- cmd << "--remove #{cov_file} \"#{e}\" "
62
- end
63
- cmd << "--output #{cov_file} "
55
+ def self.gen_lcov_cmd(cov_file)
56
+ cmd = "lcov "
57
+ exclude_dirs.each do |e|
58
+ cmd << "--remove #{cov_file} \"#{e}\" "
64
59
  end
60
+ cmd << "--output #{cov_file} "
61
+ end
65
62
 
66
- def self.derived_data_dir(options)
67
- pn = options[:project_name]
68
- sc = options[:scheme]
63
+ def self.derived_data_dir(options)
64
+ pn = options[:project_name]
65
+ sc = options[:scheme]
69
66
 
70
- initial_path = "#{Dir.home}/Library/Developer/Xcode/DerivedData/"
71
- end_path = "/Build/Intermediates/#{pn}.build/Debug-iphonesimulator/#{sc}.build/Objects-normal/i386/"
67
+ initial_path = "#{Dir.home}/Library/Developer/Xcode/DerivedData/"
68
+ end_path = "/Build/Intermediates/#{pn}.build/Debug-iphonesimulator/#{sc}.build/Objects-normal/i386/"
72
69
 
73
- match = find_project_dir(pn,initial_path)
70
+ match = find_project_dir(pn, initial_path)
74
71
 
75
- "#{initial_path}#{match}#{end_path}"
76
- end
72
+ "#{initial_path}#{match}#{end_path}"
73
+ end
77
74
 
78
- def self.find_project_dir(project_name,path)
79
- `ls -t #{path}| grep #{project_name} | head -1`.to_s.gsub(/\n/, "")
80
- end
75
+ def self.find_project_dir(project_name, path)
76
+ `ls -t #{path}| grep #{project_name} | head -1`.to_s.gsub(/\n/, "")
77
+ end
81
78
 
82
- def self.exclude_dirs
83
- ["/Applications/*","/Frameworks/*"]
84
- end
79
+ def self.exclude_dirs
80
+ ["/Applications/*", "/Frameworks/*"]
81
+ end
85
82
 
86
83
  end
87
84
  end
@@ -11,7 +11,6 @@ module Fastlane
11
11
  def self.run(options)
12
12
  require 'rest_client'
13
13
  handle_params_transition(options)
14
- handle_exceptions(options)
15
14
  mailgunit(options)
16
15
  end
17
16
 
@@ -21,17 +20,17 @@ module Fastlane
21
20
 
22
21
  def self.available_options
23
22
  [
24
- #This is here just for while due to the transition, not needed anymore
23
+ # This is here just for while due to the transition, not needed anymore
25
24
  FastlaneCore::ConfigItem.new(key: :mailgun_sandbox_domain,
26
25
  env_name: "MAILGUN_SANDBOX_POSTMASTER",
27
26
  optional: true,
28
27
  description: "Mailgun sandbox domain postmaster for your mail. Please use postmaster instead"),
29
- #This is here just for while due to the transition, should use postmaster instead
28
+ # This is here just for while due to the transition, should use postmaster instead
30
29
  FastlaneCore::ConfigItem.new(key: :mailgun_sandbox_postmaster,
31
30
  env_name: "MAILGUN_SANDBOX_POSTMASTER",
32
31
  optional: true,
33
32
  description: "Mailgun sandbox domain postmaster for your mail. Please use postmaster instead"),
34
- #This is here just for while due to the transition, should use apikey instead
33
+ # This is here just for while due to the transition, should use apikey instead
35
34
  FastlaneCore::ConfigItem.new(key: :mailgun_apikey,
36
35
  env_name: "MAILGUN_APIKEY",
37
36
  optional: true,
@@ -72,7 +71,6 @@ module Fastlane
72
71
  optional: true,
73
72
  is_string: true)
74
73
 
75
-
76
74
  ]
77
75
  end
78
76
 
@@ -80,53 +78,24 @@ module Fastlane
80
78
  "thiagolioy"
81
79
  end
82
80
 
83
- private
84
81
  def self.handle_params_transition(options)
85
- options[:postmaster] = options[:mailgun_sandbox_postmaster] if options[:mailgun_sandbox_postmaster]
86
- puts "\nUsing :mailgun_sandbox_postmaster is deprecated, please change to :postmaster".yellow
87
-
88
- options[:apikey] = options[:mailgun_apikey] if options[:mailgun_apikey]
89
- puts "\nUsing :mailgun_apikey is deprecated, please change to :apikey".yellow
90
- end
91
-
92
- def self.handle_exceptions(options)
93
- unless (options[:apikey] rescue nil)
94
- Helper.log.fatal "Please add 'ENV[\"MAILGUN_APIKEY\"] = \"a_valid_mailgun_apikey\"' to your Fastfile's `before_all` section.".red
95
- raise 'No MAILGUN_APIKEY given.'.red
96
- end
82
+ options[:postmaster] = options[:mailgun_sandbox_postmaster] if options[:mailgun_sandbox_postmaster]
83
+ puts "\nUsing :mailgun_sandbox_postmaster is deprecated, please change to :postmaster".yellow
97
84
 
98
- unless (options[:postmaster] rescue nil)
99
- Helper.log.fatal "Please add 'ENV[\"MAILGUN_SANDBOX_POSTMASTER\"] = \"a_valid_mailgun_sandbox_postmaster\"' to your Fastfile's `before_all` section.".red
100
- raise 'No MAILGUN_SANDBOX_POSTMASTER given.'.red
101
- end
102
-
103
- unless (options[:to] rescue nil)
104
- Helper.log.fatal "Please provide a valid :to = \"a_valid_mailgun_to\"".red
105
- raise 'No MAILGUN_TO given.'.red
106
- end
107
-
108
- unless (options[:message] rescue nil)
109
- Helper.log.fatal "Please provide a valid :message = \"a_valid_mailgun_text\"".red
110
- raise 'No MAILGUN_MESSAGE given.'.red
111
- end
112
-
113
- unless (options[:app_link] rescue nil)
114
- Helper.log.fatal "Please provide a valid :app_link = \"a_valid_mailgun_app_link\"".red
115
- raise 'No MAILGUN_APP_LINK given.'.red
116
- end
85
+ options[:apikey] = options[:mailgun_apikey] if options[:mailgun_apikey]
86
+ puts "\nUsing :mailgun_apikey is deprecated, please change to :apikey".yellow
117
87
  end
118
88
 
119
89
  def self.mailgunit(options)
120
90
  sandbox_domain = options[:postmaster].split("@").last
121
91
  RestClient.post "https://api:#{options[:apikey]}@api.mailgun.net/v3/#{sandbox_domain}/messages",
122
- from: "Mailgun Sandbox<#{options[:postmaster]}>",
123
- to: "#{options[:to]}",
124
- subject: options[:subject],
125
- html: mail_teplate(options)
92
+ from: "Mailgun Sandbox<#{options[:postmaster]}>",
93
+ to: "#{options[:to]}",
94
+ subject: options[:subject],
95
+ html: mail_teplate(options)
126
96
  mail_teplate(options)
127
97
  end
128
98
 
129
-
130
99
  def self.mail_teplate(options)
131
100
  hash = {
132
101
  author: Actions.git_author,
@@ -6,17 +6,16 @@ module Fastlane
6
6
 
7
7
  class OclintAction < Action
8
8
  def self.run(params)
9
-
10
9
  select_reqex = params[:select_reqex]
11
-
10
+
12
11
  compile_commands = params[:compile_commands]
13
- raise "Could not find json compilation database at path '#{compile_commands}'".red unless File.exists?(compile_commands)
14
-
12
+ raise "Could not find json compilation database at path '#{compile_commands}'".red unless File.exist?(compile_commands)
13
+
15
14
  files = JSON.parse(File.read(compile_commands)).map { |compile_command| compile_command['file'] }
16
15
  files.uniq!
17
16
  files.select! do |file|
18
17
  file_ruby = file.gsub('\ ', ' ')
19
- File.exists?(file_ruby) and (!select_reqex or file_ruby =~ select_reqex)
18
+ File.exist?(file_ruby) and (!select_reqex or file_ruby =~ select_reqex)
20
19
  end
21
20
 
22
21
  command_prefix = [
@@ -24,30 +23,28 @@ module Fastlane
24
23
  File.expand_path('.').shellescape,
25
24
  '&&'
26
25
  ].join(' ')
27
-
26
+
28
27
  report_type = params[:report_type]
29
28
  report_path = params[:report_path] ? params[:report_path] : 'oclint_report.' + report_type
30
-
29
+
31
30
  oclint_args = ["-report-type=#{report_type}", "-o=#{report_path}"]
32
31
  oclint_args << "-rc=#{params[:rc]}" if params[:rc]
33
32
  oclint_args << "-max-priority-1=#{params[:max_priority_1]}" if params[:max_priority_1]
34
33
  oclint_args << "-max-priority-2=#{params[:max_priority_2]}" if params[:max_priority_2]
35
34
  oclint_args << "-max-priority-3=#{params[:max_priority_3]}" if params[:max_priority_3]
36
-
35
+
37
36
  command = [
38
37
  command_prefix,
39
38
  'oclint',
40
39
  oclint_args,
41
40
  '"' + files.join('" "') + '"'
42
41
  ].join(' ')
43
-
42
+
44
43
  Action.sh command
45
44
 
46
45
  Actions.lane_context[SharedValues::FL_OCLINT_REPORT_PATH] = File.expand_path(report_path)
47
46
  end
48
47
 
49
-
50
-
51
48
  #####################################################
52
49
  # @!group Documentation
53
50
  #####################################################
@@ -108,10 +105,10 @@ module Fastlane
108
105
  def self.author
109
106
  'HeEAaD'
110
107
  end
111
-
108
+
112
109
  def self.is_supported?(platform)
113
110
  true
114
111
  end
115
112
  end
116
113
  end
117
- end
114
+ end
@@ -41,7 +41,7 @@ module Fastlane
41
41
  "profile was created. You can use it to upload the new profile to your server.",
42
42
  "Use it like this: ",
43
43
  "pem(",
44
- " new_profile: Proc.new do ",
44
+ " new_profile: proc do ",
45
45
  " # your upload code",
46
46
  " end",
47
47
  ")"
@@ -55,7 +55,7 @@ module Fastlane
55
55
  unless @options
56
56
  @options = PEM::Options.available_options
57
57
  @options << FastlaneCore::ConfigItem.new(key: :new_profile,
58
- description: "Block that is called if there is a new profile",
58
+ description: "Block that is called if there is a new profile",
59
59
  optional: true,
60
60
  is_string: false)
61
61
  end
@@ -7,7 +7,9 @@ module Fastlane
7
7
 
8
8
  begin
9
9
  FastlaneCore::UpdateChecker.start_looking_for_update('pilot') unless Helper.is_test?
10
-
10
+
11
+ values[:ipa] ||= Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
12
+
11
13
  Pilot::BuildManager.new.upload(values) # we already have the finished config
12
14
 
13
15
  return nil
@@ -46,4 +48,4 @@ module Fastlane
46
48
  end
47
49
  end
48
50
  end
49
- end
51
+ end
@@ -7,14 +7,14 @@ module Fastlane
7
7
 
8
8
  return params[:ci_input] if Helper.is_ci?
9
9
 
10
- unless params[:multi_line_end_keyword]
11
- # Standard one line input
12
- user_input = STDIN.gets.chomp.strip
13
- else
10
+ if params[:multi_line_end_keyword]
14
11
  # Multi line
15
12
  end_tag = params[:multi_line_end_keyword]
16
13
  Helper.log.info "Submit inputs using \"#{params[:multi_line_end_keyword]}\"".yellow
17
14
  user_input = STDIN.gets(end_tag).chomp.gsub(end_tag, "").strip
15
+ else
16
+ # Standard one line input
17
+ user_input = STDIN.gets.chomp.strip
18
18
  end
19
19
 
20
20
  user_input = (user_input.downcase == 'y') if params[:boolean]
@@ -52,7 +52,7 @@ module Fastlane
52
52
  FastlaneCore::ConfigItem.new(key: :multi_line_end_keyword,
53
53
  description: "Enable multi-line inputs by providing an end text (e.g. 'END') which will stop the user input",
54
54
  optional: true,
55
- is_string: true),
55
+ is_string: true)
56
56
  ]
57
57
  end
58
58
 
@@ -69,4 +69,4 @@ module Fastlane
69
69
  end
70
70
  end
71
71
  end
72
- end
72
+ end