jeweler 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,6 +10,7 @@ class Jeweler
10
10
  @orig_args = args.clone
11
11
  self[:testing_framework] = :shoulda
12
12
  self[:documentation_framework] = :rdoc
13
+ self[:gemcutter] = true
13
14
 
14
15
  git_config = Git.global_config
15
16
  self[:user_name] = git_config['user.name']
@@ -77,8 +78,8 @@ class Jeweler
77
78
 
78
79
  o.separator ""
79
80
 
80
- o.on('--gemcutter', 'setup project for gemcutter') do
81
- self[:gemcutter] = true
81
+ o.on('--[no-]gemcutter', 'setup project for gemcutter') do |v|
82
+ self[:gemcutter] = v
82
83
  end
83
84
 
84
85
  o.on('--rubyforge', 'setup project for rubyforge') do
@@ -54,6 +54,7 @@ class Jeweler
54
54
  namespace :release do
55
55
  desc "Release the current gem version to RubyForge."
56
56
  task :gem => [:gemspec, :build] do
57
+ $stderr.puts "DEPRECATION: Releasing gems to RubyForge is deprecated. You should see about releasing to Gemcutter instead: http://wiki.github.com/technicalpickles/jeweler/gemcutter"
57
58
  begin
58
59
  jeweler.release_gem_to_rubyforge
59
60
  rescue NoRubyForgeProjectInGemspecError => e
@@ -95,6 +96,7 @@ class Jeweler
95
96
 
96
97
  desc "Setup a rubyforge project for this gem"
97
98
  task :setup do
99
+ $stderr.puts "DEPRECATION: Releasing gems to RubyForge is deprecated. You should see about releasing to Gemcutter instead: http://wiki.github.com/technicalpickles/jeweler/gemcutter"
98
100
  begin
99
101
  jeweler.setup_rubyforge
100
102
  rescue NoRubyForgeProjectInGemspecError => e
@@ -7,12 +7,15 @@ class Jeweler
7
7
  # [files] a Rake::FileList of anything that is in git and not gitignored. You can include/exclude this default set, or override it entirely
8
8
  # [test_files] Similar to gem.files, except it's only things under the spec, test, or examples directory.
9
9
  # [extra_rdoc_files] a Rake::FileList including files like README*, ChangeLog*, and LICENSE*
10
- # [executables] uses anything found in the bin/ directory. You can override this.
10
+ # [executables] uses anything found in the bin/ directory.
11
11
  module Specification
12
12
 
13
13
  def self.filelist_attribute(name)
