summaryrefslogtreecommitdiffstats
path: root/tinyusb/test/vendor/ceedling/lib/ceedling/build_invoker_utils.rb
blob: b7d57f8f4087c312a4364137acaf19e25852d0d7 (plain)
1
2
3
4
5
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
require 'ceedling/constants'

##
# Utilities for raiser and reporting errors during building.
class BuildInvokerUtils

  constructor :configurator, :streaminator
 
  ##
  # Processes exceptions and tries to display a useful message for the user.
  #
  # ==== Attriboops...utes
  #
  # * _exception_:  The exception given by a rescue statement.
  # * _context_:    A symbol representing where in the build the exception
  # occurs. 
  # * _test_build_: A bool to signify if the exception occurred while building
  # from test or source.
  #
  def process_exception(exception, context, test_build=true)
    if (exception.message =~ /Don't know how to build task '(.+)'/i)
      error_header  = "ERROR: Rake could not find file referenced in source"
      error_header += " or test" if (test_build) 
      error_header += ": '#{$1}'. Possible stale dependency."
      
      @streaminator.stderr_puts( error_header )

      if (@configurator.project_use_deep_dependencies)
        help_message = "Try fixing #include statements or adding missing file. Then run '#{REFRESH_TASK_ROOT}#{context.to_s}' task and try again."      
        @streaminator.stderr_puts( help_message )
      end
      
      raise ''
    else
      raise exception
    end
  end
  
end