fastlane 1.54.0 → 1.55.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e399f18fe597e4af18b30146d6a08861b66a516f
4
- data.tar.gz: 65b6efcc8adb04b6581c7f6132bfe038759e65f1
3
+ metadata.gz: 3c200c5252f8bc038684486acc4fc150641e7415
4
+ data.tar.gz: b9edb3fea861901eec93c3c3bc671331eb13ed44
5
5
  SHA512:
6
- metadata.gz: d5d83d2dff319a35675a34b716c148ba6282d92cfafd6a3557d800072a173106c52c9ad30ed94069fba1e8b9b311d3e8e9e5384d79fd282306a6aef1c4e853af
7
- data.tar.gz: 4beedd951ea16130220fb40437db2661d5aa05641dacee5ed16e8e8947a7bd7a13498a9793be62c79388c67d687f843e94b53e89bf70482faa9d3426c3f2ee9a
6
+ metadata.gz: fcb78aebffb9323e2aa0c331045a3a5f4060594edee9cb0addd5872059109ccc64b606f6e9bf8780a907523391d502261c1d623de8ae3ea1555e660e00a937de
7
+ data.tar.gz: 30fda1ffef12f77d605cb1af103201aa352edeafe7d4b030577a5b225c1003dbeff6a7697cae8f62288a1608bfdc65975f1d986ddfbe30dd64951df3ab72664a
data/README.md CHANGED
@@ -187,6 +187,7 @@ Please submit an issue on GitHub and provide information about your setup
187
187
  Thanks to all [contributors](https://github.com/fastlane/fastlane/graphs/contributors) for extending and improving `fastlane`. Check out the project pages of the other tools for more sponsors and contributors.
188
188
 
189
189
  ## Code of Conduct
190
+
190
191
  Help us keep `fastlane` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/code-of-conduct).
191
192
 
192
193
  ## License
@@ -11,6 +11,7 @@ HighLine.track_eof = false
11
11
 
12
12
  class FastlaneApplication
13
13
  include Commander::Methods
14
+ UI = FastlaneCore::UI
14
15
 
15
16
  def run
16
17
  program :version, Fastlane::VERSION
@@ -76,11 +77,11 @@ class FastlaneApplication
76
77
  c.description = 'Lists all available lanes without description'
77
78
  c.action do |args, options|
78
79
  ff = Fastlane::FastFile.new(File.join(Fastlane::FastlaneFolder.path || '.', 'Fastfile'))
79
- puts "\nAvailable lanes:".green
80
+ UI.message "Available lanes:"
80
81
  ff.runner.available_lanes.each do |lane|
81
- puts "- #{lane}"
82
+ UI.message "- #{lane}"
82
83
  end
83
- puts "\nExecute using `fastlane [lane_name]`".yellow
84
+ UI.important "Execute using `fastlane [lane_name]`"
84
85
  end
85
86
  end
86
87
 
@@ -103,7 +104,7 @@ class FastlaneApplication
103
104
  c.action do |args, options|
104
105
  require 'fastlane/one_off'
105
106
  result = Fastlane::OneOff.execute(args: args)
106
- puts "Result: #{result}".green if result
107
+ UI.success "Result: #{result}" if result
107
108
  end
108
109
  end
109
110
 
@@ -153,8 +154,6 @@ end
153
154
  begin
154
155
  FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
155
156
  FastlaneApplication.new.run
156
- rescue => ex
157
- FastlaneCore::CrashReporting.handle_crash(ex)
158
157
  ensure
159
158
  FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
160
159
  end
@@ -13,7 +13,7 @@ module Fastlane
13
13
  class [[NAME_CLASS]] < Action
14
14
  def self.run(params)
15
15
  # fastlane will take care of reading in the parameter and fetching the environment variable:
16
- Helper.log.info "Parameter API Token: #{params[:api_token]}"
16
+ UI.message "Parameter API Token: #{params[:api_token]}"
17
17
 
18
18
  # sh "shellcommand ./path"
19
19
 
@@ -2,7 +2,6 @@ require 'fastlane/core_ext/string' # this has to be above most of the other requ
2
2
  require 'fastlane/version'
3
3
  require 'fastlane/actions/actions_helper' # has to be before fast_file
4
4
  require 'fastlane/fast_file'
5
- require 'fastlane/dependency_checker'
6
5
  require 'fastlane/runner'
7
6
  require 'fastlane/setup/setup'
8
7
  require 'fastlane/lane'
