Class: Jeweler::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/jeweler/generator.rb,
lib/jeweler/generator/options.rb,
lib/jeweler/generator/rdoc_mixin.rb,
lib/jeweler/generator/riot_mixin.rb,
lib/jeweler/generator/yard_mixin.rb,
lib/jeweler/generator/application.rb,
lib/jeweler/generator/bacon_mixin.rb,
lib/jeweler/generator/rspec_mixin.rb,
lib/jeweler/generator/github_mixin.rb,
lib/jeweler/generator/shoulda_mixin.rb,
lib/jeweler/generator/minitest_mixin.rb,
lib/jeweler/generator/testspec_mixin.rb,
lib/jeweler/generator/testunit_mixin.rb,
lib/jeweler/generator/micronaut_mixin.rb

Overview

Generator for creating a jeweler-enabled project

Defined Under Namespace

Modules: BaconMixin, GithubMixin, MicronautMixin, MinitestMixin, RdocMixin, RiotMixin, RspecMixin, ShouldaMixin, TestspecMixin, TestunitMixin, YardMixin Classes: Application, Options

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Generator

Returns a new instance of Generator.

Raises:



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/jeweler/generator.rb', line 52

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_gemcutter = options[:gemcutter]
  self.should_setup_rubyforge = options[:rubyforge]

  development_dependencies << ["cucumber", ">= 0"] if should_use_cucumber

  self.user_name       = options[:user_name]
  self.user_email      = options[:user_email]
  self.homepage        = options[:homepage]

  raise NoGitUserName unless self.user_name
  raise NoGitUserEmail unless self.user_email

  extend GithubMixin
end

Instance Attribute Details

#descriptionObject

Returns the value of attribute description.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def description
  @description
end

#development_dependenciesObject

Returns the value of attribute development_dependencies.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def development_dependencies
  @development_dependencies
end

#documentation_frameworkObject

Returns the value of attribute documentation_framework.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def documentation_framework
  @documentation_framework
end

#github_tokenObject

Returns the value of attribute github_token.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def github_token
  @github_token
end

#github_usernameObject

Returns the value of attribute github_username.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def github_username
  @github_username
end

#homepageObject

Returns the value of attribute homepage.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def homepage
  @homepage
end

#optionsObject

Returns the value of attribute options.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def options
  @options
end

#project_nameObject

Returns the value of attribute project_name.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def project_name
  @project_name
end

#repoObject

Returns the value of attribute repo.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def repo
  @repo
end

#should_create_remote_repoObject

Returns the value of attribute should_create_remote_repo.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def should_create_remote_repo
  @should_create_remote_repo
end

#should_setup_gemcutterObject

Returns the value of attribute should_setup_gemcutter.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def should_setup_gemcutter
  @should_setup_gemcutter
end

#should_setup_rubyforgeObject

Returns the value of attribute should_setup_rubyforge.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def should_setup_rubyforge
  @should_setup_rubyforge
end

#should_use_cucumberObject

Returns the value of attribute should_use_cucumber.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def should_use_cucumber
  @should_use_cucumber
end

#should_use_reekObject

Returns the value of attribute should_use_reek.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def should_use_reek
  @should_use_reek
end

#should_use_roodiObject

Returns the value of attribute should_use_roodi.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def should_use_roodi
  @should_use_roodi
end

#summaryObject

Returns the value of attribute summary.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def summary
  @summary
end

#target_dirObject

Returns the value of attribute target_dir.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def target_dir
  @target_dir
end

#testing_frameworkObject

Returns the value of attribute testing_framework.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def testing_framework
  @testing_framework
end

#user_emailObject

Returns the value of attribute user_email.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def user_email
  @user_email
end

#user_nameObject

Returns the value of attribute user_name.



43
44
45
# File 'lib/jeweler/generator.rb', line 43

def user_name
  @user_name
end

Instance Method Details

#constant_nameObject



111
112
113
# File 'lib/jeweler/generator.rb', line 111

def constant_name
  self.project_name.split(/[-_]/).collect{|each| each.capitalize }.join
end

#feature_filenameObject



131
132
133
# File 'lib/jeweler/generator.rb', line 131

def feature_filename
  "#{project_name}.feature"
end

#features_dirObject



139
140
141
# File 'lib/jeweler/generator.rb', line 139

def features_dir
  'features'
end

#features_steps_dirObject



147
148
149
# File 'lib/jeweler/generator.rb', line 147

def features_steps_dir
  File.join(features_dir, 'step_definitions')
end

#features_support_dirObject



143
144
145
# File 'lib/jeweler/generator.rb', line 143

def features_support_dir
  File.join(features_dir, 'support')
end

#file_name_prefixObject



123
124
125
# File 'lib/jeweler/generator.rb', line 123

def file_name_prefix
  self.project_name.gsub('-', '_')
end

#lib_dirObject



127
128
129
# File 'lib/jeweler/generator.rb', line 127

def lib_dir
  'lib'
end

#lib_filenameObject



115
116
117
# File 'lib/jeweler/generator.rb', line 115

def lib_filename
  "#{project_name}.rb"
end

#require_nameObject



119
120
121
# File 'lib/jeweler/generator.rb', line 119

def require_name
  self.project_name
end

#runObject



101
102
103
104
105
106
107
108
109
# File 'lib/jeweler/generator.rb', line 101

def run
  create_files
  create_version_control
  $stdout.puts "Jeweler has prepared your gem in #{target_dir}"
  if should_create_remote_repo
    create_and_push_repo
    $stdout.puts "Jeweler has pushed your repo to #{homepage}"
  end
end

#steps_filenameObject



135
136
137
# File 'lib/jeweler/generator.rb', line 135

def steps_filename
  "#{project_name}_steps.rb"
end