14
14
  code = %{
15
15
  def #{name}
16
+ if @#{name} && @#{name}.class != FileList
17
+ @#{name} = FileList[@#{name}]
18
+ end
16
19
  @#{name} ||= FileList[]
17
20
  end
18
21
  def #{name}=(value)
@@ -29,28 +32,47 @@ class Jeweler
29
32
 
30
33
  # Assigns the Jeweler defaults to the Gem::Specification
31
34
  def set_jeweler_defaults(base_dir, git_base_dir = nil)
32
- Dir.chdir(base_dir) do
33
- require 'git'
34
- if blank?(files) && git_base_dir
35
- git_subdir = File.expand_path(base_dir).sub(File.join(File.expand_path(git_base_dir), ""), "")
36
- repo = Git.open(git_base_dir)
37
- self.files = (repo.ls_files.keys - repo.lib.ignored_files).map {|fn| fn.sub(File.join(git_subdir, ""), "")}
35
+ base_dir = File.expand_path(base_dir)
36
+ #breakpoint
37
+ git_base_dir = if git_base_dir
38
+ File.expand_path(git_base_dir)
39
+ else
40
+ base_dir
41
+ end
42
+ can_git = git_base_dir && base_dir.include?(git_base_dir) && File.directory?(File.join(git_base_dir, '.git'))
43
+
44
+ Dir.chdir(git_base_dir) do
45
+ if can_git
46
+ require 'git'
47
+ repo = Git.open(git_base_dir) if can_git
48
+ end
49
+
50
+ if blank?(files) && repo
51
+ base_dir_with_trailing_separator = File.join(base_dir, "")
52
+
53
+ self.files = (repo.ls_files(base_dir).keys - repo.lib.ignored_files).map do |file|
54
+ #breakpoint
55
+ File.expand_path(file).sub(base_dir_with_trailing_separator, "")
56
+ end
38
57
  end
39
58
 
40
- if blank?(test_files) && File.directory?(File.join(base_dir, '.git'))
41
- repo = Git.open(base_dir)
59
+ if blank?(test_files) && repo
42
60
  self.test_files = FileList['{spec,test,examples}/**/*.rb'] - repo.lib.ignored_files
43
61
  end
44
62
 
45
63
  if blank?(executables)
46
- self.executables = Dir["bin/*"].map { |f| File.basename(f) }
64
+ self.executables = Dir['bin/*'].map { |f| File.basename(f) }
65
+ end
66
+
67
+ if blank?(extensions)
68
+ self.extensions = FileList['ext/**/extconf.rb']
47
69
  end
48
70
 
49
71
  self.has_rdoc = true
50
72
  rdoc_options << '--charset=UTF-8'
51
73
 
52
74
  if blank?(extra_rdoc_files)
53
- self.extra_rdoc_files = FileList["README*", "ChangeLog*", "LICENSE*"]
75
+ self.extra_rdoc_files = FileList['README*', 'ChangeLog*', 'LICENSE*', 'TODO']
54
76
  end
55
77
  end
56
78
  end
@@ -58,7 +80,7 @@ class Jeweler
58
80
  # Used by Specification#to_ruby to generate a ruby-respresentation of a Gem::Specification
59
81
  def ruby_code(obj)
60
82
  case obj
61
- when Rake::FileList then obj.to_a.inspect
83
+ when Rake::FileList then obj.uniq.to_a.inspect
62
84
  else super
63
85
  end
64
86
  end
@@ -68,12 +68,12 @@ class Jeweler
68
68
  end
69
69
 
70
70
  desc "Build gem"
71
- task :build do
71
+ task :build => :gemspec do
72
72
  jeweler.build_gem
73
73
  end
74
74
 
75
75
  desc "Install gem using sudo"
76
- task :install => ['check_dependencies:runtime', :build] do
76
+ task :install => [:build] do
77
77
  jeweler.install_gem
78
78
  end
79
79
 
@@ -133,7 +133,12 @@ class Jeweler
133
133
  end
134
134
  end
135
135
 
136
+ desc "Release gem"
137
+ task :release do
138
+ end
139
+
136
140
  namespace :github do
141
+ desc "Release Gem to GitHub"
137
142
  task :release do
138
143
  jeweler.release_gem_to_github
139
144
  end
@@ -142,6 +147,7 @@ class Jeweler
142
147
  task :release => 'github:release'
143
148
 
144
149
  namespace :git do
150
+ desc "Tag a release in Git"
145
151
  task :release do
146
152
  jeweler.release_to_git
147
153
  end
@@ -9,8 +9,7 @@ Description goes here.
9
9
  * Add tests for it. This is important so I don't break it in a
10
10
  future version unintentionally.
11
11
  * Commit, do not mess with rakefile, version, or history.
12
- (if you want to have your own version, that is fine but
13
- bump version in a commit by itself I can ignore when I pull)
12
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
14
13
  * Send me a pull request. Bonus points for topic branches.
15
14
 
16
15
  == Copyright
@@ -1,149 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
3
 
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "<%= project_name %>"
8
- gem.summary = %Q{<%= summary %>}
9
- gem.description = %Q{<%= description %>}
10
- gem.email = "<%= user_email %>"
11
- gem.homepage = "<%= homepage %>"
12
- gem.authors = ["<%= user_name %>"]
13
- <% if should_setup_rubyforge %>
14
- gem.rubyforge_project = "<%= project_name %>"
15
- <% end %>
16
- <% development_dependencies.each do |name, version| %>
17
- gem.add_development_dependency "<%= name %>", "<%= version %>"
18
- <% end %>
19
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
20
- end
21
- <% if should_setup_gemcutter %>
22
- Jeweler::GemcutterTasks.new
23
- <% end %>
24
- <% if should_setup_rubyforge %>
25
- Jeweler::RubyforgeTasks.new do |rubyforge|
26
- rubyforge.doc_task = "<%= doc_task %>"
27
- end
28
- <% end %>
29
- rescue LoadError
30
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
31
- end
4
+ <%= render_template 'jeweler_tasks.erb' %>
32
5
 
33
- <% case testing_framework %>
34
- <% when :rspec %>
35
- require 'spec/rake/spectask'
36
- Spec::Rake::SpecTask.new(:<%= test_task %>) do |<%= test_task %>|
37
- <%= test_task %>.libs << 'lib' << '<%= test_dir %>'
38
- <%= test_task %>.spec_files = FileList['<%= test_pattern %>']
39
- end
40
- <% when :micronaut %>
41
- require 'micronaut/rake_task'
42
- Micronaut::RakeTask.new(<%= test_task %>) do |<%= test_task %>|
43
- <%= test_task %>.pattern = '<%= test_pattern %>'
44
- <%= test_task %>.ruby_opts << '-Ilib -I<%= test_dir %>'
45
- end
46
- <% else %>
47
- require 'rake/testtask'
48
- Rake::TestTask.new(:<%= test_task %>) do |<%= test_task %>|
49
- <%= test_task %>.libs << 'lib' << '<%= test_dir %>'
50
- <%= test_task %>.pattern = '<%= test_pattern %>'
51
- <%= test_task %>.verbose = true
52
- end
53
- <% end %>
54
-
55
- <% case testing_framework %>
56
- <% when :rspec %>
57
- Spec::Rake::SpecTask.new(:rcov) do |spec|
58
- spec.libs << 'lib' << 'spec'
59
- spec.pattern = '<%= test_pattern %>'
60
- spec.rcov = true
61
- end
62
- <% when :micronaut %>
63
- Micronaut::RakeTask.new(:rcov) do |examples|
64
- examples.pattern = '<%= test_pattern %>'
65
- examples.rcov_opts = '-Ilib -I<%= test_dir %>'
66
- examples.rcov = true
67
- end
68
- <% else %>
69
- begin
70
- require 'rcov/rcovtask'
71
- Rcov::RcovTask.new do |<%= test_task %>|
72
- <%= test_task %>.libs << '<%= test_dir %>'
73
- <%= test_task %>.pattern = '<%= test_pattern %>'
74
- <%= test_task %>.verbose = true
75
- end
76
- rescue LoadError
77
- task :rcov do
78
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
79
- end
80
- end
81
- <% end %>
82
-
83
- task :<%= test_task %> => :check_dependencies
84
-
85
- <% if should_use_cucumber %>
86
- begin
87
- require 'cucumber/rake/task'
88
- Cucumber::Rake::Task.new(:features)
89
-
90
- task :features => :check_dependencies
91
- rescue LoadError
92
- task :features do
93
- abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
94
- end
95
- end
96
- <% end %>
97
-
98
- <% if should_use_reek %>
99
- begin
100
- require 'reek/rake_task'
101
- Reek::RakeTask.new do |t|
102
- t.fail_on_error = true
103
- t.verbose = false
104
- t.source_files = 'lib/**/*.rb'
105
- end
106
- rescue LoadError
107
- task :reek do
108
- abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
109
- end
110
- end
111
- <% end %>
112
-
113
- <% if should_use_roodi %>
114
- begin
115
- require 'roodi'
116
- require 'roodi_task'
117
- RoodiTask.new do |t|
118
- t.verbose = false
119
- end
120
- rescue LoadError
121
- task :roodi do
122
- abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi"
123
- end
124
- end
125
- <% end %>
126
-
127
- task :default => :<%= default_task %>
128
-
129
- <% case documentation_framework %>
130
- <% when :rdoc %>
131
- require 'rake/rdoctask'
132
- Rake::RDocTask.new do |rdoc|
133
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
134
-
135
- rdoc.rdoc_dir = 'rdoc'
136
- rdoc.title = "<%= project_name %> #{version}"
137
- rdoc.rdoc_files.include('README*')
138
- rdoc.rdoc_files.include('lib/**/*.rb')
139
- end
140
- <% when :yard %>
141
- begin
142
- require 'yard'
143
- YARD::Rake::YardocTask.new
144
- rescue LoadError
145
- task :yardoc do
146
- abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
147
- end
148
- end
149
- <% end %>
6
+ <%= render_template 'other_tasks.erb' %>
@@ -0,0 +1,29 @@
1
+ begin
2
+ require 'jeweler'
3
+ Jeweler::Tasks.new do |gem|
4
+ gem.name = "<%= project_name %>"
5
+ gem.summary = %Q{<%= summary %>}
6
+ gem.description = %Q{<%= description %>}
7
+ gem.email = "<%= user_email %>"
8
+ gem.homepage = "<%= homepage %>"
9
+ gem.authors = ["<%= user_name %>"]
10
+ <% if should_setup_rubyforge %>
11
+ gem.rubyforge_project = "<%= project_name %>"
12
+ <% end %>
13
+ <% development_dependencies.each do |name, version| %>
14
+ gem.add_development_dependency "<%= name %>", "<%= version %>"
15
+ <% end %>
16
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
17
+ end
18
+ <% if should_setup_gemcutter %>
19
+ Jeweler::GemcutterTasks.new
20
+ <% end %>
21
+ <% if should_setup_rubyforge %>
22
+ Jeweler::RubyforgeTasks.new do |rubyforge|
23
+ rubyforge.doc_task = "<%= doc_task %>"
24
+ end
25
+ <% end %>
26
+ rescue LoadError
27
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
28
+ end
29
+
@@ -0,0 +1,117 @@
1
+ <% case testing_framework %>
2
+ <% when :rspec %>
3
+ require 'spec/rake/spectask'
4
+ Spec::Rake::SpecTask.new(:<%= test_task %>) do |<%= test_task %>|
5
+ <%= test_task %>.libs << 'lib' << '<%= test_dir %>'
6
+ <%= test_task %>.spec_files = FileList['<%= test_pattern %>']
7
+ end
8
+ <% when :micronaut %>
9
+ require 'micronaut/rake_task'
10
+ Micronaut::RakeTask.new(<%= test_task %>) do |<%= test_task %>|
11
+ <%= test_task %>.pattern = '<%= test_pattern %>'
12
+ <%= test_task %>.ruby_opts << '-Ilib -I<%= test_dir %>'
13
+ end
14
+ <% else %>
15
+ require 'rake/testtask'
16
+ Rake::TestTask.new(:<%= test_task %>) do |<%= test_task %>|
17
+ <%= test_task %>.libs << 'lib' << '<%= test_dir %>'
18
+ <%= test_task %>.pattern = '<%= test_pattern %>'
19
+ <%= test_task %>.verbose = true
20
+ end
21
+ <% end %>
22
+
23
+ <% case testing_framework %>
24
+ <% when :rspec %>
25
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
26
+ spec.libs << 'lib' << 'spec'
27
+ spec.pattern = '<%= test_pattern %>'
28
+ spec.rcov = true
29
+ end
30
+ <% when :micronaut %>
31
+ Micronaut::RakeTask.new(:rcov) do |examples|
32
+ examples.pattern = '<%= test_pattern %>'
33
+ examples.rcov_opts = '-Ilib -I<%= test_dir %>'
34
+ examples.rcov = true
35
+ end
36
+ <% else %>
37
+ begin
38
+ require 'rcov/rcovtask'
39
+ Rcov::RcovTask.new do |<%= test_task %>|
40
+ <%= test_task %>.libs << '<%= test_dir %>'
41
+ <%= test_task %>.pattern = '<%= test_pattern %>'
42
+ <%= test_task %>.verbose = true
43
+ end
44
+ rescue LoadError
45
+ task :rcov do
46
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
47
+ end
48
+ end
49
+ <% end %>
50
+
51
+ task :<%= test_task %> => :check_dependencies
52
+
53
+ <% if should_use_cucumber %>
54
+ begin
55
+ require 'cucumber/rake/task'
56
+ Cucumber::Rake::Task.new(:features)
57
+
58
+ task :features => :check_dependencies
59
+ rescue LoadError
60
+ task :features do
61
+ abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
62
+ end
63
+ end
64
+ <% end %>
65
+
66
+ <% if should_use_reek %>
67
+ begin
68
+ require 'reek/adapters/rake_task'
69
+ Reek::RakeTask.new do |t|
70
+ t.fail_on_error = true
71
+ t.verbose = false
72
+ t.source_files = 'lib/**/*.rb'
73
+ end
74
+ rescue LoadError
75
+ task :reek do
76
+ abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
77
+ end
78
+ end
79
+ <% end %>
80
+
81
+ <% if should_use_roodi %>
82
+ begin
83
+ require 'roodi'
84
+ require 'roodi_task'
85
+ RoodiTask.new do |t|
86
+ t.verbose = false
87
+ end
88
+ rescue LoadError
89
+ task :roodi do
90
+ abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi"
91
+ end
92
+ end
93
+ <% end %>
94
+
95
+ task :default => :<%= default_task %>
96
+
97
+ <% case documentation_framework %>
98
+ <% when :rdoc %>
99
+ require 'rake/rdoctask'
100
+ Rake::RDocTask.new do |rdoc|
101
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
102
+
103
+ rdoc.rdoc_dir = 'rdoc'
104
+ rdoc.title = "<%= project_name %> #{version}"
105
+ rdoc.rdoc_files.include('README*')
106
+ rdoc.rdoc_files.include('lib/**/*.rb')
107
+ end
108
+ <% when :yard %>
109
+ begin
110
+ require 'yard'
111
+ YARD::Rake::YardocTask.new
112
+ rescue LoadError
113
+ task :yardoc do
114
+ abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
115
+ end
116
+ end
117
+ <% end %>