jeweler 1.4.0 → 1.5.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/.document +14 -0
  2. data/.gitignore +13 -2
  3. data/ChangeLog.markdown +8 -8
  4. data/Gemfile +21 -0
  5. data/Gemfile.lock +57 -0
  6. data/README.markdown +6 -6
  7. data/Rakefile +32 -46
  8. data/features/generator/cucumber.feature +20 -0
  9. data/features/generator/directory_layout.feature +10 -0
  10. data/features/generator/gemfile.feature +71 -0
  11. data/features/generator/git.feature +8 -0
  12. data/features/generator/license.feature +11 -2
  13. data/features/generator/rakefile.feature +25 -23
  14. data/features/generator/test.feature +6 -0
  15. data/features/generator/test_helper.feature +107 -11
  16. data/features/step_definitions/filesystem_steps.rb +5 -3
  17. data/features/step_definitions/generator_steps.rb +68 -4
  18. data/features/support/env.rb +26 -13
  19. data/jeweler.gemspec +222 -207
  20. data/lib/jeweler.rb +7 -5
  21. data/lib/jeweler/commands.rb +1 -3
  22. data/lib/jeweler/commands/check_dependencies.rb +3 -5
  23. data/lib/jeweler/commands/install_gem.rb +1 -2
  24. data/lib/jeweler/commands/release_to_git.rb +5 -3
  25. data/lib/jeweler/commands/release_to_github.rb +24 -8
  26. data/lib/jeweler/commands/{release_to_gemcutter.rb → release_to_rubygems.rb} +1 -2
  27. data/lib/jeweler/commands/version/base.rb +16 -2
  28. data/lib/jeweler/commands/write_gemspec.rb +0 -1
  29. data/lib/jeweler/errors.rb +4 -16
  30. data/lib/jeweler/gemcutter_tasks.rb +4 -32
  31. data/lib/jeweler/gemspec_helper.rb +3 -6
  32. data/lib/jeweler/generator.rb +23 -6
  33. data/lib/jeweler/generator/options.rb +17 -14
  34. data/lib/jeweler/generator/rspec_mixin.rb +1 -1
  35. data/lib/jeweler/generator/shindo_mixin.rb +44 -0
  36. data/lib/jeweler/generator/shoulda_mixin.rb +1 -1
  37. data/lib/jeweler/rubyforge_tasks.rb +5 -29
  38. data/lib/jeweler/rubygems_dot_org_tasks.rb +38 -0
  39. data/lib/jeweler/rubygems_tasks.rb +38 -0
  40. data/lib/jeweler/specification.rb +36 -12
  41. data/lib/jeweler/tasks.rb +49 -13
  42. data/lib/jeweler/templates/.document +6 -0
  43. data/lib/jeweler/templates/.gitignore +34 -16
  44. data/lib/jeweler/templates/Gemfile +12 -0
  45. data/lib/jeweler/templates/LICENSE +1 -1
  46. data/lib/jeweler/templates/Rakefile +1 -0
  47. data/lib/jeweler/templates/bacon/helper.rb +1 -0
  48. data/lib/jeweler/templates/bundler_setup.erb +10 -0
  49. data/lib/jeweler/templates/features/support/env.rb +2 -0
  50. data/lib/jeweler/templates/jeweler_tasks.erb +20 -23
  51. data/lib/jeweler/templates/micronaut/helper.rb +1 -0
  52. data/lib/jeweler/templates/minitest/helper.rb +1 -0
  53. data/lib/jeweler/templates/other_tasks.erb +27 -59
  54. data/lib/jeweler/templates/riot/helper.rb +1 -0
  55. data/lib/jeweler/templates/rspec/{spec.opts → .rspec} +0 -0
  56. data/lib/jeweler/templates/rspec/helper.rb +7 -3
  57. data/lib/jeweler/templates/shindo/flunking.rb +8 -0
  58. data/lib/jeweler/templates/shindo/helper.rb +6 -0
  59. data/lib/jeweler/templates/shoulda/helper.rb +1 -0
  60. data/lib/jeweler/templates/testunit/helper.rb +1 -0
  61. data/lib/jeweler/version.rb +10 -0
  62. data/lib/jeweler/version_helper.rb +1 -2
  63. data/test/fixtures/existing-project-with-version-constant/Rakefile +4 -2
  64. data/test/fixtures/existing-project-with-version-plaintext/Rakefile +4 -2
  65. data/test/fixtures/existing-project-with-version-yaml/Rakefile +4 -2
  66. data/test/jeweler/commands/test_install_gem.rb +2 -2
  67. data/test/jeweler/commands/test_release_to_gemcutter.rb +4 -4
  68. data/test/jeweler/commands/test_release_to_git.rb +32 -25
  69. data/test/jeweler/commands/test_release_to_github.rb +108 -25
  70. data/test/jeweler/generator/test_options.rb +16 -22
  71. data/test/jeweler/test_generator.rb +5 -0
  72. data/test/jeweler/test_specification.rb +18 -7
  73. data/test/jeweler/test_tasks.rb +1 -1
  74. data/test/test_helper.rb +12 -14
  75. data/test/test_jeweler.rb +0 -12
  76. metadata +159 -66
  77. data/VERSION.yml +0 -5
  78. data/lib/jeweler/commands/release_to_rubyforge.rb +0 -52
  79. data/lib/jeweler/commands/setup_rubyforge.rb +0 -63
  80. data/test/jeweler/commands/test_release_to_rubyforge.rb +0 -153
  81. data/test/jeweler/commands/test_setup_rubyforge.rb +0 -178
