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. # # ==== Attributes # # * _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