fastlane 1.54.0 → 1.55.0

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