def initialize(options = {})
self.options = options
self.project_name = options[:project_name]
if self.project_name.nil? || self.project_name.squeeze.strip == ""
raise NoGitHubRepoNameGiven
end
self.development_dependencies = []
self.testing_framework = options[:testing_framework]
self.documentation_framework = options[:documentation_framework]
begin
generator_mixin_name = "#{self.testing_framework.to_s.capitalize}Mixin"
generator_mixin = self.class.const_get(generator_mixin_name)
extend generator_mixin
rescue NameError => e
raise ArgumentError, "Unsupported testing framework (#{testing_framework})"
end
begin
generator_mixin_name = "#{self.documentation_framework.to_s.capitalize}Mixin"
generator_mixin = self.class.const_get(generator_mixin_name)
extend generator_mixin
rescue NameError => e
raise ArgumentError, "Unsupported documentation framework (#{documentation_framework})"
end
self.target_dir = options[:directory] || self.project_name
self.summary = options[:summary] || 'TODO: one-line summary of your gem'
self.description = options[:description] || 'TODO: longer description of your gem'
self.should_use_cucumber = options[:use_cucumber]
self.should_use_reek = options[:use_reek]
self.should_use_roodi = options[:use_roodi]
self.should_setup_rubyforge = options[:rubyforge]
self.should_use_bundler = options[:use_bundler]
development_dependencies << ["cucumber", ">= 0"] if should_use_cucumber
development_dependencies << ["bundler", "~> 1.0.0"]
development_dependencies << ["jeweler", "~> #{Jeweler::Version::STRING}"]
development_dependencies << ["rcov", ">= 0"]
development_dependencies << ["reek", "~> 1.2.8"] if should_use_reek
development_dependencies << ["roodi", "~> 2.1.0"] if should_use_roodi
self.user_name = options[:user_name]
self.user_email = options[:user_email]
self.homepage = options[:homepage]
self.git_remote = options[:git_remote]
raise NoGitUserName unless self.user_name
raise NoGitUserEmail unless self.user_email
extend GithubMixin
end