dima-jeweler 0.9.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. data/.gitignore +9 -0
  2. data/ChangeLog.markdown +54 -1
  3. data/README.markdown +89 -20
  4. data/ROADMAP +12 -0
  5. data/Rakefile +52 -12
  6. data/VERSION.yml +3 -3
  7. data/features/generator/cucumber.feature +83 -0
  8. data/features/generator/directory_layout.feature +76 -0
  9. data/features/generator/dotdocument.feature +14 -0
  10. data/features/generator/env_options.feature +9 -0
  11. data/features/generator/git.feature +94 -0
  12. data/features/generator/license.feature +11 -0
  13. data/features/generator/rakefile.feature +151 -0
  14. data/features/generator/readme.feature +12 -0
  15. data/features/generator/test.feature +41 -0
  16. data/features/generator/test_helper.feature +49 -0
  17. data/features/placeholder.feature +5 -0
  18. data/features/step_definitions/debug_steps.rb +6 -0
  19. data/features/step_definitions/filesystem_steps.rb +68 -0
  20. data/features/step_definitions/generator_steps.rb +284 -0
  21. data/features/step_definitions/task_steps.rb +6 -0
  22. data/features/support/env.rb +29 -0
  23. data/features/tasks/build_gem.feature +9 -0
  24. data/features/tasks/version.feature +24 -0
  25. data/features/tasks/version_bumping.feature +33 -0
  26. data/jeweler.gemspec +225 -0
  27. data/lib/jeweler.rb +39 -52
  28. data/lib/jeweler/commands.rb +2 -0
  29. data/lib/jeweler/commands/build_gem.rb +9 -0
  30. data/lib/jeweler/commands/check_dependencies.rb +52 -0
  31. data/lib/jeweler/commands/install_gem.rb +23 -2
  32. data/lib/jeweler/commands/release.rb +52 -12
  33. data/lib/jeweler/commands/release_to_rubyforge.rb +32 -9
  34. data/lib/jeweler/commands/setup_rubyforge.rb +57 -0
  35. data/lib/jeweler/commands/validate_gemspec.rb +9 -0
  36. data/lib/jeweler/commands/version/base.rb +13 -2
  37. data/lib/jeweler/commands/write_gemspec.rb +13 -0
  38. data/lib/jeweler/errors.rb +13 -1
  39. data/lib/jeweler/gemspec_helper.rb +31 -3
  40. data/lib/jeweler/generator.rb +80 -120
  41. data/lib/jeweler/generator/application.rb +12 -3
  42. data/lib/jeweler/generator/bacon_mixin.rb +43 -0
  43. data/lib/jeweler/generator/micronaut_mixin.rb +41 -0
  44. data/lib/jeweler/generator/minitest_mixin.rb +42 -0
  45. data/lib/jeweler/generator/options.rb +37 -3
  46. data/lib/jeweler/generator/rdoc_mixin.rb +9 -0
  47. data/lib/jeweler/generator/rspec_mixin.rb +42 -0
  48. data/lib/jeweler/generator/shoulda_mixin.rb +42 -0
  49. data/lib/jeweler/generator/testunit_mixin.rb +39 -0
  50. data/lib/jeweler/generator/yard_mixin.rb +14 -0
  51. data/lib/jeweler/rubyforge_tasks.rb +98 -0
  52. data/lib/jeweler/specification.rb +66 -0
  53. data/lib/jeweler/tasks.rb +72 -39
  54. data/lib/jeweler/templates/.document +5 -0
  55. data/lib/jeweler/templates/README.rdoc +12 -1
  56. data/lib/jeweler/templates/Rakefile +83 -49
  57. data/lib/jeweler/templates/bacon/helper.rb +1 -1
  58. data/lib/jeweler/templates/features/support/env.rb +4 -7
  59. data/lib/jeweler/templates/micronaut/helper.rb +1 -1
  60. data/lib/jeweler/templates/minitest/helper.rb +1 -1
  61. data/lib/jeweler/templates/rspec/flunking.rb +1 -1
  62. data/lib/jeweler/templates/rspec/helper.rb +4 -3
  63. data/lib/jeweler/templates/shoulda/helper.rb +1 -1
  64. data/lib/jeweler/templates/testunit/helper.rb +1 -1
  65. data/lib/jeweler/version_helper.rb +78 -33
  66. data/test/fixtures/bar/bin/foo_the_ultimate_bin +1 -0
  67. data/test/fixtures/bar/hey_include_me_in_gemspec +0 -0
  68. data/test/fixtures/bar/lib/foo_the_ultimate_lib.rb +1 -0
  69. data/test/fixtures/existing-project-with-version-plaintext/.document +5 -0
  70. data/test/fixtures/existing-project-with-version-plaintext/.gitignore +5 -0
  71. data/test/fixtures/existing-project-with-version-plaintext/LICENSE +20 -0
  72. data/test/fixtures/existing-project-with-version-plaintext/README.rdoc +7 -0
  73. data/test/fixtures/existing-project-with-version-plaintext/Rakefile +82 -0
  74. data/test/fixtures/existing-project-with-version-plaintext/VERSION +1 -0
  75. data/test/fixtures/existing-project-with-version-plaintext/existing-project-with-version.gemspec +29 -0
  76. data/test/fixtures/existing-project-with-version-plaintext/lib/existing_project_with_version.rb +0 -0
  77. data/test/fixtures/existing-project-with-version-plaintext/test/existing_project_with_version_test.rb +7 -0
  78. data/test/fixtures/existing-project-with-version-plaintext/test/test_helper.rb +10 -0
  79. data/test/fixtures/existing-project-with-version-yaml/.document +5 -0
  80. data/test/fixtures/existing-project-with-version-yaml/.gitignore +5 -0
  81. data/test/fixtures/existing-project-with-version-yaml/LICENSE +20 -0
  82. data/test/fixtures/existing-project-with-version-yaml/README.rdoc +7 -0
  83. data/test/fixtures/existing-project-with-version-yaml/Rakefile +82 -0
  84. data/test/fixtures/existing-project-with-version-yaml/VERSION.yml +4 -0
  85. data/test/fixtures/existing-project-with-version-yaml/bin/foo_the_ultimate_bin +0 -0
  86. data/test/fixtures/existing-project-with-version-yaml/existing-project-with-version.gemspec +29 -0
  87. data/test/fixtures/existing-project-with-version-yaml/lib/existing_project_with_version.rb +0 -0
  88. data/test/fixtures/existing-project-with-version-yaml/test/existing_project_with_version_test.rb +7 -0
  89. data/test/fixtures/existing-project-with-version-yaml/test/test_helper.rb +10 -0
  90. data/test/jeweler/commands/test_build_gem.rb +20 -1
  91. data/test/jeweler/commands/test_install_gem.rb +74 -0
  92. data/test/jeweler/commands/test_release.rb +289 -77
  93. data/test/jeweler/commands/test_release_to_rubyforge.rb +66 -50
  94. data/test/jeweler/commands/test_setup_rubyforge.rb +182 -0
  95. data/test/jeweler/commands/test_validate_gemspec.rb +27 -0
  96. data/test/jeweler/commands/test_write_gemspec.rb +34 -0
  97. data/test/jeweler/commands/version/test_base.rb +32 -0
  98. data/test/jeweler/commands/version/test_bump_major.rb +1 -0
  99. data/test/test_application.rb +31 -1
  100. data/test/test_gemspec_helper.rb +4 -0
  101. data/test/test_generator.rb +101 -114
  102. data/test/test_generator_initialization.rb +156 -0
  103. data/test/test_generator_mixins.rb +18 -0
  104. data/test/test_helper.rb +104 -16
  105. data/test/test_jeweler.rb +134 -96
  106. data/test/test_options.rb +59 -0
  107. data/test/test_specification.rb +61 -0
  108. data/test/test_tasks.rb +13 -18
  109. data/test/test_version_helper.rb +47 -9
  110. metadata +174 -43
  111. data/TODO +0 -11
  112. data/test/generators/initialization_test.rb +0 -146