@@ -20,12 +20,12 @@ module Fastlane
20
20
  def did_finish
21
21
  return if ENV["FASTLANE_OPT_OUT_USAGE"]
22
22
  if !did_show_message? and !Helper.is_ci?
23
- Helper.log.debug("Sending Crash/Success information. More information on: https://github.com/fastlane/enhancer")
24
- Helper.log.debug("No personal/sensitive data is sent. Only sharing the following:")
25
- Helper.log.debug(launches)
26
- Helper.log.debug(@error) if @error
27
- Helper.log.debug("This information is used to fix failing actions and improve integrations that are often used.")
28
- Helper.log.debug("You can disable this by adding `opt_out_usage` to your Fastfile")
23
+ UI.message("Sending Crash/Success information. More information on: https://github.com/fastlane/enhancer")
24
+ UI.message("No personal/sensitive data is sent. Only sharing the following:")
25
+ UI.message(launches)
26
+ UI.message(@error) if @error
27
+ UI.message("This information is used to fix failing actions and improve integrations that are often used.")
28
+ UI.message("You can disable this by adding `opt_out_usage` to your Fastfile")
29
29
  end
30
30
 
31
31
  require 'excon'
@@ -31,7 +31,7 @@ module Fastlane
31
31
  exc = nil
32
32
 
33
33
  begin
34
- Helper.log_alert("Step: " + step_name) if step_name
34
+ UI.header("Step: " + step_name) if step_name
35
35
  yield
36
36
  rescue => ex
37
37
  exc = ex
@@ -87,17 +87,17 @@ module Fastlane
87
87
  class_ref = Fastlane::Actions.const_get(class_name)
88
88
 
89
89
  if class_ref.respond_to?(:run)
90
- Helper.log.info "Successfully loaded custom action '#{file}'.".green
90
+ UI.success "Successfully loaded custom action '#{file}'."
91
91
  else
92
- Helper.log.error "Could not find method 'run' in class #{class_name}.".red
93
- Helper.log.error 'For more information, check out the docs: https://github.com/fastlane/fastlane'
94
- raise "Plugin '#{file_name}' is damaged!"
92
+ UI.error "Could not find method 'run' in class #{class_name}."
93
+ UI.error 'For more information, check out the docs: https://github.com/fastlane/fastlane'
94
+ UI.user_error!("Action '#{file_name}' is damaged!")
95
95
  end
96
96
  rescue NameError
97
97
  # Action not found
98
- Helper.log.error "Could not find '#{class_name}' class defined.".red
99
- Helper.log.error 'For more information, check out the docs: https://github.com/fastlane/fastlane'
100
- raise "Plugin '#{file_name}' is damaged!"
98
+ UI.error "Could not find '#{class_name}' class defined."
99
+ UI.error 'For more information, check out the docs: https://github.com/fastlane/fastlane'
100
+ UI.user_error!("Action '#{file_name}' is damaged!")
101
101
  end
102
102
  end
103
103
  end
@@ -7,7 +7,7 @@ module Fastlane
7
7
 
8
8
  tag = options[:tag] || "#{options[:grouping]}/#{lane_name}/#{options[:prefix]}#{options[:build_number]}"
9
9
 
10
- Helper.log.info "Adding git tag '#{tag}' 🎯."
10
+ UI.message "Adding git tag '#{tag}' 🎯."
11
11
  Actions.sh("git tag -am '#{tag} (fastlane)' '#{tag}'")
12
12
  end
13
13
 
@@ -143,9 +143,9 @@ module Fastlane
143
143
  })
144
144
  json_res = JSON.parse(response)
145
145
  if json_res['errors']
146
- Helper.log.info "App: #{json_res['errors']}".red
146
+ UI.error "App: #{json_res['errors']}"
147
147
  else
148
- Helper.log.info "Binary processing: Check your app': #{json_res['link']}".green
148
+ UI.success "Binary processing: Check your app': #{json_res['link']}"
149
149
  end
150
150
  end
151
151
 
@@ -172,7 +172,7 @@ module Fastlane
172
172
 
173
173
  def self.error_detected(errors)
174
174
  if errors
175
- Helper.log.info("ERROR: #{errors}".red)
175
+ UI.error("ERROR: #{errors}")
176
176
  true
177
177
  else
178
178
  false
@@ -180,7 +180,7 @@ module Fastlane
180
180
  end
181
181
 
182
182
  def self.warning_detected(warning)
