Class: Commander::Runner
- Inherits:
-
Object
- Object
- Commander::Runner
- Defined in:
- lib/fastlane_core/ui/fastlane_runner.rb
Overview
This class override the run method with our custom stack trace handling In particular we want to distinguish between user_error! and crash! (one with, one without stack trace)
Instance Method Summary collapse
- #display_user_error!(e, message) ⇒ Object
- #handle_unknown_error!(e) ⇒ Object
- #reraise_formatted!(e, message) ⇒ Object
- #run! ⇒ Object
- #show_github_issues(message) ⇒ Object
Instance Method Details
#display_user_error!(e, message) ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/fastlane_core/ui/fastlane_runner.rb', line 76 def display_user_error!(e, ) if $verbose # with stack trace reraise_formatted!(e, ) else abort "\n[!] #{}".red # without stack trace end end |
#handle_unknown_error!(e) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/fastlane_core/ui/fastlane_runner.rb', line 53 def handle_unknown_error!(e) # Some spaceship exception classes implement #preferred_error_info in order to share error info # that we'd rather display instead of crashing with a stack trace. However, fastlane_core and # spaceship can not know about each other's classes! To make this information passing work, we # use a bit of Ruby duck-typing to check whether the unknown exception type implements the right # method. If so, we'll present any returned error info in the manner of a user_error! error_info = e.respond_to?(:preferred_error_info) ? e.preferred_error_info : nil if error_info error_info = error_info.join("\n\t") if error_info.kind_of?(Array) show_github_issues(error_info) display_user_error!(e, error_info) else show_github_issues(e.) # From https://stackoverflow.com/a/4789702/445598 # We do this to make the actual error message red and therefore more visible reraise_formatted!(e, e.) end end |
#reraise_formatted!(e, message) ⇒ Object
84 85 86 |
# File 'lib/fastlane_core/ui/fastlane_runner.rb', line 84 def reraise_formatted!(e, ) raise e, "[!] #{}".red, e.backtrace end |
#run! ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/fastlane_core/ui/fastlane_runner.rb', line 6 def run! require_program :version, :description trap('INT') { abort program(:int_message) } if program(:int_message) trap('INT') { program(:int_block).call } if program(:int_block) global_option('-h', '--help', 'Display help documentation') do args = @args - %w(-h --help) command(:help).run(*args) return end global_option('-v', '--version', 'Display version information') do say version return end , @args collector = FastlaneCore::ToolCollector.new begin collector.did_launch_action(@program[:name]) run_active_command rescue InvalidCommandError => e abort "#{e}. Use --help for more information" rescue Interrupt => ex # We catch it so that the stack trace is hidden by default when using ctrl + c if $verbose raise ex else puts "\nCancelled... use --verbose to show the stack trace" end rescue \ OptionParser::InvalidOption, OptionParser::InvalidArgument, OptionParser::MissingArgument => e abort e.to_s rescue FastlaneCore::Interface::FastlaneError => e # user_error! collector.did_raise_error(@program[:name]) show_github_issues(e.) display_user_error!(e, e.) rescue => e # high chance this is actually FastlaneCore::Interface::FastlaneCrash, but can be anything else collector.did_crash(@program[:name]) handle_unknown_error!(e) ensure collector.did_finish end end |
#show_github_issues(message) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/fastlane_core/ui/fastlane_runner.rb', line 88 def show_github_issues() return if ENV["FASTLANE_HIDE_GITHUB_ISSUES"] return if FastlaneCore::Helper.test? require 'gh_inspector' require 'fastlane_core/ui/github_issue_inspector_reporter' inspector = GhInspector::Inspector.new("fastlane", "fastlane", verbose: $verbose) delegate = Fastlane::InspectorReporter.new inspector.search_query(, delegate) rescue => ex UI.error("Error finding relevant GitHub issues: #{ex}") end |