@@ -0,0 +1,66 @@
1
+ require 'rubygems/specification'
2
+
3
+ class Jeweler
4
+ # Extend a Gem::Specification instance with this module to give it Jeweler
5
+ # super-cow powers.
6
+ module Specification
7
+
8
+ def self.filelist_attribute(name)
9
+ code = %{
10
+ def #{name}
11
+ @#{name} ||= FileList[]
12
+ end
13
+ def #{name}=(value)
14
+ @#{name} = FileList[value]
15
+ end
16
+ }
17
+
18
+ module_eval code, __FILE__, __LINE__ - 9
19
+ end
20
+
21
+ filelist_attribute :files
22
+ filelist_attribute :test_files
23
+ filelist_attribute :extra_rdoc_files
24
+
25
+
26
+ # Assigns the Jeweler defaults to the Gem::Specification
27
+ def set_jeweler_defaults(base_dir)
28
+ Dir.chdir(base_dir) do
29
+ if blank?(files) && File.directory?(File.join(base_dir, '.git'))
30
+ repo = Git.open(base_dir)
31
+ self.files = repo.ls_files.keys - repo.lib.ignored_files
32
+ end
33
+
34
+ if blank?(test_files) && File.directory?(File.join(base_dir, '.git'))
35
+ repo = Git.open(base_dir)
36
+ self.test_files = FileList['{spec,test,examples}/**/*.rb'] - repo.lib.ignored_files
37
+ end
38
+
39
+ if blank?(executables)
40
+ self.executables = Dir["bin/*"].map { |f| File.basename(f) }
41
+ end
42
+
43
+ self.has_rdoc = true
44
+ rdoc_options << '--charset=UTF-8'
45
+
46
+ if blank?(extra_rdoc_files)
47
+ self.extra_rdoc_files = FileList["README*", "ChangeLog*", "LICENSE*"]
48
+ end
49
+ end
50
+ end
51
+
52
+ # Used by Specification#to_ruby to generate a ruby-respresentation of a Gem::Specification
53
+ def ruby_code(obj)
54
+ case obj
55
+ when Rake::FileList then obj.to_a.inspect
56
+ else super
57
+ end
58
+ end
59
+
60
+ private
61
+
62
+ def blank?(value)
63
+ value.nil? || value.empty?
64
+ end
65
+ end
66
+ end
@@ -1,35 +1,61 @@
1
1
  require 'rake'
