Skip to content

Commit

Permalink
Merge pull request rapid7#1563 from rapid7/bug/yard-guard
Browse files Browse the repository at this point in the history
[Story #45771305]

Conflicts:
	Rakefile
  • Loading branch information
bturner-r7 committed Mar 7, 2013
2 parents 43c076e + addb73e commit 725fbea
Show file tree
Hide file tree
Showing 203 changed files with 162 additions and 143 deletions.
7 changes: 7 additions & 0 deletions .yardopts
@@ -0,0 +1,7 @@
--protected
--exclude samples/
--exclude \.ut\.rb/
--exclude \.ts\.rb/
--files CONTRIBUTING.md,COPYING,HACKING,LICENSE
lib/msf/**/*.rb
lib/rex/**/*.rb
2 changes: 1 addition & 1 deletion Gemfile
Expand Up @@ -7,7 +7,7 @@ gem 'activerecord'
# Needed for some admin modules (scrutinizer_add_user.rb)
gem 'json'
# Database models shared between framework and Pro.
gem 'metasploit_data_models', :git => 'git://github.com/rapid7/metasploit_data_models.git', :tag => '0.6.0'
gem 'metasploit_data_models', :git => 'git://github.com/rapid7/metasploit_data_models.git', :tag => '0.6.1'
# Needed by msfgui and other rpc components
gem 'msgpack'
# Needed by anemone crawler
Expand Down
6 changes: 3 additions & 3 deletions Gemfile.lock
@@ -1,9 +1,9 @@
GIT
remote: git://github.com/rapid7/metasploit_data_models.git
revision: 0285d6e199f125b33214100dcb0f4eeb12ee765f
tag: 0.6.0
revision: 7f8e36d9b62a36bcbf43c8f1ab48a07bed0732d9
tag: 0.6.1
specs:
metasploit_data_models (0.6.0)
metasploit_data_models (0.6.1)
activerecord (>= 3.2.10)
activesupport
pg
Expand Down
93 changes: 45 additions & 48 deletions Rakefile
@@ -1,52 +1,49 @@
require 'bundler/setup'

require 'rspec/core/rake_task'
require 'yard'

RSpec::Core::RakeTask.new(:spec)

task :default => :spec

namespace :yard do
yard_files = [
# Ruby source files first
'lib/msf/**/*.rb',
'lib/rex/**/*.rb',
# Anything after '-' is a normal documentation, not source
'-',
'COPYING',
'HACKING',
'LICENSE',
'CONTRIBUTING.md',
]
yard_options = [
# include documentation for protected methods for developers extending the code.
'--protected',
# Don't bother with files meant to be examples
'--exclude', 'samples/',
'--exclude', '\.ut\.rb/',
'--exclude', '\.ts\.rb/',
]

YARD::Rake::YardocTask.new(:doc) do |t|
t.files = yard_files
# --no-stats here as 'stats' task called after will print fuller stats
t.options = yard_options + ['--no-stats']

t.after = Proc.new {
Rake::Task['yard:stats'].execute
}
end

desc "Shows stats for YARD Documentation including listing undocumented modules, classes, constants, and methods"
task :stats => :environment do
stats = YARD::CLI::Stats.new
yard_arguments = yard_options + ['--compact', '--list-undoc'] + yard_files
stats.run(*yard_arguments)
end
require 'metasploit_data_models'

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)

task :default => :spec
end

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

# @todo Figure out how to just clone description from yard:doc
desc "Generate YARD documentation"
# allow calling namespace to as a task that goes to default task for namespace
task :yard => ['yard:doc']
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

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
12 changes: 0 additions & 12 deletions documentation/Gemfile

This file was deleted.

34 changes: 0 additions & 34 deletions lib/gemcache/ruby/1.9.1/gems/metasploit_data_models-0.6.0/Rakefile

This file was deleted.

This file was deleted.

This file was deleted.

53 changes: 53 additions & 0 deletions lib/gemcache/ruby/1.9.1/gems/metasploit_data_models-0.6.1/Rakefile
@@ -0,0 +1,53 @@
#!/usr/bin/env rake
begin
require 'bundler/setup'
rescue LoadError
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
end

