Class: Jeweler::Generator

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

Defined Under Namespace

Modules: BaconMixin, MicronautMixin, MinitestMixin, RspecMixin, ShouldaMixin, TestunitMixin Classes: Application, Options

Constant Summary collapse

DEFAULT_TESTING_FRAMEWORK =
:shoulda

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project_name, options = {}) ⇒ Generator

Returns a new instance of Generator.



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/jeweler/generator.rb', line 37

def initialize(project_name, options = {})
  if project_name.nil? || project_name.squeeze.strip == ""
    raise NoGitHubRepoNameGiven
  end

  self.project_name   = project_name

  self.testing_framework  = (options[:testing_framework] || DEFAULT_TESTING_FRAMEWORK).to_sym
  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


  self.target_dir             = options[:directory] || self.project_name

  self.should_create_repo     = options[:create_repo]
  self.summary                = options[:summary] || 'TODO'
  self.should_use_cucumber    = options[:use_cucumber]
  self.should_setup_rubyforge = options[:rubyforge]

  use_user_git_config
  
end

Instance Attribute Details

#github_tokenObject

Returns the value of attribute github_token.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def github_token
  @github_token
end

#github_usernameObject

Returns the value of attribute github_username.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def github_username
  @github_username
end

#project_nameObject

Returns the value of attribute project_name.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def project_name
  @project_name
end

#repoObject

Returns the value of attribute repo.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def repo
  @repo
end

#should_create_repoObject

Returns the value of attribute should_create_repo.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def should_create_repo
  @should_create_repo
end

#should_setup_rubyforgeObject

Returns the value of attribute should_setup_rubyforge.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def should_setup_rubyforge
  @should_setup_rubyforge
end

#should_use_cucumberObject

Returns the value of attribute should_use_cucumber.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def should_use_cucumber
  @should_use_cucumber
end

#summaryObject

Returns the value of attribute summary.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def summary
  @summary
end

#target_dirObject

Returns the value of attribute target_dir.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def target_dir
  @target_dir
end

#testing_frameworkObject

Returns the value of attribute testing_framework.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def testing_framework
  @testing_framework
end

#user_emailObject

Returns the value of attribute user_email.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def user_email
  @user_email
end

#user_nameObject

Returns the value of attribute user_name.



31
32
33
# File 'lib/jeweler/generator.rb', line 31

def user_name
  @user_name
end

Instance Method Details

#constant_nameObject



85
86
87
# File 'lib/jeweler/generator.rb', line 85

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

#feature_filenameObject



105
106
107
# File 'lib/jeweler/generator.rb', line 105

def feature_filename
  "#{project_name}.feature"
end

#features_dirObject



113
114
115
# File 'lib/jeweler/generator.rb', line 113

def features_dir
  'features'
end

#features_steps_dirObject



121
122
123
# File 'lib/jeweler/generator.rb', line 121

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

#features_support_dirObject



117
118
119
# File 'lib/jeweler/generator.rb', line 117

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

#file_name_prefixObject



97
98
99
# File 'lib/jeweler/generator.rb', line 97

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

#git_remoteObject



77
78
79
# File 'lib/jeweler/generator.rb', line 77

def git_remote
  "[email protected]:#{github_username}/#{project_name}.git"
end

#lib_dirObject



101
102
103
# File 'lib/jeweler/generator.rb', line 101

def lib_dir
  'lib'
end

#lib_filenameObject



89
90
91
# File 'lib/jeweler/generator.rb', line 89

def lib_filename
  "#{project_name}.rb"
end

#project_homepageObject



81
82
83
# File 'lib/jeweler/generator.rb', line 81

def project_homepage
  "http://github.com/#{github_username}/#{project_name}"
end

#require_nameObject



93
94
95
# File 'lib/jeweler/generator.rb', line 93

def require_name
  self.project_name
end

#runObject



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/jeweler/generator.rb', line 65

def run
  create_files
  gitify
  $stdout.puts "Jeweler has prepared your gem in #{target_dir}"
  if should_create_repo
    create_and_push_repo
    $stdout.puts "Jeweler has pushed your repo to #{project_homepage}"
    enable_gem_for_repo
    $stdout.puts "Jeweler has enabled gem building for your repo"
  end
end

#steps_filenameObject



109
110
111
# File 'lib/jeweler/generator.rb', line 109

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