2
2
  require 'rake/tasklib'
3
3
 
4
+ class Rake::Application
5
+ attr_accessor :jeweler
6
+ end
7
+
4
8
  class Jeweler
9
+ # Rake tasks for managing your gem.
10
+ #
11
+ # Here's a basic example of using it:
12
+ #
13
+ # Jeweler::Tasks.new do |gem|
14
+ # gem.name = "jeweler"
15
+ # gem.summary = "Simple and opinionated helper for creating Rubygem projects on GitHub"
16
+ # gem.email = "josh@technicalpickles.com"
17
+ # gem.homepage = "http://github.com/technicalpickles/jeweler"
18
+ # gem.description = "Simple and opinionated helper for creating Rubygem projects on GitHub"
19
+ # gem.authors = ["Josh Nichols"]
20
+ # end
21
+ #
22
+ # The block variable gem is actually a Gem::Specification, so you can do anything you would normally do with a Gem::Specification. For more details, see the official gemspec reference: http://docs.rubygems.org/read/chapter/20
23
+ #
24
+ # Jeweler fills in a few reasonable defaults for you:
25
+ #
26
+ # [gem.files] a Rake::FileList of anything that is in git and not gitignored. You can include/exclude this default set, or override it entirely
27
+ # [gem.test_files] Similar to gem.files, except it's only things under the spec, test, or examples directory.
28
+ # [gem.extra_rdoc_files] a Rake::FileList including files like README*, ChangeLog*, and LICENSE*
29
+ # [gem.executables] uses anything found in the bin/ directory. You can override this.
30
+ #
5
31
  class Tasks < ::Rake::TaskLib
6
32
  attr_accessor :gemspec, :jeweler
7
33
 
8
34
  def initialize(gemspec = nil, &block)
9
- @gemspec = gemspec || Gem::Specification.new()
10
- yield @gemspec if block_given?
11
-
35
+ @gemspec = gemspec || Gem::Specification.new
12
36
  @jeweler = Jeweler.new(@gemspec)
37
+ yield @gemspec if block_given?
13
38
 
39
+ Rake.application.jeweler = @jeweler
14
40
  define
15
41
  end
16
42
 
17
43
  private
18
44
  def define
19
- desc "Setup initial version of 0.0.0"
20
- file "VERSION.yml" do
21
- @jeweler.write_version 0, 0, 0, :commit => false
22
- $stdout.puts "Created VERSION.yml: 0.0.0"
45
+ task :version_required do
46
+ unless jeweler.version_exists?
47
+ abort "Expected VERSION or VERSION.yml to exist. See version:write to create an initial one."
48
+ end
23
49
  end
24
50
 
25
51
  desc "Build gem"
26
52
  task :build do
27
- @jeweler.build_gem
53
+ jeweler.build_gem
28
54
  end
29
55
 
30
56
  desc "Install gem using sudo"
