rapid7/metasploit-framework

View on GitHub
lib/msf/core/modules/error.rb

Summary

Maintainability
A
35 mins
Test Coverage
# -*- coding: binary -*-
# Base error class for all error under {Msf::Modules}
class Msf::Modules::Error < StandardError
  def initialize(attributes={})
    @module_path = attributes[:module_path]
    @module_reference_name = attributes[:module_reference_name]

    message_parts = []
    message_parts << "Failed to load module"

    if module_reference_name or module_path
      clause_parts = []

      if module_reference_name
        clause_parts << module_reference_name
      end

      if module_path
        clause_parts << "from #{module_path}"
      end

      clause = clause_parts.join(' ')
      message_parts << "(#{clause})"
    end

    causal_message = attributes[:causal_message]

    if causal_message
      message_parts << "due to #{causal_message}"
    end

    message = message_parts.join(' ')

    super(message)
  end

  attr_reader :module_reference_name
  attr_reader :module_path
end