jeweler 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.markdown +28 -40
- data/Rakefile +25 -31
- data/VERSION.yml +3 -2
- data/bin/jeweler +1 -4
- data/features/generator/cucumber.feature +3 -3
- data/features/generator/directory_layout.feature +6 -6
- data/features/generator/git.feature +6 -6
- data/features/generator/rakefile.feature +17 -17
- data/features/generator/test.feature +10 -3
- data/features/generator/test_helper.feature +16 -9
- data/features/step_definitions/filesystem_steps.rb +2 -2
- data/features/step_definitions/generator_steps.rb +11 -4
- data/features/support/env.rb +1 -1
- data/features/tasks/version.feature +7 -0
- data/features/tasks/version_bumping.feature +16 -0
- data/jeweler.gemspec +60 -34
- data/lib/jeweler.rb +49 -27
- data/lib/jeweler/commands.rb +22 -14
- data/lib/jeweler/commands/build_gem.rb +6 -1
- data/lib/jeweler/commands/install_gem.rb +1 -1
- data/lib/jeweler/commands/release_to_git.rb +57 -0
- data/lib/jeweler/commands/{release.rb → release_to_github.rb} +2 -22
- data/lib/jeweler/commands/release_to_rubyforge.rb +4 -3
- data/lib/jeweler/commands/setup_rubyforge.rb +7 -1
- data/lib/jeweler/commands/version/write.rb +2 -2
- data/lib/jeweler/commands/write_gemspec.rb +5 -3
- data/lib/jeweler/gemcutter_tasks.rb +2 -1
- data/lib/jeweler/gemspec_helper.rb +27 -14
- data/lib/jeweler/generator.rb +60 -82
- data/lib/jeweler/generator/application.rb +5 -7
- data/lib/jeweler/generator/bacon_mixin.rb +1 -1
- data/lib/jeweler/generator/github_mixin.rb +29 -0
- data/lib/jeweler/generator/micronaut_mixin.rb +1 -1
- data/lib/jeweler/generator/minitest_mixin.rb +6 -6
- data/lib/jeweler/generator/options.rb +67 -11
- data/lib/jeweler/generator/riot_mixin.rb +42 -0
- data/lib/jeweler/generator/rspec_mixin.rb +1 -1
- data/lib/jeweler/generator/shoulda_mixin.rb +4 -4
- data/lib/jeweler/generator/testspec_mixin.rb +42 -0
- data/lib/jeweler/generator/testunit_mixin.rb +3 -3
- data/lib/jeweler/generator/yard_mixin.rb +1 -1
- data/lib/jeweler/rubyforge_tasks.rb +42 -24
- data/lib/jeweler/specification.rb +11 -5
- data/lib/jeweler/tasks.rb +78 -41
- data/lib/jeweler/templates/.gitignore +17 -1
- data/lib/jeweler/templates/Rakefile +4 -8
- data/lib/jeweler/templates/minitest/flunking.rb +2 -2
- data/lib/jeweler/templates/minitest/helper.rb +3 -3
- data/lib/jeweler/templates/riot/flunking.rb +11 -0
- data/lib/jeweler/templates/riot/helper.rb +3 -0
- data/lib/jeweler/templates/rspec/spec.opts +1 -0
- data/lib/jeweler/templates/shoulda/flunking.rb +2 -2
- data/lib/jeweler/templates/testspec/flunking.rb +7 -0
- data/lib/jeweler/templates/testspec/helper.rb +7 -0
- data/lib/jeweler/templates/testunit/flunking.rb +2 -2
- data/lib/jeweler/version_helper.rb +14 -5
- data/test/fixtures/existing-project-with-version-constant/.document +5 -0
- data/test/fixtures/existing-project-with-version-constant/.gitignore +5 -0
- data/test/fixtures/existing-project-with-version-constant/LICENSE +20 -0
- data/test/fixtures/existing-project-with-version-constant/README.rdoc +7 -0
- data/test/fixtures/existing-project-with-version-constant/Rakefile +83 -0
- data/test/fixtures/existing-project-with-version-constant/existing-project-with-version.gemspec +29 -0
- data/test/fixtures/existing-project-with-version-constant/lib/existing_project_with_version.rb +0 -0
- data/test/fixtures/existing-project-with-version-constant/test/existing_project_with_version_test.rb +7 -0
- data/test/fixtures/existing-project-with-version-constant/test/test_helper.rb +10 -0
- data/test/jeweler/commands/test_build_gem.rb +54 -23
- data/test/jeweler/commands/test_install_gem.rb +4 -4
- data/test/jeweler/commands/test_release_to_git.rb +201 -0
- data/test/jeweler/commands/{test_release.rb → test_release_to_github.rb} +10 -49
- data/test/jeweler/commands/test_release_to_rubyforge.rb +0 -4
- data/test/jeweler/commands/test_setup_rubyforge.rb +0 -4
- data/test/jeweler/commands/test_write_gemspec.rb +11 -2
- data/test/jeweler/commands/version/test_write.rb +1 -2
- data/test/{test_application.rb → jeweler/generator/test_application.rb} +23 -50
- data/test/{test_options.rb → jeweler/generator/test_options.rb} +72 -8
- data/test/{test_gemspec_helper.rb → jeweler/test_gemspec_helper.rb} +5 -1
- data/test/{test_generator.rb → jeweler/test_generator.rb} +32 -76
- data/test/{test_generator_initialization.rb → jeweler/test_generator_initialization.rb} +43 -35
- data/test/{test_generator_mixins.rb → jeweler/test_generator_mixins.rb} +8 -3
- data/test/{test_specification.rb → jeweler/test_specification.rb} +0 -0
- data/test/jeweler/test_tasks.rb +50 -0
- data/test/{test_version_helper.rb → jeweler/test_version_helper.rb} +66 -5
- data/test/test_helper.rb +20 -2
- data/test/test_jeweler.rb +21 -8
- metadata +58 -26
- data/ROADMAP +0 -12
- data/test/test_tasks.rb +0 -35
@@ -19,22 +19,20 @@ class Jeweler
|
|
19
19
|
return 1
|
20
20
|
end
|
21
21
|
|
22
|
-
|
22
|
+
if options[:project_name].nil? || options[:project_name].squeeze.strip == ""
|
23
23
|
$stderr.puts options.opts
|
24
24
|
return 1
|
25
25
|
end
|
26
26
|
|
27
|
-
project_name = arguments.first
|
28
|
-
|
29
27
|
begin
|
30
|
-
generator = Jeweler::Generator.new(
|
28
|
+
generator = Jeweler::Generator.new(options)
|
31
29
|
generator.run
|
32
30
|
return 0
|
33
31
|
rescue Jeweler::NoGitUserName
|
34
|
-
$stderr.puts %Q{No user.name found in ~/.gitconfig. Please tell git about yourself (see http://github.com/
|
32
|
+
$stderr.puts %Q{No user.name found in ~/.gitconfig. Please tell git about yourself (see http://help.github.com/git-email-settings/ for details). For example: git config --global user.name "mad voo"}
|
35
33
|
return 1
|
36
34
|
rescue Jeweler::NoGitUserEmail
|
37
|
-
$stderr.puts %Q{No user.email found in ~/.gitconfig. Please tell git about yourself (see http://github.com/
|
35
|
+
$stderr.puts %Q{No user.email found in ~/.gitconfig. Please tell git about yourself (see http://help.github.com/git-email-settings/ for details). For example: git config --global user.email mad.vooo@gmail.com}
|
38
36
|
return 1
|
39
37
|
rescue Jeweler::NoGitHubUser
|
40
38
|
$stderr.puts %Q{No github.user found in ~/.gitconfig. Please tell git about your GitHub account (see http://github.com/blog/180-local-github-config for details). For example: git config --global github.user defunkt}
|
@@ -43,7 +41,7 @@ class Jeweler
|
|
43
41
|
$stderr.puts %Q{No github.token found in ~/.gitconfig. Please tell git about your GitHub account (see http://github.com/blog/180-local-github-config for details). For example: git config --global github.token 6ef8395fecf207165f1a82178ae1b984}
|
44
42
|
return 1
|
45
43
|
rescue Jeweler::FileInTheWay
|
46
|
-
$stderr.puts "The directory #{project_name} already exists. Maybe move it out of the way before continuing?"
|
44
|
+
$stderr.puts "The directory #{options[:project_name]} already exists. Maybe move it out of the way before continuing?"
|
47
45
|
return 1
|
48
46
|
end
|
49
47
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class Jeweler
|
2
|
+
class Generator
|
3
|
+
module GithubMixin
|
4
|
+
def self.extended(generator)
|
5
|
+
generator.github_username = generator.options[:github_username]
|
6
|
+
generator.github_token = generator.options[:github_token]
|
7
|
+
generator.should_create_remote_repo = generator.options[:create_repo]
|
8
|
+
|
9
|
+
unless generator.github_username
|
10
|
+
raise NoGitHubUser
|
11
|
+
end
|
12
|
+
|
13
|
+
if generator.should_create_remote_repo
|
14
|
+
unless generator.github_token
|
15
|
+
raise NoGitHubToken
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def git_remote
|
21
|
+
@git_remote ||= "git@github.com:#{github_username}/#{project_name}.git"
|
22
|
+
end
|
23
|
+
|
24
|
+
def homepage
|
25
|
+
@homepage ||= "http://github.com/#{github_username}/#{project_name}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -2,7 +2,7 @@ class Jeweler
|
|
2
2
|
class Generator
|
3
3
|
module MinitestMixin
|
4
4
|
def self.extended(generator)
|
5
|
-
generator.development_dependencies << "minitest"
|
5
|
+
generator.development_dependencies << ["minitest", ">= 0"]
|
6
6
|
end
|
7
7
|
|
8
8
|
def default_task
|
@@ -10,11 +10,11 @@ class Jeweler
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def feature_support_require
|
13
|
-
'
|
13
|
+
'minitest/unit'
|
14
14
|
end
|
15
15
|
|
16
16
|
def feature_support_extend
|
17
|
-
'
|
17
|
+
'MiniTest::Assertions'
|
18
18
|
end
|
19
19
|
|
20
20
|
def test_dir
|
@@ -26,15 +26,15 @@ class Jeweler
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_pattern
|
29
|
-
'test
|
29
|
+
'test/**/test_*.rb'
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_filename
|
33
|
-
"#{require_name}
|
33
|
+
"test_#{require_name}.rb"
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_helper_filename
|
37
|
-
"
|
37
|
+
"helper.rb"
|
38
38
|
end
|
39
39
|
|
40
40
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
|
1
2
|
class Jeweler
|
2
3
|
class Generator
|
3
4
|
class Options < Hash
|
@@ -10,11 +11,24 @@ class Jeweler
|
|
10
11
|
self[:testing_framework] = :shoulda
|
11
12
|
self[:documentation_framework] = :rdoc
|
12
13
|
|
14
|
+
git_config = Git.global_config
|
15
|
+
self[:user_name] = git_config['user.name']
|
16
|
+
self[:user_email] = git_config['user.email']
|
17
|
+
self[:github_username] = git_config['github.user']
|
18
|
+
self[:github_token] = git_config['github.token']
|
19
|
+
|
20
|
+
require 'optparse'
|
13
21
|
@opts = OptionParser.new do |o|
|
14
22
|
o.banner = "Usage: #{File.basename($0)} [options] reponame\ne.g. #{File.basename($0)} the-perfect-gem"
|
15
23
|
|
16
|
-
o.on('--
|
17
|
-
self[:
|
24
|
+
o.on('--directory [DIRECTORY]', 'specify the directory to generate into') do |directory|
|
25
|
+
self[:directory] = directory
|
26
|
+
end
|
27
|
+
|
28
|
+
o.separator ""
|
29
|
+
|
30
|
+
o.on('--rspec', 'generate rspec code examples') do
|
31
|
+
self[:testing_framework] = :rspec
|
18
32
|
end
|
19
33
|
|
20
34
|
o.on('--shoulda', 'generate shoulda tests') do
|
@@ -25,22 +39,34 @@ class Jeweler
|
|
25
39
|
self[:testing_framework] = :testunit
|
26
40
|
end
|
27
41
|
|
28
|
-
o.on('--
|
29
|
-
self[:testing_framework] = :
|
42
|
+
o.on('--bacon', 'generate bacon specifications') do
|
43
|
+
self[:testing_framework] = :bacon
|
30
44
|
end
|
31
45
|
|
32
|
-
o.on('--
|
33
|
-
self[:testing_framework] = :
|
46
|
+
o.on('--testspec', 'generate test/spec tests') do
|
47
|
+
self[:testing_framework] = :testspec
|
48
|
+
end
|
49
|
+
|
50
|
+
o.on('--minitest', 'generate minitest tests') do
|
51
|
+
self[:testing_framework] = :minitest
|
34
52
|
end
|
35
53
|
|
36
54
|
o.on('--micronaut', 'generate micronaut examples') do
|
37
55
|
self[:testing_framework] = :micronaut
|
38
56
|
end
|
39
57
|
|
58
|
+
o.on('--riot', 'generate riot tests') do
|
59
|
+
self[:testing_framework] = :riot
|
60
|
+
end
|
61
|
+
|
62
|
+
o.separator ""
|
63
|
+
|
40
64
|
o.on('--cucumber', 'generate cucumber stories in addition to the other tests') do
|
41
65
|
self[:use_cucumber] = true
|
42
66
|
end
|
43
67
|
|
68
|
+
o.separator ""
|
69
|
+
|
44
70
|
o.on('--reek', 'generate rake task for reek') do
|
45
71
|
self[:use_reek] = true
|
46
72
|
end
|
@@ -49,9 +75,7 @@ class Jeweler
|
|
49
75
|
self[:use_roodi] = true
|
50
76
|
end
|
51
77
|
|
52
|
-
o.
|
53
|
-
self[:create_repo] = true
|
54
|
-
end
|
78
|
+
o.separator ""
|
55
79
|
|
56
80
|
o.on('--gemcutter', 'setup project for gemcutter') do
|
57
81
|
self[:gemcutter] = true
|
@@ -69,10 +93,41 @@ class Jeweler
|
|
69
93
|
self[:description] = description
|
70
94
|
end
|
71
95
|
|
72
|
-
o.
|
73
|
-
|
96
|
+
o.separator ""
|
97
|
+
|
98
|
+
o.on('--user-name [USER_NAME]', "the user's name, ie that is credited in the LICENSE") do |user_name|
|
99
|
+
self[:user_name] = user_name
|
100
|
+
end
|
101
|
+
|
102
|
+
o.on('--user-email [USER_EMAIL]', "the user's email, ie that is credited in the Gem specification") do |user_email|
|
103
|
+
self[:user_email] = user_email
|
104
|
+
end
|
105
|
+
|
106
|
+
o.separator ""
|
107
|
+
|
108
|
+
o.on('--github-username [GITHUB_USERNAME]', "name of the user on GitHub to set the project up under") do |github_username|
|
109
|
+
self[:github_username] = github_username
|
74
110
|
end
|
75
111
|
|
112
|
+
o.on('--github-token [GITHUB_TOKEN]', "GitHub token to use for interacting with the GitHub API") do |github_token|
|
113
|
+
self[:github_token] = github_token
|
114
|
+
end
|
115
|
+
|
116
|
+
o.on('--git-remote [GIT_REMOTE]', 'URI to set the git origin remote to') do |git_remote|
|
117
|
+
self[:git_remote] = git_remote
|
118
|
+
end
|
119
|
+
|
120
|
+
o.on('--homepage [HOMEPAGE]', "the homepage for your project (defaults to the GitHub repo)") do |homepage|
|
121
|
+
self[:homepage] = homepage
|
122
|
+
end
|
123
|
+
|
124
|
+
o.on('--create-repo', 'create the repository on GitHub') do
|
125
|
+
self[:create_repo] = true
|
126
|
+
end
|
127
|
+
|
128
|
+
|
129
|
+
o.separator ""
|
130
|
+
|
76
131
|
o.on('--yard', 'use yard for documentation') do
|
77
132
|
self[:documentation_framework] = :yard
|
78
133
|
end
|
@@ -88,6 +143,7 @@ class Jeweler
|
|
88
143
|
|
89
144
|
begin
|
90
145
|
@opts.parse!(args)
|
146
|
+
self[:project_name] = args.shift
|
91
147
|
rescue OptionParser::InvalidOption => e
|
92
148
|
self[:invalid_argument] = e.message
|
93
149
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Jeweler
|
2
|
+
class Generator
|
3
|
+
module RiotMixin
|
4
|
+
def self.extended(generator)
|
5
|
+
generator.development_dependencies << ["riot", ">= 0"]
|
6
|
+
end
|
7
|
+
|
8
|
+
def default_task
|
9
|
+
'test'
|
10
|
+
end
|
11
|
+
|
12
|
+
def feature_support_require
|
13
|
+
'riot/context'
|
14
|
+
end
|
15
|
+
|
16
|
+
def feature_support_extend
|
17
|
+
'Riot::Context'
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_dir
|
21
|
+
'test'
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_task
|
25
|
+
'test'
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_pattern
|
29
|
+
'test/**/*_test.rb'
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_filename
|
33
|
+
"#{require_name}_test.rb"
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_helper_filename
|
37
|
+
"teststrap.rb"
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -2,7 +2,7 @@ class Jeweler
|
|
2
2
|
class Generator
|
3
3
|
module ShouldaMixin
|
4
4
|
def self.extended(generator)
|
5
|
-
generator.development_dependencies << "thoughtbot-shoulda"
|
5
|
+
generator.development_dependencies << ["thoughtbot-shoulda", ">= 0"]
|
6
6
|
end
|
7
7
|
|
8
8
|
def default_task
|
@@ -26,15 +26,15 @@ class Jeweler
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_pattern
|
29
|
-
'test
|
29
|
+
'test/**/test_*.rb'
|
30
30
|
end
|
31
31
|
|
32
32
|
def test_filename
|
33
|
-
"#{require_name}
|
33
|
+
"test_#{require_name}.rb"
|
34
34
|
end
|
35
35
|
|
36
36
|
def test_helper_filename
|
37
|
-
"
|
37
|
+
"helper.rb"
|
38
38
|
end
|
39
39
|
|
40
40
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Jeweler
|
2
|
+
class Generator
|
3
|
+
module TestspecMixin
|
4
|
+
def self.extended(generator)
|
5
|
+
generator.development_dependencies << ["test-spec", ">= 0"]
|
6
|
+
end
|
7
|
+
|
8
|
+
def default_task
|
9
|
+
'test'
|
10
|
+
end
|
11
|
+
|
12
|
+
def feature_support_require
|
13
|
+
'test/unit/assertions'
|
14
|
+
end
|
15
|
+
|
16
|
+
def feature_support_extend
|
17
|
+
'Test::Unit::Assertions'
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_dir
|
21
|
+
'test'
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_task
|
25
|
+
'test'
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_pattern
|
29
|
+
'test/**/*_test.rb'
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_filename
|
33
|
+
"#{require_name}_test.rb"
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_helper_filename
|
37
|
+
"test_helper.rb"
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -23,15 +23,15 @@ class Jeweler
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_pattern
|
26
|
-
'test
|
26
|
+
'test/**/test_*.rb'
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_filename
|
30
|
-
"#{require_name}
|
30
|
+
"test_#{require_name}.rb"
|
31
31
|
end
|
32
32
|
|
33
33
|
def test_helper_filename
|
34
|
-
"
|
34
|
+
"helper.rb"
|
35
35
|
end
|
36
36
|
|
37
37
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
require 'rake'
|
2
2
|
require 'rake/tasklib'
|
3
|
-
require 'rake/contrib/sshpublisher'
|
4
|
-
|
5
3
|
|
6
4
|
class Jeweler
|
7
5
|
# Rake tasks for putting a Jeweler gem on Rubyforge.
|
@@ -19,6 +17,7 @@ class Jeweler
|
|
19
17
|
# * project: the rubyforge project to operate on. This defaults to whatever you specified in your gemspec. Defaults to your gem name.
|
20
18
|
# * remote_doc_path: the place to upload docs to on Rubyforge under /var/www/gforge-projects/#{project}/
|
21
19
|
#
|
20
|
+
# See also http://wiki.github.com/technicalpickles/jeweler/rubyforge
|
22
21
|
class RubyforgeTasks < ::Rake::TaskLib
|
23
22
|
# The RubyForge project to interact with. Defaults to whatever is in your jeweler gemspec.
|
24
23
|
attr_accessor :project
|
@@ -32,21 +31,26 @@ class Jeweler
|
|
32
31
|
def initialize
|
33
32
|
yield self if block_given?
|
34
33
|
|
35
|
-
self.
|
36
|
-
|
37
|
-
self.remote_doc_path ||= jeweler.gemspec.name
|
38
|
-
self.project ||= jeweler.gemspec.rubyforge_project
|
39
|
-
self.doc_task ||= :rdoc
|
34
|
+
self.doc_task = :rdoc if self.doc_task == nil # be sure to allow it to be set to false, to allow disabling
|
40
35
|
|
41
36
|
define
|
42
37
|
end
|
43
38
|
|
39
|
+
def jeweler
|
40
|
+
@jeweler ||= Rake.application.jeweler
|
41
|
+
end
|
42
|
+
|
43
|
+
def remote_doc_path
|
44
|
+
@remote_doc_path ||= jeweler.gemspec.name
|
45
|
+
end
|
46
|
+
|
47
|
+
def project
|
48
|
+
@project ||= jeweler.gemspec.rubyforge_project
|
49
|
+
end
|
50
|
+
|
44
51
|
def define
|
45
52
|
namespace :rubyforge do
|
46
53
|
|
47
|
-
desc "Release gem and RDoc documentation to RubyForge"
|
48
|
-
task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
|
49
|
-
|
50
54
|
namespace :release do
|
51
55
|
desc "Release the current gem version to RubyForge."
|
52
56
|
task :gem => [:gemspec, :build] do
|
@@ -61,26 +65,34 @@ class Jeweler
|
|
61
65
|
end
|
62
66
|
end
|
63
67
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
68
|
+
if publish_documentation?
|
69
|
+
desc "Publish docs to RubyForge."
|
70
|
+
task :docs => doc_task do
|
71
|
+
config = YAML.load(
|
72
|
+
File.read(File.expand_path('~/.rubyforge/user-config.yml'))
|
73
|
+
)
|
69
74
|
|
70
|
-
|
71
|
-
|
75
|
+
host = "#{config['username']}@rubyforge.org"
|
76
|
+
remote_dir = "/var/www/gforge-projects/#{project}/#{remote_doc_path}"
|
72
77
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
78
|
+
local_dir = case self.doc_task.to_sym
|
79
|
+
when :rdoc then 'rdoc'
|
80
|
+
when :yardoc then 'doc'
|
81
|
+
else
|
82
|
+
raise "Unsure what to run to generate documentation. Please set doc_task and re-run."
|
83
|
+
end
|
79
84
|
|
80
|
-
|
85
|
+
sh %{rsync --archive --verbose --delete #{local_dir}/ #{host}:#{remote_dir}}
|
86
|
+
end
|
81
87
|
end
|
82
88
|
end
|
83
89
|
|
90
|
+
|
91
|
+
desc "Release gem and RDoc documentation to RubyForge"
|
92
|
+
task :release => "rubyforge:release:gem"
|
93
|
+
task :release => "rubyforge:release:docs" if publish_documentation?
|
94
|
+
|
95
|
+
|
84
96
|
desc "Setup a rubyforge project for this gem"
|
85
97
|
task :setup do
|
86
98
|
begin
|
@@ -93,6 +105,12 @@ class Jeweler
|
|
93
105
|
end
|
94
106
|
|
95
107
|
end
|
108
|
+
|
109
|
+
task :release => 'rubyforge:release'
|
110
|
+
end
|
111
|
+
|
112
|
+
def publish_documentation?
|
113
|
+
! (doc_task == false || doc_task == :none)
|
96
114
|
end
|
97
115
|
end
|
98
116
|
end
|