31
- task :install do
32
- @jeweler.install_gem
57
+ task :install => :build do
58
+ jeweler.install_gem
33
59
  end
34
60
 
35
61
  desc "Generate and validates gemspec"
@@ -37,66 +63,73 @@ class Jeweler
37
63
 
38
64
  namespace :gemspec do
39
65
  desc "Validates the gemspec"
40
- task :validate => 'VERSION.yml' do
41
- @jeweler.validate_gemspec
66
+ task :validate => :version_required do
67
+ jeweler.validate_gemspec
42
68
  end
43
69
 
44
- desc "Generates the gemspec, using version from VERSION.yml"
45
- task :generate => 'VERSION.yml' do
46
- @jeweler.write_gemspec
70
+ desc "Generates the gemspec, using version from VERSION"
71
+ task :generate => :version_required do
72
+ jeweler.write_gemspec
47
73
  end
48
74
  end
49
75
 
50
76
  desc "Displays the current version"
51
- task :version => 'version:setup' do
52
- $stdout.puts "Current version: #{@jeweler.version}"
77
+ task :version => :version_required do
78
+ $stdout.puts "Current version: #{jeweler.version}"
53
79
  end
54
80
 
55
81
  namespace :version do
56
- desc "Setup initial version of 0.0.0"
57
- task :setup => "VERSION.yml"
58
-
59
82
  desc "Writes out an explicit version. Respects the following environment variables, or defaults to 0: MAJOR, MINOR, PATCH"
60
83
  task :write do
61
84
  major, minor, patch = ENV['MAJOR'].to_i, ENV['MINOR'].to_i, ENV['PATCH'].to_i
62
- @jeweler.write_version(major, minor, patch, :announce => false, :commit => false)
63
- $stdout.puts "Updated version: #{@jeweler.version}"
85
+ jeweler.write_version(major, minor, patch, :announce => false, :commit => false)
86
+ $stdout.puts "Updated version: #{jeweler.version}"
64
87
  end
65
88
 
66
89
  namespace :bump do
67
90
  desc "Bump the gemspec by a major version."
68
- task :major => ['VERSION.yml', :version] do
69
- @jeweler.bump_major_version
70
- $stdout.puts "Updated version: #{@jeweler.version}"
91
+ task :major => [:version_required, :version] do
92
+ jeweler.bump_major_version
93
+ $stdout.puts "Updated version: #{jeweler.version}"
71
94
  end
72
95
 
73
96
  desc "Bump the gemspec by a minor version."
74
- task :minor => ['VERSION.yml', :version] do
75
- @jeweler.bump_minor_version
76
- $stdout.puts "Updated version: #{@jeweler.version}"
97
+ task :minor => [:version_required, :version] do
98
+ jeweler.bump_minor_version
99
+ $stdout.puts "Updated version: #{jeweler.version}"
77
100
  end
78
101
 
79
102
  desc "Bump the gemspec by a patch version."
80
- task :patch => ['VERSION.yml', :version] do
81
- @jeweler.bump_patch_version
82
- $stdout.puts "Updated version: #{@jeweler.version}"
103
+ task :patch => [:version_required, :version] do
104
+ jeweler.bump_patch_version
105
+ $stdout.puts "Updated version: #{jeweler.version}"
83
106
  end
84
107
  end
85
108
  end
86
109
 
87
110
  desc "Release the current version. Includes updating the gemspec, pushing, and tagging the release"
88
111
  task :release do
89
- @jeweler.release
112
+ jeweler.release
90
113
  end
91
-
92
- namespace :rubyforge do
93
- namespace :release do
94
- desc "Publish the current gem version to RubyForge."
95
- task :gem do
96
- @jeweler.release_gem_to_rubyforge
97
- end
114
+
115
+ desc "Check that runtime and development dependencies are installed"
116
+ task :check_dependencies do
117
+ jeweler.check_dependencies
118
+ end
119
+
120
+ namespace :check_dependencies do
121
+ desc "Check that runtime dependencies are installed"
122
+ task :runtime do
123
+ jeweler.check_dependencies(:runtime)
98
124
  end
125
+
126
+ desc"Check that development dependencies are installed"
127
+ task :development do
128
+ jeweler.check_dependencies(:development)
129
+ end
130
+
99
131
  end
132
+
100
133
  end
101
134
  end
102
135
  end
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
@@ -1,7 +1,18 @@
1
- = <%= github_repo_name %>
1
+ = <%= project_name %>
2
2
 
3
3
  Description goes here.
4
4
 