print_without = false
APP_RAKEFILE = File.expand_path('../spec/dummy/Rakefile', __FILE__)

begin
load 'rails/tasks/engine.rake'
rescue LoadError
puts "railties not in bundle, so can't load engine tasks."
print_without = true
end

Bundler::GemHelper.install_tasks

#
# load rake files like a normal rails app
# @see http://viget.com/extend/rails-engine-testing-with-rspec-capybara-and-factorygirl
#

pathname = Pathname.new(__FILE__)
root = pathname.parent
rakefile_glob = root.join('lib', 'tasks', '**', '*.rake').to_path

Dir.glob(rakefile_glob) do |rakefile|
load rakefile
end

begin
require 'rspec/core'
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
require 'rspec/core/rake_task'

# Depend on app:db:test:prepare so that test database is recreated just like in a full rails app
# @see http://viget.com/extend/rails-engine-testing-with-rspec-capybara-and-factorygirl
RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')

task :default => :spec
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
@@ -0,0 +1,23 @@
require 'rails'

module MetasploitDataModels
class Engine < Rails::Engine
# @see http://viget.com/extend/rails-engine-testing-with-rspec-capybara-and-factorygirl
config.generators do |g|
g.assets false
g.fixture_replacement :factory_girl, :dir => 'spec/factories'
g.helper false
g.test_framework :rspec, :fixture => false
end

initializer 'metasploit_data_models.prepend_factory_path', :after => 'factory_girl.set_factory_paths' do
if defined? FactoryGirl
relative_definition_file_path = config.generators.options[:factory_girl][:dir]
definition_file_path = root.join(relative_definition_file_path)

# unshift so that Pro can modify mdm factories
FactoryGirl.definition_file_paths.unshift definition_file_path
end
end
end
end
Expand Up @@ -4,5 +4,5 @@ module MetasploitDataModels
# metasploit-framework/data/sql/migrate to db/migrate in this project, not all models have specs that verify the
# migrations (with have_db_column and have_db_index) and certain models may not be shared between metasploit-framework
# and pro, so models may be removed in the future. Because of the unstable API the version should remain below 1.0.0
VERSION = '0.6.0'
VERSION = '0.6.1'
end
@@ -0,0 +1,26 @@
# @note All options not specific to any given rake task should go in the .yardopts file so they are available to both
# the below rake tasks and when invoking `yard` from the command line

if defined? YARD
namespace :yard do
YARD::Rake::YardocTask.new(:doc) do |t|
# --no-stats here as 'stats' task called after will print fuller stats
t.options = ['--no-stats']

t.after = Proc.new {
Rake::Task['yard:stats'].execute
}
end

desc "Shows stats for YARD Documentation including listing undocumented modules, classes, constants, and methods"
task :stats => :environment do
stats = YARD::CLI::Stats.new
stats.run('--compact', '--list-undoc')
end
end

# @todo Figure out how to just clone description from yard:doc
desc "Generate YARD documentation"
# allow calling namespace to as a task that goes to default task for namespace
task :yard => ['yard:doc']
end
Expand Up @@ -2,7 +2,7 @@

require 'rails/all'

Bundler.require
Bundler.require(*Rails.groups)
# require the engine being tested. In a non-dummy app this would be handled by the engine's gem being in the Gemfile
# for real app and Bundler.require requiring the gem.
require 'metasploit_data_models'
Expand Down
Expand Up @@ -2,11 +2,11 @@

Gem::Specification.new do |s|
s.name = "metasploit_data_models"
s.version = "0.6.0"
s.version = "0.6.1"

s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Trevor Rosen"]
s.date = "2013-03-06"
s.date = "2013-03-07"
s.description = "Implements minimal ActiveRecord models and database helper code used in both the Metasploit Framework (MSF) and Metasploit commercial editions."
s.email = ["trevor_rosen@rapid7.com"]
s.executables = ["mdm_console"]
Expand Down

0 comments on commit 725fbea

Please sign in to comment.