@@ -1,5 +1,11 @@
1
+ # .document is used by rdoc and yard to know how to generate documentation
2
+ # for example, it can be used to control how rdoc gets built when you do `gem install foo`
3
+
1
4
  README.rdoc
2
5
  lib/**/*.rb
3
6
  bin/*
7
+
8
+ # Files below this - are treated as 'extra files', and aren't parsed for ruby code
9
+ -
4
10
  features/**/*.feature
5
11
  LICENSE
@@ -1,21 +1,39 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
1
+ # rcov generated
2
+ coverage
7
3
 
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
4
+ # rdoc generated
5
+ rdoc
12
6
 
13
- ## VIM
14
- *.swp
7
+ # yard generated
8
+ doc
9
+ .yardoc
15
10
 
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
11
+ # jeweler generated
19
12
  pkg
20
13
 
21
- ## PROJECT::SPECIFIC
14
+ # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
15
+ #
16
+ # * Create a file at ~/.gitignore
17
+ # * Include files you want ignored
18
+ # * Run: git config --global core.excludesfile ~/.gitignore
19
+ #
20
+ # After doing this, these files will be ignored in all your git projects,
21
+ # saving you from having to 'pollute' every project you touch with them
22
+ #
23
+ # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
24
+ #
25
+ # For MacOS:
26
+ #
27
+ #.DS_Store
28
+ #
29
+ # For TextMate
30
+ #*.tmproj
31
+ #tmtags
32
+ #
33
+ # For emacs:
34
+ #*~
35
+ #\#*
36
+ #.\#*
37
+ #
38
+ # For vim:
39
+ #*.swp
@@ -0,0 +1,12 @@
1
+ source :gemcutter
2
+ # Add dependencies required to use your gem here.
3
+ # Example:
4
+ # gem "activesupport", ">= 2.3.5"
5
+
6
+ # Add dependencies to develop your gem here.
7
+ # Include everything needed to run rake, tests, features, etc.
8
+ group :development do
9
+ <% development_dependencies.each do |name, version| %>
10
+ gem "<%= name %>", "<%= version %>"
11
+ <% end %>
12
+ end
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 <%= user_name %>
1
+ Copyright (c) <%= Time.now.year %> <%= user_name %>
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ <%= render_template 'bundler_setup.erb' %>
2
3
  require 'rake'
3
4
 
4
5
  <%= render_template 'jeweler_tasks.erb' %>
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ <%= render_template 'bundler_setup.erb' %>
2
3
  require 'bacon'
3
4
 
4
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -0,0 +1,10 @@
1
+ <% if should_use_bundler %>
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+ <% end %>
@@ -1,3 +1,5 @@
1
+ <%= render_template 'bundler_setup.erb' %>
2
+
1
3
  $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../lib')
2
4
  require '<%= require_name %>'
3
5
 
@@ -1,29 +1,26 @@
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 %>"]
1
+ require 'jeweler'
2
+ Jeweler::Tasks.new do |gem|
3
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
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
10
  <% if should_setup_rubyforge %>
11
- gem.rubyforge_project = "<%= project_name %>"
11
+ gem.rubyforge_project = "<%= project_name %>"
12
12
  <% end %>