5
+ == Note on Patches/Pull Requests
6
+
7
+ * Fork the project.
8
+ * Make your feature addition or bug fix.
9
+ * Add tests for it. This is important so I don't break it in a
10
+ future version unintentionally.
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)
14
+ * Send me a pull request. Bonus points for topic branches.
15
+
5
16
  == Copyright
6
17
 
7
18
  Copyright (c) <%= Time.now.year %> <%= user_name %>. See LICENSE for details.
@@ -4,59 +4,71 @@ require 'rake'
4
4
  begin
5
5
  require 'jeweler'
6
6
  Jeweler::Tasks.new do |gem|
7
- gem.name = "<%= github_repo_name %>"
7
+ gem.name = "<%= project_name %>"
8
8
  gem.summary = %Q{<%= summary %>}
9
+ gem.description = %Q{<%= description %>}
9
10
  gem.email = "<%= user_email %>"
10
- gem.homepage = "<%= github_url %>"
11
+ gem.homepage = "<%= project_homepage %>"
11
12
  gem.authors = ["<%= user_name %>"]
13
+ <% if should_setup_rubyforge %>
14
+ gem.rubyforge_project = "<%= project_name %>"
15
+ <% end %>
16
+ <% development_dependencies.each do |dependency| %>
17
+ gem.add_development_dependency "<%= dependency %>"
18
+ <% end %>
12
19
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
13
20
  end
21
+ <% if should_setup_rubyforge %>
22
+ Jeweler::RubyforgeTasks.new do |rubyforge|
23
+ rubyforge.doc_task = "<%= doc_task %>"
24
+ end
25
+ <% end %>
14
26
  rescue LoadError
15
- puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
27
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
16
28
  end
17
29
 
18
- <% case testing_framework.to_sym %>
30
+ <% case testing_framework %>
19
31
  <% when :rspec %>
20
32
  require 'spec/rake/spectask'
21
- Spec::Rake::SpecTask.new(:spec) do |spec|
22
- spec.libs << 'lib' << 'spec'
23
- spec.spec_files = FileList['spec/**/*_spec.rb']
33
+ Spec::Rake::SpecTask.new(:<%= test_task %>) do |<%= test_task %>|
34
+ <%= test_task %>.libs << 'lib' << '<%= test_dir %>'
35
+ <%= test_task %>.spec_files = FileList['<%= test_pattern %>']
24
36
  end
25
37
  <% when :micronaut %>
26
38
  require 'micronaut/rake_task'
27
- Micronaut::RakeTask.new(:examples) do |examples|
28
- examples.pattern = 'examples/**/*_example.rb'
29
- examples.ruby_opts << '-Ilib -Iexamples'
39
+ Micronaut::RakeTask.new(<%= test_task %>) do |<%= test_task %>|
40
+ <%= test_task %>.pattern = '<%= test_pattern %>'
41
+ <%= test_task %>.ruby_opts << '-Ilib -I<%= test_dir %>'
30
42
  end
31
43
  <% else %>
32
44
  require 'rake/testtask'
33
- Rake::TestTask.new(:<%= test_or_spec %>) do |<%= test_or_spec %>|
34
- <%= test_or_spec %>.libs << 'lib' << '<%= test_or_spec %>'
35
- <%= test_or_spec %>.pattern = '<%= test_or_spec %>/**/*_<%= test_or_spec %>.rb'
36
- <%= test_or_spec %>.verbose = false
45
+ Rake::TestTask.new(:<%= test_task %>) do |<%= test_task %>|
46
+ <%= test_task %>.libs << 'lib' << '<%= test_dir %>'
47
+ <%= test_task %>.pattern = '<%= test_pattern %>'
48
+ <%= test_task %>.verbose = true
37
49
  end
38
50
  <% end %>
39
51
 
40
- <% case testing_framework.to_sym %>
52
+ <% case testing_framework %>
41
53
  <% when :rspec %>
42
54
  Spec::Rake::SpecTask.new(:rcov) do |spec|
43
55
  spec.libs << 'lib' << 'spec'
44
- spec.pattern = 'spec/**/*_spec.rb'
56
+ spec.pattern = '<%= test_pattern %>'
45
57
  spec.rcov = true
46
58
  end
47
59
  <% when :micronaut %>
48
60
  Micronaut::RakeTask.new(:rcov) do |examples|
