rake 0.8.7 → 0.9.0.beta.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rake might be problematic. Click here for more details.
- data/.gemtest +0 -0
- data/CHANGES +77 -9
- data/{README → README.rdoc} +14 -10
- data/Rakefile +113 -110
- data/TODO +1 -1
- data/doc/command_line_usage.rdoc +18 -6
- data/doc/glossary.rdoc +2 -2
- data/doc/jamis.rb +2 -2
- data/doc/proto_rake.rdoc +22 -22
- data/doc/rake.1.gz +0 -0
- data/doc/rakefile.rdoc +60 -28
- data/doc/rational.rdoc +6 -6
- data/doc/release_notes/rake-0.4.15.rdoc +1 -1
- data/doc/release_notes/rake-0.5.0.rdoc +1 -1
- data/doc/release_notes/rake-0.7.0.rdoc +1 -1
- data/doc/release_notes/rake-0.7.2.rdoc +3 -3
- data/doc/release_notes/rake-0.7.3.rdoc +2 -2
- data/doc/release_notes/rake-0.8.0.rdoc +1 -1
- data/doc/release_notes/rake-0.8.2.rdoc +3 -3
- data/doc/release_notes/rake-0.8.3.rdoc +2 -2
- data/doc/release_notes/rake-0.8.4.rdoc +1 -1
- data/doc/release_notes/rake-0.8.5.rdoc +1 -1
- data/doc/release_notes/rake-0.8.6.rdoc +1 -1
- data/doc/release_notes/rake-0.8.7.rdoc +1 -1
- data/install.rb +14 -12
- data/lib/rake.rb +28 -2470
- data/lib/rake/alt_system.rb +7 -6
- data/lib/rake/application.rb +585 -0
- data/lib/rake/classic_namespace.rb +1 -0
- data/lib/rake/clean.rb +14 -14
- data/lib/rake/cloneable.rb +25 -0
- data/lib/rake/contrib/compositepublisher.rb +2 -5
- data/lib/rake/contrib/ftptools.rb +5 -8
- data/lib/rake/contrib/publisher.rb +2 -8
- data/lib/rake/contrib/rubyforgepublisher.rb +2 -4
- data/lib/rake/contrib/sshpublisher.rb +4 -6
- data/lib/rake/contrib/sys.rb +7 -25
- data/lib/rake/default_loader.rb +10 -0
- data/lib/rake/dsl.rb +2 -0
- data/lib/rake/dsl_definition.rb +146 -0
- data/lib/rake/early_time.rb +18 -0
- data/lib/rake/environment.rb +40 -0
- data/lib/rake/ext/core.rb +27 -0
- data/lib/rake/ext/module.rb +39 -0
- data/lib/rake/ext/string.rb +167 -0
- data/lib/rake/ext/time.rb +14 -0
- data/lib/rake/file_creation_task.rb +24 -0
- data/lib/rake/file_list.rb +403 -0
- data/lib/rake/file_task.rb +47 -0
- data/lib/rake/file_utils.rb +112 -0
- data/lib/rake/file_utils_ext.rb +132 -0
- data/lib/rake/gempackagetask.rb +6 -90
- data/lib/rake/invocation_chain.rb +51 -0
- data/lib/rake/invocation_exception_mixin.rb +16 -0
- data/lib/rake/loaders/makefile.rb +13 -15
- data/lib/rake/multi_task.rb +16 -0
- data/lib/rake/name_space.rb +25 -0
- data/lib/rake/packagetask.rb +13 -12
- data/lib/rake/pathmap.rb +1 -0
- data/lib/rake/pseudo_status.rb +24 -0
- data/lib/rake/rake_module.rb +25 -0
- data/lib/rake/rake_test_loader.rb +10 -2
- data/lib/rake/rdoctask.rb +211 -190
- data/lib/rake/ruby182_test_unit_fix.rb +9 -7
- data/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/lib/rake/runtest.rb +4 -6
- data/lib/rake/task.rb +327 -0
- data/lib/rake/task_argument_error.rb +7 -0
- data/lib/rake/task_arguments.rb +74 -0
- data/lib/rake/task_manager.rb +329 -0
- data/lib/rake/tasklib.rb +1 -2
- data/lib/rake/testtask.rb +51 -26
- data/lib/rake/version.rb +12 -0
- data/lib/rake/win32.rb +4 -4
- data/test/contrib/test_sys.rb +7 -30
- data/test/data/comments/Rakefile +18 -0
- data/test/data/default/Rakefile +1 -1
- data/test/data/dryrun/Rakefile +1 -1
- data/test/data/file_creation_task/Rakefile +1 -1
- data/test/data/namespace/Rakefile +9 -0
- data/test/data/rakelib/test1.rb +4 -2
- data/test/data/verbose/Rakefile +34 -0
- data/test/functional/functional_test.rb +25 -0
- data/test/{session_functional.rb → functional/session_based_tests.rb} +134 -23
- data/test/in_environment.rb +6 -4
- data/test/{test_application.rb → lib/application_test.rb} +277 -136
- data/test/{test_clean.rb → lib/clean_test.rb} +1 -0
- data/test/{test_definitions.rb → lib/definitions_test.rb} +2 -2
- data/test/lib/dsl_test.rb +52 -0
- data/test/{test_earlytime.rb → lib/earlytime_test.rb} +1 -2
- data/test/lib/environment_test.rb +18 -0
- data/test/{test_extension.rb → lib/extension_test.rb} +2 -2
- data/test/{test_file_creation_task.rb → lib/file_creation_task_test.rb} +0 -0
- data/test/{test_file_task.rb → lib/file_task_test.rb} +3 -3
- data/test/{test_filelist.rb → lib/filelist_test.rb} +28 -24
- data/test/{test_fileutils.rb → lib/fileutils_test.rb} +26 -21
- data/test/{test_ftp.rb → lib/ftp_test.rb} +0 -0
- data/test/{test_invocation_chain.rb → lib/invocation_chain_test.rb} +0 -0
- data/test/{test_makefile_loader.rb → lib/makefile_loader_test.rb} +0 -0
- data/test/{test_multitask.rb → lib/multitask_test.rb} +14 -6
- data/test/{test_namespace.rb → lib/namespace_test.rb} +0 -0
- data/test/lib/package_task_test.rb +82 -0
- data/test/{test_pathmap.rb → lib/pathmap_test.rb} +3 -2
- data/test/{test_pseudo_status.rb → lib/pseudo_status_test.rb} +0 -0
- data/test/{test_rake.rb → lib/rake_test.rb} +1 -1
- data/test/{test_rdoc_task.rb → lib/rdoc_task_test.rb} +19 -23
- data/test/{test_require.rb → lib/require_test.rb} +8 -2
- data/test/{test_rules.rb → lib/rules_test.rb} +1 -2
- data/test/{test_task_arguments.rb → lib/task_arguments_test.rb} +5 -5
- data/test/{test_task_manager.rb → lib/task_manager_test.rb} +5 -5
- data/test/{test_tasks.rb → lib/task_test.rb} +69 -4
- data/test/{test_tasklib.rb → lib/tasklib_test.rb} +0 -0
- data/test/{test_test_task.rb → lib/test_task_test.rb} +3 -3
- data/test/lib/testtask_test.rb +49 -0
- data/test/{test_top_level_functions.rb → lib/top_level_functions_test.rb} +3 -3
- data/test/{test_win32.rb → lib/win32_test.rb} +19 -0
- data/test/rake_test_setup.rb +4 -9
- data/test/ruby_version_test.rb +3 -0
- data/test/test_helper.rb +12 -0
- metadata +100 -44
- data/test/functional.rb +0 -15
- data/test/test_package_task.rb +0 -118
@@ -0,0 +1,16 @@
|
|
1
|
+
module Rake
|
2
|
+
module InvocationExceptionMixin
|
3
|
+
# Return the invocation chain (list of Rake tasks) that were in
|
4
|
+
# effect when this exception was detected by rake. May be null if
|
5
|
+
# no tasks were active.
|
6
|
+
def chain
|
7
|
+
@rake_invocation_chain ||= nil
|
8
|
+
end
|
9
|
+
|
10
|
+
# Set the invocation chain in effect when this exception was
|
11
|
+
# detected.
|
12
|
+
def chain=(value)
|
13
|
+
@rake_invocation_chain = value
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,21 +1,19 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
1
|
module Rake
|
4
2
|
|
5
3
|
# Makefile loader to be used with the import file loader.
|
6
4
|
class MakefileLoader
|
7
|
-
|
5
|
+
include Rake::DSL
|
6
|
+
|
7
|
+
SPACE_MARK = "\0"
|
8
8
|
|
9
9
|
# Load the makefile dependencies in +fn+.
|
10
10
|
def load(fn)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
process_line(line)
|
18
|
-
end
|
11
|
+
lines = File.read fn
|
12
|
+
lines.gsub!(/\\ /, SPACE_MARK)
|
13
|
+
lines.gsub!(/#[^\n]*\n/m, "")
|
14
|
+
lines.gsub!(/\\\n/, ' ')
|
15
|
+
lines.each_line do |line|
|
16
|
+
process_line(line)
|
19
17
|
end
|
20
18
|
end
|
21
19
|
|
@@ -23,17 +21,17 @@ module Rake
|
|
23
21
|
|
24
22
|
# Process one logical line of makefile data.
|
25
23
|
def process_line(line)
|
26
|
-
file_tasks, args = line.split(':')
|
24
|
+
file_tasks, args = line.split(':', 2)
|
27
25
|
return if args.nil?
|
28
26
|
dependents = args.split.map { |d| respace(d) }
|
29
|
-
file_tasks.
|
27
|
+
file_tasks.scan(/\S+/) do |file_task|
|
30
28
|
file_task = respace(file_task)
|
31
29
|
file file_task => dependents
|
32
30
|
end
|
33
31
|
end
|
34
|
-
|
32
|
+
|
35
33
|
def respace(str)
|
36
|
-
str.
|
34
|
+
str.tr SPACE_MARK, ' '
|
37
35
|
end
|
38
36
|
end
|
39
37
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Rake
|
2
|
+
|
3
|
+
# Same as a regular task, but the immediate prerequisites are done in
|
4
|
+
# parallel using Ruby threads.
|
5
|
+
#
|
6
|
+
class MultiTask < Task
|
7
|
+
private
|
8
|
+
def invoke_prerequisites(args, invocation_chain)
|
9
|
+
threads = @prerequisites.collect { |p|
|
10
|
+
Thread.new(p) { |r| application[r, @scope].invoke_with_call_chain(args, invocation_chain) }
|
11
|
+
}
|
12
|
+
threads.each { |t| t.join }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Rake
|
2
|
+
|
3
|
+
# The NameSpace class will lookup task names in the the scope
|
4
|
+
# defined by a +namespace+ command.
|
5
|
+
#
|
6
|
+
class NameSpace
|
7
|
+
|
8
|
+
# Create a namespace lookup object using the given task manager
|
9
|
+
# and the list of scopes.
|
10
|
+
def initialize(task_manager, scope_list)
|
11
|
+
@task_manager = task_manager
|
12
|
+
@scope = scope_list.dup
|
13
|
+
end
|
14
|
+
|
15
|
+
# Lookup a task named +name+ in the namespace.
|
16
|
+
def [](name)
|
17
|
+
@task_manager.lookup(name, @scope)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Return the list of tasks defined in this and nested namespaces.
|
21
|
+
def tasks
|
22
|
+
@task_manager.tasks_in_scope(@scope)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/rake/packagetask.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# Define a package task libarary to aid in the definition of
|
1
|
+
# Define a package task library to aid in the definition of
|
4
2
|
# redistributable package files.
|
5
3
|
|
6
4
|
require 'rake'
|
@@ -25,13 +23,13 @@ module Rake
|
|
25
23
|
# of date.
|
26
24
|
#
|
27
25
|
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tgz"</b>]
|
28
|
-
# Create a gzipped tar package (if <em>need_tar</em> is true).
|
26
|
+
# Create a gzipped tar package (if <em>need_tar</em> is true).
|
29
27
|
#
|
30
28
|
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tar.gz"</b>]
|
31
|
-
# Create a gzipped tar package (if <em>need_tar_gz</em> is true).
|
29
|
+
# Create a gzipped tar package (if <em>need_tar_gz</em> is true).
|
32
30
|
#
|
33
31
|
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tar.bz2"</b>]
|
34
|
-
# Create a bzip2'd tar package (if <em>need_tar_bz2</em> is true).
|
32
|
+
# Create a bzip2'd tar package (if <em>need_tar_bz2</em> is true).
|
35
33
|
#
|
36
34
|
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.zip"</b>]
|
37
35
|
# Create a zip package archive (if <em>need_zip</em> is true).
|
@@ -74,7 +72,10 @@ module Rake
|
|
74
72
|
# Zip command for zipped archives. The default is 'zip'.
|
75
73
|
attr_accessor :zip_command
|
76
74
|
|
77
|
-
# Create a Package Task with the given name and version.
|
75
|
+
# Create a Package Task with the given name and version. Use +:noversion+
|
76
|
+
# as the version to build a package without a version or to provide a
|
77
|
+
# fully-versioned package name.
|
78
|
+
|
78
79
|
def initialize(name=nil, version=nil)
|
79
80
|
init(name, version)
|
80
81
|
yield self if block_given?
|
@@ -102,11 +103,11 @@ module Rake
|
|
102
103
|
|
103
104
|
desc "Build all the packages"
|
104
105
|
task :package
|
105
|
-
|
106
|
+
|
106
107
|
desc "Force a rebuild of the package files"
|
107
108
|
task :repackage => [:clobber_package, :package]
|
108
|
-
|
109
|
-
desc "Remove package products"
|
109
|
+
|
110
|
+
desc "Remove package products"
|
110
111
|
task :clobber_package do
|
111
112
|
rm_r package_dir rescue nil
|
112
113
|
end
|
@@ -127,7 +128,7 @@ module Rake
|
|
127
128
|
end
|
128
129
|
end
|
129
130
|
end
|
130
|
-
|
131
|
+
|
131
132
|
if need_zip
|
132
133
|
task :package => ["#{package_dir}/#{zip_file}"]
|
133
134
|
file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do
|
@@ -159,7 +160,7 @@ module Rake
|
|
159
160
|
def package_name
|
160
161
|
@version ? "#{@name}-#{@version}" : @name
|
161
162
|
end
|
162
|
-
|
163
|
+
|
163
164
|
def package_dir_path
|
164
165
|
"#{package_dir}/#{package_name}"
|
165
166
|
end
|
data/lib/rake/pathmap.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'rake/ext/string'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Rake
|
2
|
+
|
3
|
+
####################################################################
|
4
|
+
# Exit status class for times the system just gives us a nil.
|
5
|
+
class PseudoStatus
|
6
|
+
attr_reader :exitstatus
|
7
|
+
def initialize(code=0)
|
8
|
+
@exitstatus = code
|
9
|
+
end
|
10
|
+
def to_i
|
11
|
+
@exitstatus << 8
|
12
|
+
end
|
13
|
+
def >>(n)
|
14
|
+
to_i >> n
|
15
|
+
end
|
16
|
+
def stopped?
|
17
|
+
false
|
18
|
+
end
|
19
|
+
def exited?
|
20
|
+
true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rake/application'
|
2
|
+
|
3
|
+
module Rake
|
4
|
+
|
5
|
+
# Rake module singleton methods.
|
6
|
+
#
|
7
|
+
class << self
|
8
|
+
# Current Rake Application
|
9
|
+
def application
|
10
|
+
@application ||= Rake::Application.new
|
11
|
+
end
|
12
|
+
|
13
|
+
# Set the current Rake application object.
|
14
|
+
def application=(app)
|
15
|
+
@application = app
|
16
|
+
end
|
17
|
+
|
18
|
+
# Return the original directory where the Rake application was started.
|
19
|
+
def original_dir
|
20
|
+
application.original_dir
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -1,5 +1,13 @@
|
|
1
|
-
|
1
|
+
require 'rake'
|
2
2
|
|
3
3
|
# Load the test files from the command line.
|
4
4
|
|
5
|
-
ARGV.each
|
5
|
+
ARGV.each do |f|
|
6
|
+
next if f =~ /^-/
|
7
|
+
|
8
|
+
if f =~ /\*/
|
9
|
+
FileList[f].to_a.each { |fn| require File.expand_path(fn) }
|
10
|
+
else
|
11
|
+
require File.expand_path(f)
|
12
|
+
end
|
13
|
+
end
|
data/lib/rake/rdoctask.rb
CHANGED
@@ -1,209 +1,230 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
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
|
-
#
|
64
|
-
|
65
|
-
|
66
|
-
#
|
67
|
-
|
68
|
-
|
69
|
-
#
|
70
|
-
#
|
71
|
-
|
72
|
-
|
73
|
-
#
|
74
|
-
|
75
|
-
|
76
|
-
#
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
1
|
+
# rake/rdoctask is deprecated in favor of rdoc/task
|
2
|
+
|
3
|
+
warn 'rake/rdoctask is deprecated. Use rdoc/task instead (in RDoc 2.4.2+)'
|
4
|
+
|
5
|
+
require 'rubygems'
|
6
|
+
|
7
|
+
begin
|
8
|
+
gem 'rdoc'
|
9
|
+
require 'rdoc'
|
10
|
+
require 'rdoc/task'
|
11
|
+
rescue LoadError, Gem::LoadError
|
12
|
+
end
|
13
|
+
|
14
|
+
if defined?(RDoc::Task) then
|
15
|
+
module Rake
|
16
|
+
RDocTask = RDoc::Task unless const_defined? :RDocTask
|
17
|
+
end
|
18
|
+
else
|
19
|
+
require 'rake'
|
20
|
+
require 'rake/tasklib'
|
21
|
+
|
22
|
+
module Rake
|
23
|
+
|
24
|
+
# NOTE: Rake::RDocTask is deprecated in favor of RDoc:Task which is included
|
25
|
+
# in RDoc 2.4.2+. Use require 'rdoc/task' to require it.
|
26
|
+
#
|
27
|
+
# Create a documentation task that will generate the RDoc files for
|
28
|
+
# a project.
|
29
|
+
#
|
30
|
+
# The RDocTask will create the following targets:
|
31
|
+
#
|
32
|
+
# [<b><em>rdoc</em></b>]
|
33
|
+
# Main task for this RDOC task.
|
34
|
+
#
|
35
|
+
# [<b>:clobber_<em>rdoc</em></b>]
|
36
|
+
# Delete all the rdoc files. This target is automatically
|
37
|
+
# added to the main clobber target.
|
38
|
+
#
|
39
|
+
# [<b>:re<em>rdoc</em></b>]
|
40
|
+
# Rebuild the rdoc files from scratch, even if they are not out
|
41
|
+
# of date.
|
42
|
+
#
|
43
|
+
# Simple Example:
|
44
|
+
#
|
45
|
+
# Rake::RDocTask.new do |rd|
|
46
|
+
# rd.main = "README.rdoc"
|
47
|
+
# rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
|
48
|
+
# end
|
49
|
+
#
|
50
|
+
# The +rd+ object passed to the block is an RDocTask object. See the
|
51
|
+
# attributes list for the RDocTask class for available customization options.
|
52
|
+
#
|
53
|
+
# == Specifying different task names
|
54
|
+
#
|
55
|
+
# You may wish to give the task a different name, such as if you are
|
56
|
+
# generating two sets of documentation. For instance, if you want to have a
|
57
|
+
# development set of documentation including private methods:
|
58
|
+
#
|
59
|
+
# Rake::RDocTask.new(:rdoc_dev) do |rd|
|
60
|
+
# rd.main = "README.doc"
|
61
|
+
# rd.rdoc_files.include("README.rdoc", "lib/**/*.rb")
|
62
|
+
# rd.options << "--all"
|
63
|
+
# end
|
64
|
+
#
|
65
|
+
# The tasks would then be named :<em>rdoc_dev</em>, :clobber_<em>rdoc_dev</em>, and
|
66
|
+
# :re<em>rdoc_dev</em>.
|
67
|
+
#
|
68
|
+
# If you wish to have completely different task names, then pass a Hash as
|
69
|
+
# first argument. With the <tt>:rdoc</tt>, <tt>:clobber_rdoc</tt> and
|
70
|
+
# <tt>:rerdoc</tt> options, you can customize the task names to your liking.
|
71
|
+
# For example:
|
72
|
+
#
|
73
|
+
# Rake::RDocTask.new(:rdoc => "rdoc", :clobber_rdoc => "rdoc:clean", :rerdoc => "rdoc:force")
|
74
|
+
#
|
75
|
+
# This will create the tasks <tt>:rdoc</tt>, <tt>:rdoc_clean</tt> and
|
76
|
+
# <tt>:rdoc:force</tt>.
|
77
|
+
#
|
78
|
+
class RDocTask < TaskLib
|
79
|
+
# Name of the main, top level task. (default is :rdoc)
|
80
|
+
attr_accessor :name
|
81
|
+
|
82
|
+
# Name of directory to receive the html output files. (default is "html")
|
83
|
+
attr_accessor :rdoc_dir
|
84
|
+
|
85
|
+
# Title of RDoc documentation. (defaults to rdoc's default)
|
86
|
+
attr_accessor :title
|
87
|
+
|
88
|
+
# Name of file to be used as the main, top level file of the
|
89
|
+
# RDoc. (default is none)
|
90
|
+
attr_accessor :main
|
91
|
+
|
92
|
+
# Name of template to be used by rdoc. (defaults to rdoc's default)
|
93
|
+
attr_accessor :template
|
94
|
+
|
95
|
+
# List of files to be included in the rdoc generation. (default is [])
|
96
|
+
attr_accessor :rdoc_files
|
97
|
+
|
98
|
+
# Additional list of options to be passed rdoc. (default is [])
|
99
|
+
attr_accessor :options
|
100
|
+
|
101
|
+
# Whether to run the rdoc process as an external shell (default is false)
|
102
|
+
attr_accessor :external
|
103
|
+
|
104
|
+
attr_accessor :inline_source
|
105
|
+
|
106
|
+
# Create an RDoc task with the given name. See the RDocTask class overview
|
107
|
+
# for documentation.
|
108
|
+
def initialize(name = :rdoc) # :yield: self
|
109
|
+
if name.is_a?(Hash)
|
110
|
+
invalid_options = name.keys.map { |k| k.to_sym } - [:rdoc, :clobber_rdoc, :rerdoc]
|
111
|
+
if !invalid_options.empty?
|
112
|
+
raise ArgumentError, "Invalid option(s) passed to RDocTask.new: #{invalid_options.join(", ")}"
|
113
|
+
end
|
94
114
|
end
|
115
|
+
|
116
|
+
@name = name
|
117
|
+
@rdoc_files = Rake::FileList.new
|
118
|
+
@rdoc_dir = 'html'
|
119
|
+
@main = nil
|
120
|
+
@title = nil
|
121
|
+
@template = nil
|
122
|
+
@external = false
|
123
|
+
@inline_source = true
|
124
|
+
@options = []
|
125
|
+
yield self if block_given?
|
126
|
+
define
|
95
127
|
end
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
128
|
+
|
129
|
+
# Create the tasks defined by this task lib.
|
130
|
+
def define
|
131
|
+
if rdoc_task_name != "rdoc"
|
132
|
+
desc "Build the RDOC HTML Files"
|
133
|
+
else
|
134
|
+
desc "Build the #{rdoc_task_name} HTML Files"
|
135
|
+
end
|
136
|
+
task rdoc_task_name
|
137
|
+
|
138
|
+
desc "Force a rebuild of the RDOC files"
|
139
|
+
task rerdoc_task_name => [clobber_task_name, rdoc_task_name]
|
140
|
+
|
141
|
+
desc "Remove rdoc products"
|
142
|
+
task clobber_task_name do
|
143
|
+
rm_r rdoc_dir rescue nil
|
144
|
+
end
|
145
|
+
|
146
|
+
task :clobber => [clobber_task_name]
|
147
|
+
|
148
|
+
directory @rdoc_dir
|
149
|
+
task rdoc_task_name => [rdoc_target]
|
150
|
+
file rdoc_target => @rdoc_files + [Rake.application.rakefile] do
|
151
|
+
rm_r @rdoc_dir rescue nil
|
152
|
+
@before_running_rdoc.call if @before_running_rdoc
|
153
|
+
args = option_list + @rdoc_files
|
154
|
+
if @external
|
155
|
+
argstring = args.join(' ')
|
156
|
+
sh %{ruby -Ivendor vendor/rd #{argstring}}
|
157
|
+
else
|
158
|
+
require 'rdoc/rdoc'
|
159
|
+
RDoc::RDoc.new.document(args)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
self
|
116
163
|
end
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
164
|
+
|
165
|
+
def option_list
|
166
|
+
result = @options.dup
|
167
|
+
result << "-o" << @rdoc_dir
|
168
|
+
result << "--main" << quote(main) if main
|
169
|
+
result << "--title" << quote(title) if title
|
170
|
+
result << "-T" << quote(template) if template
|
171
|
+
result << "--inline-source" if inline_source && !@options.include?("--inline-source") && !@options.include?("-S")
|
172
|
+
result
|
125
173
|
end
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
directory @rdoc_dir
|
130
|
-
task rdoc_task_name => [rdoc_target]
|
131
|
-
file rdoc_target => @rdoc_files + [Rake.application.rakefile] do
|
132
|
-
rm_r @rdoc_dir rescue nil
|
133
|
-
@before_running_rdoc.call if @before_running_rdoc
|
134
|
-
args = option_list + @rdoc_files
|
174
|
+
|
175
|
+
def quote(str)
|
135
176
|
if @external
|
136
|
-
|
137
|
-
sh %{ruby -Ivendor vendor/rd #{argstring}}
|
177
|
+
"'#{str}'"
|
138
178
|
else
|
139
|
-
|
140
|
-
RDoc::RDoc.new.document(args)
|
179
|
+
str
|
141
180
|
end
|
142
181
|
end
|
143
|
-
self
|
144
|
-
end
|
145
182
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
result << "--main" << quote(main) if main
|
150
|
-
result << "--title" << quote(title) if title
|
151
|
-
result << "-T" << quote(template) if template
|
152
|
-
result << "--inline-source" if inline_source && !@options.include?("--inline-source") && !@options.include?("-S")
|
153
|
-
result
|
154
|
-
end
|
183
|
+
def option_string
|
184
|
+
option_list.join(' ')
|
185
|
+
end
|
155
186
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
187
|
+
# The block passed to this method will be called just before running the
|
188
|
+
# RDoc generator. It is allowed to modify RDocTask attributes inside the
|
189
|
+
# block.
|
190
|
+
def before_running_rdoc(&block)
|
191
|
+
@before_running_rdoc = block
|
161
192
|
end
|
162
|
-
end
|
163
193
|
|
164
|
-
|
165
|
-
option_list.join(' ')
|
166
|
-
end
|
167
|
-
|
168
|
-
# The block passed to this method will be called just before running the
|
169
|
-
# RDoc generator. It is allowed to modify RDocTask attributes inside the
|
170
|
-
# block.
|
171
|
-
def before_running_rdoc(&block)
|
172
|
-
@before_running_rdoc = block
|
173
|
-
end
|
194
|
+
private
|
174
195
|
|
175
|
-
|
176
|
-
|
177
|
-
def rdoc_target
|
178
|
-
"#{rdoc_dir}/index.html"
|
179
|
-
end
|
180
|
-
|
181
|
-
def rdoc_task_name
|
182
|
-
case name
|
183
|
-
when Hash
|
184
|
-
(name[:rdoc] || "rdoc").to_s
|
185
|
-
else
|
186
|
-
name.to_s
|
196
|
+
def rdoc_target
|
197
|
+
"#{rdoc_dir}/index.html"
|
187
198
|
end
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
199
|
+
|
200
|
+
def rdoc_task_name
|
201
|
+
case name
|
202
|
+
when Hash
|
203
|
+
(name[:rdoc] || "rdoc").to_s
|
204
|
+
else
|
205
|
+
name.to_s
|
206
|
+
end
|
196
207
|
end
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
208
|
+
|
209
|
+
def clobber_task_name
|
210
|
+
case name
|
211
|
+
when Hash
|
212
|
+
(name[:clobber_rdoc] || "clobber_rdoc").to_s
|
213
|
+
else
|
214
|
+
"clobber_#{name}"
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
def rerdoc_task_name
|
219
|
+
case name
|
220
|
+
when Hash
|
221
|
+
(name[:rerdoc] || "rerdoc").to_s
|
222
|
+
else
|
223
|
+
"re#{name}"
|
224
|
+
end
|
205
225
|
end
|
206
|
-
end
|
207
226
|
|
227
|
+
end
|
208
228
|
end
|
209
229
|
end
|
230
|
+
|