13
+ # Include your dependencies below. Runtime dependencies are required when using your gem,
14
+ # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
15
+ # spec.add_runtime_dependency 'jabber4r', '> 0.1'
16
+ # spec.add_development_dependency 'rspec', '> 1.2.3'
13
17
  <% 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
18
+ gem.add_development_dependency "<%= name %>", "<%= version %>"
20
19
  <% end %>
20
+ end
21
+ Jeweler::RubygemsDotOrgsTasks.new
21
22
  <% 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"
23
+ Jeweler::RubyforgeTasks.new do |rubyforge|
24
+ rubyforge.doc_task = "<%= doc_task %>"
28
25
  end
29
-
26
+ <% end %>
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ <%= render_template 'bundler_setup.erb' %>
2
3
  require 'micronaut'
3
4
 
4
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ <%= render_template 'bundler_setup.erb' %>
2
3
  require 'minitest/unit'
3
4
 
4
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -1,16 +1,19 @@
1
1
  <% case testing_framework %>
2
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 %>']
3
+ require 'rspec/core'
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:<%= test_task %>) do |<%= test_task %>|
6
+ <%= test_task %>.pattern = FileList['<%= test_pattern %>']
7
7
  end
8
8
  <% when :micronaut %>
9
9
  require 'micronaut/rake_task'
10
- Micronaut::RakeTask.new(<%= test_task %>) do |<%= test_task %>|
10
+ Micronaut::RakeTask.new(:<%= test_task %>) do |<%= test_task %>|
11
11
  <%= test_task %>.pattern = '<%= test_pattern %>'
12
12
  <%= test_task %>.ruby_opts << '-Ilib -I<%= test_dir %>'
13
13
  end
14
+ <% when :shindo %>
15
+ require 'shindo/rake'
16
+ Shindo::Rake.new
14
17
  <% else %>
15
18
  require 'rake/testtask'
16
19
  Rake::TestTask.new(:<%= test_task %>) do |<%= test_task %>|
@@ -22,8 +25,7 @@ end
22
25
 
23
26
  <% case testing_framework %>
24
27
  <% when :rspec %>
25
- Spec::Rake::SpecTask.new(:rcov) do |spec|
26
- spec.libs << 'lib' << 'spec'
28
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
27
29
  spec.pattern = '<%= test_pattern %>'
28
30
  spec.rcov = true
29
31
  end
@@ -34,61 +36,33 @@ Micronaut::RakeTask.new(:rcov) do |examples|
34
36
  examples.rcov = true
35
37
  end
36
38
  <% 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
39
+ require 'rcov/rcovtask'
40
+ Rcov::RcovTask.new do |<%= test_task %>|
41
+ <%= test_task %>.libs << '<%= test_dir %>'
42
+ <%= test_task %>.pattern = '<%= test_pattern %>'
43
+ <%= test_task %>.verbose = true
48
44
  end
49
45
  <% end %>
50
46
 
51
- task :<%= test_task %> => :check_dependencies
52
-
53
47
  <% 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
48
+ require 'cucumber/rake/task'
49
+ Cucumber::Rake::Task.new(:features)
64
50
  <% end %>
65
51
 
66
52
  <% 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
53
+ require 'reek/rake/task'
54
+ Reek::Rake::Task.new do |t|
55
+ t.fail_on_error = true
56
+ t.verbose = false
57
+ t.source_files = 'lib/**/*.rb'
78
58
  end
79
59
  <% end %>
80
60
 
81
61
  <% 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
62
+ require 'roodi'
63
+ require 'roodi_task'
64
+ RoodiTask.new do |t|
65
+ t.verbose = false
92
66
  end
93
67
  <% end %>
94
68
 
@@ -106,12 +80,6 @@ Rake::RDocTask.new do |rdoc|
106
80
  rdoc.rdoc_files.include('lib/**/*.rb')
107
81
  end
108
82
  <% 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
83
+ require 'yard'
84
+ YARD::Rake::YardocTask.new
117
85
  <% end %>
@@ -1,3 +1,4 @@
1
1
  require 'rubygems'
2
+ <%= render_template 'bundler_setup.erb' %>
2
3
  require 'riot'
3
4
  require '<%= require_name %>'
@@ -1,10 +1,14 @@
1
+ <%= render_template 'bundler_setup.erb' %>
1
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
4
  require '<%= require_name %>'
4
- require 'spec'
5
- require 'spec/autorun'
5
+ require 'rspec'
6
+ require 'rspec/autorun'
6
7
 
