82 lines
2.2 KiB
Ruby
82 lines
2.2 KiB
Ruby
require 'bundler/setup'
|
|
|
|
pathname = Pathname.new(__FILE__)
|
|
root = pathname.parent
|
|
|
|
# add metasploit-framework/lib to load paths so rake files can just require
|
|
# files normally without having to use __FILE__ and recalculating root and the
|
|
# path to lib
|
|
lib_pathname = root.join('lib')
|
|
$LOAD_PATH.unshift(lib_pathname.to_s)
|
|
|
|
#
|
|
# load rake files like a rails engine
|
|
#
|
|
|
|
rakefile_glob = root.join('lib', 'tasks', '**', '*.rake').to_path
|
|
|
|
Dir.glob(rakefile_glob) do |rakefile|
|
|
# Skip database tasks, will load them later if MDM is present
|
|
next if rakefile =~ /database\.rake$/
|
|
load rakefile
|
|
end
|
|
|
|
print_without = false
|
|
|
|
begin
|
|
require 'rspec/core/rake_task'
|
|
rescue LoadError
|
|
puts "rspec not in bundle, so can't set up spec tasks. " \
|
|
"To run specs ensure to install the development and test groups."
|
|
|
|
print_without = true
|
|
else
|
|
RSpec::Core::RakeTask.new(:spec => 'db:test:prepare')
|
|
|
|
task :default => :spec
|
|
end
|
|
|
|
# Require yard before loading metasploit_data_models rake tasks as the yard tasks won't be defined if
|
|
# YARD is not defined when yard.rake is loaded.
|
|
begin
|
|
require 'yard'
|
|
rescue LoadError
|
|
puts "yard not in bundle, so can't set up yard tasks. " \
|
|
"To generate documentation ensure to install the development group."
|
|
|
|
print_without = true
|
|
end
|
|
|
|
begin
|
|
require 'metasploit_data_models'
|
|
rescue LoadError
|
|
puts "metasploit_data_models not in bundle, so can't set up db tasks. " \
|
|
"To run database tasks, ensure to install the db bundler group."
|
|
|
|
print_without = true
|
|
else
|
|
load 'lib/tasks/database.rake'
|
|
metasploit_data_models_task_glob = MetasploitDataModels.root.join(
|
|
'lib',
|
|
'tasks',
|
|
'**',
|
|
'*.rake'
|
|
).to_s
|
|
# include tasks from metasplioit_data_models, such as `rake yard`.
|
|
# metasploit-framework specific yard options are in .yardopts
|
|
Dir.glob(metasploit_data_models_task_glob) do |path|
|
|
load path
|
|
end
|
|
end
|
|
|
|
|
|
|
|
if print_without
|
|
puts "Bundle currently installed " \
|
|
"'--without #{Bundler.settings.without.join(' ')}'."
|
|
puts "To clear the without option do `bundle install --without ''` " \
|
|
"(the --without flag with an empty string) or " \
|
|
"`rm -rf .bundle` to remove the .bundle/config manually and " \
|
|
"then `bundle install`"
|
|
end
|