183
- Helper.log.info("WARNING: #{warning}".yellow)
183
+ UI.important("WARNING: #{warning}")
184
184
  nil
185
185
  end
186
186
 
@@ -18,6 +18,10 @@ module Fastlane
18
18
  command << " --sources='#{sources}'"
19
19
  end
20
20
 
21
+ if params[:allow_warnings]
22
+ command << " --allow-warnings"
23
+ end
24
+
21
25
  result = Actions.sh("#{command}")
22
26
  Helper.log.info "Successfully pushed Podspec ⬆️ ".green
23
27
  return result
@@ -47,6 +51,10 @@ module Fastlane
47
51
  FastlaneCore::ConfigItem.new(key: :repo,
48
52
  description: "The repo you want to push. Pushes to Trunk by default",
49
53
  optional: true),
54
+ FastlaneCore::ConfigItem.new(key: :allow_warnings,
55
+ description: "Allow warnings during pod push",
56
+ optional: true,
57
+ is_string: false),
50
58
  FastlaneCore::ConfigItem.new(key: :sources,
51
59
  description: "The sources of repos you want the pod spec to lint with, separated by commas",
52
60
  optional: true,
@@ -89,7 +89,7 @@ module Fastlane
89
89
  end
90
90
 
91
91
  def self.authors
92
- ['pprochazka72, laugejepsen']
92
+ ['pprochazka72', 'laugejepsen']
93
93
  end
94
94
 
95
95
  def self.is_supported?(_platform)
@@ -2,7 +2,7 @@ module Fastlane
2
2
  module Actions
3
3
  class PutsAction < Action
4
4
  def self.run(params)
5
- Helper.log.info params.join(' ')
5
+ UI.message params.join(' ')
6
6
  end
7
7
 
8
8
  #####################################################
@@ -0,0 +1,73 @@
1
+ module Fastlane
2
+ module Actions
3
+ class TwitterAction < Action
4
+ def self.run(params)
5
+ Actions.verify_gem!("twitter")
6
+ require 'twitter'
7
+ client = Twitter::REST::Client.new do |config|
8
+ config.consumer_key = params[:consumer_key]
9
+ config.consumer_secret = params[:consumer_secret]
10
+ config.access_token = params[:access_token]
11
+ config.access_token_secret = params[:access_token_secret]
12
+ end
13
+ client.update(params[:message])
14
+ Helper.log.info ['[TWITTER]', "Successfully tweeted ", params[:message]].join(': ')
15
+ end
16
+
17
+ #####################################################
18
+ # @!group Documentation
19
+ #####################################################
20
+
21
+ def self.description
22
+ "Post on twitter"
23
+ end
24
+
25
+ def self.details
26
+ end
27
+
28
+ def self.available_options
29
+ [
30
+ FastlaneCore::ConfigItem.new(key: :consumer_key,
31
+ env_name: "FL_TW_CONSUMER_KEY",
32
+ description: "Consumer Key",
33
+ is_string: true,
34
+ optional: false
35
+ ),
36
+ FastlaneCore::ConfigItem.new(key: :consumer_secret,
37
+ env_name: "FL_TW_CONSUMER_SECRET",
38
+ description: "Consumer Secret",
39
+ is_string: true,
40
+ optional: false
41
+ ),
42
+ FastlaneCore::ConfigItem.new(key: :access_token,
43
+ env_name: "FL_TW_ACCESS_TOKEN",
44
+ description: "Access Token",
45
+ is_string: true,
46
+ optional: false
47
+ ),
48
+ FastlaneCore::ConfigItem.new(key: :access_token_secret,
49
+ env_name: "FL_TW_ACCESS_TOKEN_SECRET",
50
+ description: "Access Token Secret",
51
+ is_string: true,
52
+ optional: false
53
+ ),
54
+ FastlaneCore::ConfigItem.new(key: :message,
55
+ env_name: "FL_TW_MESSAGE",
56
+ description: "The tweet",
57
+ is_string: true,
58
+ optional: false
59
+ )
60
+
61
+ ]
62
+ end
63
+
64
+ def self.authors
65
+ ["hjanuschka"]
66
+ end
67
+
68
+ def self.is_supported?(platform)
69
+ true
70
+ end
71
+ end
72
+ end
73
+ end
@@ -37,7 +37,7 @@ module Fastlane
37
37
  if output.include?("source=Mac App Store") or output.include?("source=Apple") or output.include?("source=Apple System")
38
38
  Helper.log.info "Successfully verified Xcode installation at path '#{params[:xcode_path]}' 🎧".green
39
39
  else
40
- show_and_raise_error("Invalid Download Source of Xcode: #{output}")
40
+ show_and_raise_error("Invalid Download Source of Xcode: #{output}", params[:xcode_path])
41
41
  end
42
42
 
43
43
  true
@@ -53,18 +53,18 @@ module Fastlane
53
53
  end
54
54
 
55
55
  if errors.count > 0
56
- show_and_raise_error(errors.join("\n"))
56
+ show_and_raise_error(errors.join("\n"), params[:xcode_path])
57
57
  end
58
58
 
59
59
  return output
60
60
  end
61
61
 
62
- def self.show_and_raise_error(error)
62
+ def self.show_and_raise_error(error, xcode_path)
63
63
  Helper.log.fatal "Attention: Your Xcode Installation might be hacked.".red
64
64
  Helper.log.fatal "This might be a false alarm, if so, please submit an issue on GitHub".red
65
65
  Helper.log.fatal "The following information couldn't be found:".red
66
66
  Helper.log.fatal error.yellow
67
- raise "The Xcode installation at path '#{params[:xcode_path]}' might be compromised."
67
+ raise "The Xcode installation at path '#{xcode_path}' might be compromised."
68
68
  end
69
69
 
70
70
  #####################################################
@@ -9,6 +9,7 @@ module Fastlane
9
9
  ENV["XCODE_INSTALL_USER"] = params[:username]
10
10
  ENV["XCODE_INSTALL_TEAM_ID"] = params[:team_id]
11
11
 
12
+ Actions.verify_gem!('xcode-install')
12
13
  require 'xcode/install'
13
14
  installer = XcodeInstall::Installer.new
14
15
 
@@ -146,7 +146,7 @@ module Fastlane
146
146
  if options.kind_of? Array
147
147
  options.each do |current|
148
148
  if current.kind_of? FastlaneCore::ConfigItem
149
- key_name = (current.optional ? "" : "* ") + current.key.to_s
149
+ key_name = (current.optional ? " " : "* ") + current.key.to_s
150
150
  description = (current.description || '') + (current.default_value ? " (default: '#{current.default_value}')" : "")
151
151
 
152
152
  rows << [key_name.yellow, description, current.env_name]
@@ -37,7 +37,7 @@ module Fastlane
37
37
  output << "The documentation of fastlane can be found on [GitHub](https://github.com/fastlane/fastlane)"
38
38
 
39
39
  File.write(output_path, output.join("\n"))
40
- Helper.log.info "Successfully generated documentation to path '#{File.expand_path(output_path)}'".green if $verbose
40
+ UI.success "Successfully generated documentation to path '#{File.expand_path(output_path)}'" if $verbose
41
41
  end
42
42
 
43
43
  #####################################################
@@ -12,7 +12,7 @@ module Fastlane
12
12
  # @return The runner which can be executed to trigger the given actions
13
13
  def initialize(path = nil)
14
14
  return unless (path || '').length > 0
15
- raise "Could not find Fastfile at path '#{path}'".red unless File.exist?(path)
15
+ UI.user_error!("Could not find Fastfile at path '#{path}'") unless File.exist?(path)
16
16
  @path = File.expand_path(path)
17
17
  content = File.read(path)
18
18
 
@@ -49,7 +49,7 @@ module Fastlane
49
49
  # rubocop:enable Lint/Eval
50
50
  rescue SyntaxError => ex
51
51
  line = ex.to_s.match(/#{Regexp.escape(relative_path)}:(\d+)/)[1]
52
- raise "Syntax error in your Fastfile on line #{line}: #{ex}".red
52
+ UI.user_error!("Syntax error in your Fastfile on line #{line}: #{ex}")
53
53
  end
54
54
  end
55
55
 
@@ -62,7 +62,7 @@ module Fastlane
62
62
 
63
63
  # User defines a new lane
64
64
  def lane(lane_name, &block)
65
- raise "You have to pass a block using 'do' for lane '#{lane_name}'. Make sure you read the docs on GitHub.".red unless block
65
+ UI.user_error!("You have to pass a block using 'do' for lane '#{lane_name}'. Make sure you read the docs on GitHub.") unless block
66
66
 
67
67
  self.runner.add_lane(Lane.new(platform: self.current_platform,
68
68
  block: block,
@@ -75,7 +75,7 @@ module Fastlane
75
75
 
76
76
  # User defines a new private lane, which can't be called from the CLI
77
77
  def private_lane(lane_name, &block)
78
- raise "You have to pass a block using 'do' for lane '#{lane_name}'. Make sure you read the docs on GitHub.".red unless block
78
+ UI.user_error!("You have to pass a block using 'do' for lane '#{lane_name}'. Make sure you read the docs on GitHub.") unless block
79
79
 
80
80
  self.runner.add_lane(Lane.new(platform: self.current_platform,
81
81
  block: block,
@@ -88,7 +88,7 @@ module Fastlane
88
88
 
89
89
  # User defines a lane that can overwrite existing lanes. Useful when importing a Fastfile
90
90
  def override_lane(lane_name, &block)
91
- raise "You have to pass a block using 'do' for lane '#{lane_name}'. Make sure you read the docs on GitHub.".red unless block
91
+ UI.user_error!("You have to pass a block using 'do' for lane '#{lane_name}'. Make sure you read the docs on GitHub.") unless block
92
92
 
93
93
  self.runner.add_lane(Lane.new(platform: self.current_platform,
94
94
  block: block,
@@ -148,7 +148,7 @@ module Fastlane
148
148
  # Action is available, now execute it
149
149
  return self.runner.execute_action(method_sym, class_ref, arguments)
150
150
  else
151
- raise "Action '#{method_sym}' of class '#{class_name}' was found, but has no `run` method.".red
151
+ UI.user_error!("Action '#{method_sym}' of class '#{class_name}' was found, but has no `run` method.")
152
152
  end
153
153
  end
154
154
 
@@ -162,16 +162,16 @@ module Fastlane
162
162
 
163
163
  # Is the given key a platform block or a lane?
164
164
  def is_platform_block?(key)
165
- raise 'No key given'.red unless key
165
+ UI.crash!('No key given') unless key
166
166
 
167
167
  return false if self.runner.lanes.fetch(nil, {}).fetch(key.to_sym, nil)
168
168
  return true if self.runner.lanes[key.to_sym].kind_of? Hash
169
169
 
170
- raise "Could not find '#{key}'. Available lanes: #{self.runner.available_lanes.join(', ')}".red
170
+ UI.user_error!("Could not find '#{key}'. Available lanes: #{self.runner.available_lanes.join(', ')}")
171
171
  end
172
172
 
173
173
  def actions_path(path)
174
- raise "Path '#{path}' not found!".red unless File.directory?(path)
174
+ UI.crash!("Path '#{path}' not found!") unless File.directory?(path)
175
175
 
176
176
  Actions.load_external_actions(path)
177
177
  end
@@ -192,14 +192,14 @@ module Fastlane
192
192
  end
193
193
 
194
194
  def import(path = nil)
195
- raise "Please pass a path to the `import` action".red unless path
195
+ UI.user_error!("Please pass a path to the `import` action") unless path
196
196
 
197
197
  path = path.dup.gsub("~", Dir.home)
198
198
  unless Pathname.new(path).absolute? # unless an absolute path
199
199
  path = File.join(File.expand_path('..', @path), path)
200
200
  end
201
201
 
202
- raise "Could not find Fastfile at path '#{path}'".red unless File.exist?(path)
202
+ UI.user_error!("Could not find Fastfile at path '#{path}'") unless File.exist?(path)
203
203
 
204
204
  collector.did_launch_action(:import)
205
205
  parse(File.read(path), path)
@@ -213,7 +213,7 @@ module Fastlane
213
213
  # @param branch [String] The branch to checkout in the repository
214
214
  # @param path [String] The path to the Fastfile
215
215
  def import_from_git(url: nil, branch: 'HEAD', path: 'fastlane/Fastfile')
216
- raise "Please pass a path to the `import_from_git` action".red if url.to_s.length == 0
216
+ UI.user_error!("Please pass a path to the `import_from_git` action") if url.to_s.length == 0
217
217
 
218
218
  Actions.execute_action('import_from_git') do
219
219
  require 'tmpdir'
@@ -231,7 +231,7 @@ module Fastlane
231
231
 
232
232
  clone_command = "git clone '#{url}' '#{clone_folder}' --depth 1 -n #{branch_option}"
233
233
 
234
- Helper.log.info "Cloning remote git repo..."
234
+ UI.message "Cloning remote git repo..."
235
235
  Actions.sh(clone_command)
236
236
 
237
237
  Actions.sh("cd '#{clone_folder}' && git checkout #{branch} '#{path}'")
@@ -250,7 +250,7 @@ module Fastlane
250
250
 
251
251
  if Dir.exist?(clone_folder)
252
252
  # We want to re-clone if the folder already exists
253
- Helper.log.info "Clearing the git repo..."
253
+ UI.message "Clearing the git repo..."
254
254
  Actions.sh("rm -rf '#{tmp_path}'")
255
255
  end
256
256
  end
@@ -22,7 +22,7 @@ module Fastlane
22
22
  def self.create_folder!(path = nil)
23
23
  path = File.join(path || '.', FOLDER_NAME)
24
24
  FileUtils.mkdir_p(path)
25
- Helper.log.info "Created new folder '#{path}'.".green
25
+ UI.success "Created new folder '#{path}'."
26
26
  end
27
27
  end
28
28
  end
@@ -72,7 +72,7 @@ module Fastlane
72
72
 
73
73
  raise "Coulnd't find 'crashlytics-devtools.jar'" unless File.exist?(jar_path)
74
74
 
75
- Helper.log.info "Succesfully downloaded Crashlytics Support Library to '#{jar_path}'".green
75
+ UI.success "Succesfully downloaded Crashlytics Support Library to '#{jar_path}'"
76
76
  rescue => ex
77
77
  raise "Error fetching remote file: #{ex}"
78
78
  end
@@ -16,7 +16,7 @@ module Fastlane
16
16
  Encoding.default_internal = Encoding::UTF_8
17
17
 
18
18
  command = command.join(' ') if command.kind_of?(Array) # since it's an array of one element when running from the Fastfile
19
- Helper.log.info ['[SHELL COMMAND]', command.yellow].join(': ') if log
19
+ UI.command(command) if log
20
20
 
21
21
  result = ''
22
22
  if Helper.test?
@@ -26,7 +26,7 @@ module Fastlane
26
26
  IO.popen(command, err: [:child, :out]) do |io|
27
27
  io.sync = true
28
28
  io.each do |line|
29
- Helper.log.info ['[SHELL]', line.strip].join(': ') if log
29
+ UI.command_output(line.strip) if log
30
30
  result << line
31
31
  end
32
32
  io.close
@@ -37,7 +37,7 @@ module Fastlane
37
37
  # this will also append the output to the exception
38
38
  message = "Exit status of command '#{command}' was #{exit_status} instead of 0."
39
39
  message += "\n#{result}" if log
40
- raise message.red
40
+ UI.crash!(message)
41
41
  end
42
42
  end
43
43
 
@@ -15,13 +15,13 @@ module Fastlane
15
15
  attr_accessor :is_private
16
16
 
17
17
  def initialize(platform: nil, name: nil, description: nil, block: nil, is_private: false)
18
- raise "description must be an array" unless description.kind_of? Array
19
- raise "lane name must not contain any spaces".red if name.to_s.include? " "
20
- raise "lane name must start with :".red unless name.kind_of? Symbol
18
+ UI.user_error!("description must be an array") unless description.kind_of? Array
19
+ UI.user_error!("lane name must not contain any spaces") if name.to_s.include? " "
20
+ UI.user_error!("lane name must start with :") unless name.kind_of? Symbol
21
21
 
22
22
  if self.class.black_list.include?(name.to_s)
23
- Helper.log.error "Lane Name '#{name}' can not be one of the followings: #{self.class.black_list}".red
24
- raise "Name '#{name}' is already taken"
23
+ UI.error "Lane Name '#{name}' can not be one of the followings: #{self.class.black_list}".red
24
+ UI.user_error!("Name '#{name}' is already taken")
25
25
  end
26
26
 
27
27
  self.platform = platform
@@ -45,9 +45,9 @@ module Fastlane
45
45
  begin
46
46
  ff.runner.execute(lane, platform, parameters)
47
47
  rescue => ex
48
- Helper.log.info 'Variable Dump:'.yellow
49
- Helper.log.info Actions.lane_context
50
- Helper.log.fatal ex
48
+ UI.important 'Variable Dump:'.yellow
49
+ UI.message Actions.lane_context
50
+ UI.error ex.to_s
51
51
  e = ex
52
52
  end
53
53
 
@@ -70,12 +70,12 @@ module Fastlane
70
70
  print_table(Fastlane::Actions.executed_actions)
71
71
 
72
72
  if error
73
- Helper.log.fatal 'fastlane finished with errors'.red
73
+ UI.error 'fastlane finished with errors'
74
74
  raise error
75
75
  elsif duration > 5
76
- Helper.log.info "fastlane.tools just saved you #{duration} minutes! 🎉".green
76
+ UI.success "fastlane.tools just saved you #{duration} minutes! 🎉"
77
77
  else
78
- Helper.log.info 'fastlane.tools finished successfully 🎉'.green
78
+ UI.success 'fastlane.tools finished successfully 🎉'
79
79
  end
80
80
  end
81
81
 
@@ -104,17 +104,17 @@ module Fastlane
104
104
  # @param platform: is probably nil, but user might have called `fastlane android`, and only wants to list those actions
105
105
  def self.choose_lane(ff, platform)
106
106
  loop do
107
- Helper.log.error "You must provide a lane to drive. Available lanes:"
107
+ UI.error "You must provide a lane to drive. Available lanes:"
108
108
  available = ff.runner.available_lanes(platform)
109
109
 
110
110
  available.each_with_index do |lane, index|
111
- puts "#{index + 1}) #{lane}"
111
+ UI.message "#{index + 1}) #{lane}"
112
112
  end
113
113
 
114
114
  i = $stdin.gets.strip.to_i - 1
115
115
  if i >= 0 and available[i]
116
116
  selection = available[i]
117
- Helper.log.info "Driving the lane #{selection}. Next time launch fastlane using `fastlane #{selection}`".yellow
117
+ UI.important "Driving the lane #{selection}. Next time launch fastlane using `fastlane #{selection}`"
118
118
  platform = selection.split(' ')[0]
119
119
  lane_name = selection.split(' ')[1]
120
120
 
@@ -126,7 +126,7 @@ module Fastlane
126
126
  return platform, lane_name # yeah
127
127
  end
128
128
 
129
- Helper.log.error "Invalid input. Please enter the number of the lane you want to use".red
129
+ UI.error "Invalid input. Please enter the number of the lane you want to use"
130
130
  end
131
131
  end
132
132
 
@@ -144,7 +144,7 @@ module Fastlane
144
144
  # Loads .env file for the environment passed in through options
145
145
  if env
146
146
  env_file = File.join(Fastlane::FastlaneFolder.path || "", ".env.#{env}")
147
- Helper.log.info "Loading from '#{env_file}'".green
147
+ UI.success "Loading from '#{env_file}'"
148
148
  Dotenv.overload(env_file)
149
149
  end
150
150
  end
@@ -28,7 +28,7 @@ module Fastlane
28
28
 
29
29
  path = File.join(actions_path, "#{name}.rb")
30
30
  File.write(path, template)
31
- Helper.log.info "Created new action file '#{path}'. Edit it to implement your custom action.".green
31
+ UI.success "Created new action file '#{path}'. Edit it to implement your custom action."
32
32
  end
33
33
 
34
34
  def self.name_valid?(name)
@@ -36,7 +36,7 @@ module Fastlane
36
36
  Actions.lane_context[Actions::SharedValues::PLATFORM_NAME] = current_platform
37
37
  Actions.lane_context[Actions::SharedValues::LANE_NAME] = full_lane_name
38
38
 
39
- Helper.log.info "Driving the lane '#{full_lane_name}' 🚀".green
39
+ UI.success "Driving the lane '#{full_lane_name}' 🚀"
40
40
 
41
41
  return_val = nil
42
42
 
@@ -66,6 +66,7 @@ module Fastlane
66
66
  error_blocks[current_platform].call(current_lane, error_ex, parameters) if error_blocks[current_platform] && current_platform
67
67
  error_blocks[nil].call(current_lane, error_ex, parameters) if error_blocks[nil]
68
68
  end
69
+
69
70
  raise ex
70
71
  end
71
72
  end
@@ -101,7 +102,7 @@ module Fastlane
101
102
  pretty = [new_lane]
102
103
  pretty = [current_platform, new_lane] if current_platform
103
104
  Actions.execute_action("Switch to #{pretty.join(' ')} lane") {} # log the action
104
- Helper.log.info "Cruising over to lane '#{pretty.join(' ')}' 🚖".green
105
+ UI.success "Cruising over to lane '#{pretty.join(' ')}' 🚖"
105
106
 
106
107
  # Actually switch lane now
107
108
  self.current_lane = new_lane
@@ -109,12 +110,12 @@ module Fastlane
109
110
  result = block.call(parameters.first || {}) # to always pass a hash
110
111
  self.current_lane = original_lane
111
112
 
112
- Helper.log.info "Cruising back to lane '#{original_full}' 🚘".green
113
+ UI.success "Cruising back to lane '#{original_full}' 🚘".green
113
114
  return result
114
115
  else
115
116
  # No action and no lane, raising an exception now
116
- Helper.log.error caller.join("\n")
117
- raise "Could not find action or lane '#{new_lane}'. Check out the README for more details: https://github.com/fastlane/fastlane".red
117
+ UI.error caller.join("\n")
118
+ UI.user_error!("Could not find action or lane '#{new_lane}'. Check out the README for more details: https://github.com/fastlane/fastlane")
118
119
  end
119
120
  end
120
121
 
@@ -38,10 +38,6 @@ module Fastlane
38
38
  Helper.log.info "No sensitive/private information will be uploaded"
39
39
  Helper.log.info("You can disable this by adding `opt_out_usage` to your Fastfile")
40
40
  end
41
-
42
- def ask_for_crash_reporting
43
- FastlaneCore::CrashReporting.ask_during_setup
44
- end
45
41
  end
46
42
  end
47
43
 
@@ -1,3 +1,3 @@
1
1
  module Fastlane
2
- VERSION = '1.54.0'
2
+ VERSION = '1.55.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.54.0
4
+ version: 1.55.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-28 00:00:00.000000000 Z
11
+ date: 2016-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: krausefx-shenzhen
@@ -128,27 +128,13 @@ dependencies:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
130
  version: 2.3.8
131
- - !ruby/object:Gem::Dependency
132
- name: xcode-install
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: 1.0.1
138
- type: :runtime
139
- prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: 1.0.1
145
131
  - !ruby/object:Gem::Dependency
146
132
  name: fastlane_core
147
133
  requirement: !ruby/object:Gem::Requirement
148
134
  requirements:
149
135
  - - ">="
150
136
  - !ruby/object:Gem::Version
151
- version: 0.35.1
137
+ version: 0.36.0
152
138
  - - "<"
153
139
  - !ruby/object:Gem::Version
154
140
  version: 1.0.0
@@ -158,7 +144,7 @@ dependencies:
158
144
  requirements:
159
145
  - - ">="
160
146
  - !ruby/object:Gem::Version
161
- version: 0.35.1
147
+ version: 0.36.0
162
148
  - - "<"
163
149
  - !ruby/object:Gem::Version
164
150
  version: 1.0.0
@@ -730,6 +716,7 @@ files:
730
716
  - lib/fastlane/actions/testflight.rb
731
717
  - lib/fastlane/actions/testmunk.rb
732
718
  - lib/fastlane/actions/tryouts.rb
719
+ - lib/fastlane/actions/twitter.rb
733
720
  - lib/fastlane/actions/typetalk.rb
734
721
  - lib/fastlane/actions/unlock_keychain.rb
735
722
  - lib/fastlane/actions/update_app_group_identifiers.rb
@@ -753,7 +740,6 @@ files:
753
740
  - lib/fastlane/command_line_handler.rb
754
741
  - lib/fastlane/configuration_helper.rb
755
742
  - lib/fastlane/core_ext/string.rb
756
- - lib/fastlane/dependency_checker.rb
757
743
  - lib/fastlane/documentation/actions_list.rb
758
744
  - lib/fastlane/documentation/docs_generator.rb
759
745
  - lib/fastlane/erb_template_helper.rb
@@ -798,7 +784,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
798
784
  version: '0'
799
785
  requirements: []
800
786
  rubyforge_project:
801
- rubygems_version: 2.4.5
787
+ rubygems_version: 2.4.6
802
788
  signing_key:
803
789
  specification_version: 4
804
790
  summary: Connect all iOS deployment tools into one streamlined workflow
@@ -1,18 +0,0 @@
1
- module Fastlane
2
- class DependencyChecker
3
- def self.check_dependencies
4
- check_xcode_select unless Helper.test?
5
- end
6
-
7
- def self.check_xcode_select
8
- unless `xcode-select -v`.include?('xcode-select version ')
9
- Helper.log.fatal '#############################################################'
10
- Helper.log.fatal '# You have to install the Xcode commdand line tools to use fastlane'
11
- Helper.log.fatal '# Install the latest version of Xcode from the AppStore'
12
- Helper.log.fatal '# Run xcode-select --install to install the developer tools'
13
- Helper.log.fatal '#############################################################'
14
- raise "Run 'xcode-select --install' and start fastlane again"
15
- end
16
- end
17
- end
18
- end