8
+ # Requires supporting files with custom matchers and macros, etc,
9
+ # in ./support/ and its subdirectories.
10
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
7
11
 
8
- Spec::Runner.configure do |config|
12
+ RSpec.configure do |config|
9
13
 
10
14
  end
@@ -0,0 +1,8 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/tests_helper')
2
+
3
+ Shindo.tests("<%= constant_name %>") do
4
+ test("fails") do
5
+ "hey buddy, you should probably rename this file and start specing for real"
6
+ false
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require '<%= require_name %>'
4
+ require 'rubygems'
5
+ <%= render_template 'bundler_setup.erb' %>
6
+ require 'shindo'
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ <%= render_template 'bundler_setup.erb' %>
2
3
  require 'test/unit'
3
4
  require 'shoulda'
4
5
 
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ <%= render_template 'bundler_setup.erb' %>
2
3
  require 'test/unit'
3
4
 
4
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -0,0 +1,10 @@
1
+ class Jeweler
2
+ module Version
3
+ MAJOR = 1
4
+ MINOR = 5
5
+ PATCH = 0
6
+ BUILD = 'pre2'
7
+
8
+ STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
9
+ end
10
+ end
@@ -49,7 +49,7 @@ class Jeweler
49
49
  module PlaintextExtension
50
50
  def write
51
51
  File.open(plaintext_path, 'w') do |file|
52
- file.puts to_s
52
+ file.write to_s
53
53
  end
54
54
  end
55
55
 
@@ -132,6 +132,5 @@ class Jeweler
132
132
  absolute_path = File.expand_path(denormalized_path)
133
133
  absolute_path.gsub(Dir.getwd + File::SEPARATOR, '')
134
134
  end
135
-
136
135
  end
137
136
  end
@@ -13,7 +13,7 @@ begin
13
13
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
14
14
  end
15
15
  rescue LoadError
16
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
16
+ puts "Jeweler not available. Install it with: gem install technicalpickles-jeweler -s http://gems.github.com"
17
17
  end
18
18
 
19
19
  require 'rake/testtask'
@@ -32,7 +32,7 @@ begin
32
32
  end
33
33
  rescue LoadError
34
34
  task :rcov do
35
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
35
+ abort "RCov is not available. In order to run rcov, you must: gem install spicycode-rcov"
36
36
  end
37
37
  end
38
38
 
@@ -42,6 +42,7 @@ task :default => :test
42
42
  require 'rake/rdoctask'
43
43
  Rake::RDocTask.new do |rdoc|
44
44
  if File.exist?('VERSION.yml')
45
+ require 'yaml'
45
46
  config = YAML.load(File.read('VERSION.yml'))
46
47
  version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
47
48
  else
@@ -66,6 +67,7 @@ begin
66
67
  namespace :release do
67
68
  desc "Publish RDoc to RubyForge."
68
69
  task :docs => [:rdoc] do
70
+ require 'yaml'
69
71
  config = YAML.load(
70
72
  File.read(File.expand_path('~/.rubyforge/user-config.yml'))
71
73
  )
@@ -12,7 +12,7 @@ begin
12
12
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
13
13
  end
14
14
  rescue LoadError
15
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
15
+ puts "Jeweler not available. Install it with: gem install technicalpickles-jeweler -s http://gems.github.com"
16
16
  end
17
17
 
18
18
  require 'rake/testtask'
@@ -31,7 +31,7 @@ begin
31
31
  end
32
32
  rescue LoadError
33
33
  task :rcov do
34
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
34
+ abort "RCov is not available. In order to run rcov, you must: gem install spicycode-rcov"
35
35
  end
36
36
  end
37
37
 
@@ -41,6 +41,7 @@ task :default => :test
41
41
  require 'rake/rdoctask'
42
42
  Rake::RDocTask.new do |rdoc|
43
43
  if File.exist?('VERSION.yml')
44
+ require 'yaml'
44
45
  config = YAML.load(File.read('VERSION.yml'))
45
46
  version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
46
47
  else
@@ -65,6 +66,7 @@ begin
65
66
  namespace :release do
66
67
  desc "Publish RDoc to RubyForge."
67
68
  task :docs => [:rdoc] do
69
+ require 'yaml'
68
70
  config = YAML.load(
69
71
  File.read(File.expand_path('~/.rubyforge/user-config.yml'))
70
72
  )