49
- examples.pattern = 'examples/**/*_example.rb'
50
- examples.rcov_opts = '-Ilib -Iexamples'
61
+ examples.pattern = '<%= test_pattern %>'
62
+ examples.rcov_opts = '-Ilib -I<%= test_dir %>'
51
63
  examples.rcov = true
52
64
  end
53
65
  <% else %>
54
66
  begin
55
67
  require 'rcov/rcovtask'
56
- Rcov::RcovTask.new do |<%= test_or_spec %>|
57
- <%= test_or_spec %>.libs << '<%= test_or_spec %>'
58
- <%= test_or_spec %>.pattern = '<%= test_or_spec %>/**/*_<%= test_or_spec %>.rb'
59
- <%= test_or_spec %>.verbose = true
68
+ Rcov::RcovTask.new do |<%= test_task %>|
69
+ <%= test_task %>.libs << '<%= test_dir %>'
70
+ <%= test_task %>.pattern = '<%= test_pattern %>'
71
+ <%= test_task %>.verbose = true
60
72
  end
61
73
  rescue LoadError
62
74
  task :rcov do
@@ -65,10 +77,14 @@ rescue LoadError
65
77
  end
66
78
  <% end %>
67
79
 
80
+ task :<%= test_task %> => :check_dependencies
81
+
68
82
  <% if should_use_cucumber %>
69
83
  begin
70
84
  require 'cucumber/rake/task'
71
85
  Cucumber::Rake::Task.new(:features)
86
+
87
+ task :features => :check_dependencies
72
88
  rescue LoadError
73
89
  task :features do
74
90
  abort "Cucumber is not available. In order to run features, you must: sudo gem install cucumber"
@@ -76,41 +92,59 @@ rescue LoadError
76
92
  end
77
93
  <% end %>
78
94
 
95
+ <% if should_use_reek %>
96
+ begin
97
+ require 'reek/rake_task'
98
+ Reek::RakeTask.new do |t|
99
+ t.fail_on_error = true
100
+ t.verbose = false
101
+ t.source_files = 'lib/**/*.rb'
102
+ end
103
+ rescue LoadError
104
+ task :reek do
105
+ abort "Reek is not available. In order to run reek, you must: sudo gem install reek"
106
+ end
107
+ end
108
+ <% end %>
109
+
110
+ <% if should_use_roodi %>
111
+ begin
112
+ require 'roodi'
113
+ require 'roodi_task'
114
+ RoodiTask.new do |t|
115
+ t.verbose = false
116
+ end
117
+ rescue LoadError
118
+ task :roodi do
119
+ abort "Roodi is not available. In order to run roodi, you must: sudo gem install roodi"
120
+ end
121
+ end
122
+ <% end %>
123
+
79
124
  task :default => :<%= default_task %>
80
125
 
126
+ <% case documentation_framework %>
127
+ <% when :rdoc %>
81
128
  require 'rake/rdoctask'
82
129
  Rake::RDocTask.new do |rdoc|
83
- config = YAML.load(File.read('VERSION.yml'))
130
+ if File.exist?('VERSION')
131
+ version = File.read('VERSION')
132
+ else
133
+ version = ""
134
+ end
135
+
84
136
  rdoc.rdoc_dir = 'rdoc'
85
- rdoc.title = "<%= github_repo_name %> #{config[:major]}.#{config[:minor]}.#{config[:patch]}"
86
- rdoc.options << '--line-numbers' << '--inline-source'
137
+ rdoc.title = "<%= project_name %> #{version}"
87
138
  rdoc.rdoc_files.include('README*')
88
139
  rdoc.rdoc_files.include('lib/**/*.rb')
89
140
  end
90
-
91
- # Rubyforge documentation task
141
+ <% when :yard %>
92
142
  begin
93
- require 'rake/contrib/sshpublisher'
94
- namespace :rubyforge do
95
-
96
- desc "Release gem and RDoc documentation to RubyForge"
97
- task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
98
-
99
- namespace :release do
100
- desc "Publish RDoc to RubyForge."
101
- task :docs => [:rdoc] do
102
- config = YAML.load(
103
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
104
- )
105
-
106
- host = "#{config['username']}@rubyforge.org"
107
- remote_dir = "/var/www/gforge-projects/<%= github_repo_name %>/"
108
- local_dir = 'rdoc'
109
-
110
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
111
- end
112
- end
113
- end
143
+ require 'yard'
144
+ YARD::Rake::YardocTask.new
114
145
  rescue LoadError
115
- puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
146
+ task :yardoc do
147
+ abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
148
+ end
116
149
  end
150
+ <% end %>