rake 0.9.2 → 13.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CONTRIBUTING.rdoc +43 -0
- data/Gemfile +10 -0
- data/History.rdoc +2386 -0
- data/MIT-LICENSE +1 -1
- data/README.rdoc +64 -109
- data/Rakefile +22 -386
- data/bin/bundle +105 -0
- data/bin/console +7 -0
- data/bin/rake +20 -23
- data/bin/rdoc +29 -0
- data/bin/rubocop +29 -0
- data/bin/setup +6 -0
- data/doc/command_line_usage.rdoc +65 -21
- data/doc/glossary.rdoc +40 -49
- data/doc/jamis.rb +1 -0
- data/doc/rake.1 +156 -0
- data/doc/rakefile.rdoc +127 -62
- data/exe/rake +27 -0
- data/lib/rake.rb +37 -31
- data/lib/rake/application.rb +507 -272
- data/lib/rake/backtrace.rb +24 -0
- data/lib/rake/clean.rb +55 -8
- data/lib/rake/cloneable.rb +11 -19
- data/lib/rake/cpu_counter.rb +107 -0
- data/lib/rake/default_loader.rb +5 -0
- data/lib/rake/dsl_definition.rb +74 -46
- data/lib/rake/early_time.rb +5 -1
- data/lib/rake/ext/core.rb +5 -6
- data/lib/rake/ext/string.rb +61 -52
- data/lib/rake/file_creation_task.rb +4 -3
- data/lib/rake/file_list.rb +81 -49
- data/lib/rake/file_task.rb +15 -8
- data/lib/rake/file_utils.rb +69 -47
- data/lib/rake/file_utils_ext.rb +18 -26
- data/lib/rake/invocation_chain.rb +25 -19
- data/lib/rake/invocation_exception_mixin.rb +1 -0
- data/lib/rake/late_time.rb +18 -0
- data/lib/rake/linked_list.rb +112 -0
- data/lib/rake/loaders/makefile.rb +23 -9
- data/lib/rake/multi_task.rb +4 -6
- data/lib/rake/name_space.rb +36 -23
- data/lib/rake/packagetask.rb +71 -34
- data/lib/rake/phony.rb +16 -0
- data/lib/rake/private_reader.rb +21 -0
- data/lib/rake/promise.rb +100 -0
- data/lib/rake/pseudo_status.rb +8 -2
- data/lib/rake/rake_module.rb +41 -3
- data/lib/rake/rake_test_loader.rb +21 -7
- data/lib/rake/rule_recursion_overflow_error.rb +2 -2
- data/lib/rake/scope.rb +43 -0
- data/lib/rake/task.rb +186 -79
- data/lib/rake/task_argument_error.rb +1 -0
- data/lib/rake/task_arguments.rb +50 -15
- data/lib/rake/task_manager.rb +89 -65
- data/lib/rake/tasklib.rb +2 -12
- data/lib/rake/testtask.rb +61 -63
- data/lib/rake/thread_history_display.rb +49 -0
- data/lib/rake/thread_pool.rb +163 -0
- data/lib/rake/trace_output.rb +23 -0
- data/lib/rake/version.rb +7 -7
- data/lib/rake/win32.rb +14 -18
- data/rake.gemspec +43 -0
- metadata +82 -221
- data/.gemtest +0 -0
- data/CHANGES +0 -509
- data/RRR +0 -9
- data/TODO +0 -20
- data/doc/rake.1.gz +0 -0
- data/doc/release_notes/rake-0.4.14.rdoc +0 -23
- data/doc/release_notes/rake-0.4.15.rdoc +0 -35
- data/doc/release_notes/rake-0.5.0.rdoc +0 -53
- data/doc/release_notes/rake-0.5.3.rdoc +0 -78
- data/doc/release_notes/rake-0.5.4.rdoc +0 -46
- data/doc/release_notes/rake-0.6.0.rdoc +0 -141
- data/doc/release_notes/rake-0.7.0.rdoc +0 -119
- data/doc/release_notes/rake-0.7.1.rdoc +0 -59
- data/doc/release_notes/rake-0.7.2.rdoc +0 -121
- data/doc/release_notes/rake-0.7.3.rdoc +0 -47
- data/doc/release_notes/rake-0.8.0.rdoc +0 -114
- data/doc/release_notes/rake-0.8.2.rdoc +0 -165
- data/doc/release_notes/rake-0.8.3.rdoc +0 -112
- data/doc/release_notes/rake-0.8.4.rdoc +0 -147
- data/doc/release_notes/rake-0.8.5.rdoc +0 -53
- data/doc/release_notes/rake-0.8.6.rdoc +0 -55
- data/doc/release_notes/rake-0.8.7.rdoc +0 -55
- data/doc/release_notes/rake-0.9.0.rdoc +0 -112
- data/doc/release_notes/rake-0.9.1.rdoc +0 -52
- data/doc/release_notes/rake-0.9.2.rdoc +0 -49
- data/install.rb +0 -90
- data/lib/rake/alt_system.rb +0 -109
- data/lib/rake/classic_namespace.rb +0 -9
- data/lib/rake/contrib/compositepublisher.rb +0 -21
- data/lib/rake/contrib/ftptools.rb +0 -150
- data/lib/rake/contrib/publisher.rb +0 -69
- data/lib/rake/contrib/rubyforgepublisher.rb +0 -16
- data/lib/rake/contrib/sshpublisher.rb +0 -45
- data/lib/rake/contrib/sys.rb +0 -191
- data/lib/rake/ext/module.rb +0 -39
- data/lib/rake/ext/time.rb +0 -14
- data/lib/rake/gempackagetask.rb +0 -13
- data/lib/rake/pathmap.rb +0 -1
- data/lib/rake/rdoctask.rb +0 -230
- data/lib/rake/ruby182_test_unit_fix.rb +0 -25
- data/lib/rake/runtest.rb +0 -21
- data/test/check_expansion.rb +0 -5
- data/test/check_no_expansion.rb +0 -5
- data/test/data/access/Rakefile +0 -35
- data/test/data/chains/Rakefile +0 -15
- data/test/data/comments/Rakefile +0 -18
- data/test/data/default/Rakefile +0 -17
- data/test/data/deprecated_import/Rakefile +0 -1
- data/test/data/dryrun/Rakefile +0 -22
- data/test/data/extra/Rakefile +0 -1
- data/test/data/file_creation_task/Rakefile +0 -31
- data/test/data/imports/Rakefile +0 -19
- data/test/data/imports/deps.mf +0 -1
- data/test/data/multidesc/Rakefile +0 -15
- data/test/data/namespace/Rakefile +0 -64
- data/test/data/rakelib/test1.rb +0 -4
- data/test/data/rbext/rakefile.rb +0 -3
- data/test/data/sample.mf +0 -14
- data/test/data/statusreturn/Rakefile +0 -6
- data/test/data/unittest/Rakefile +0 -1
- data/test/data/verbose/Rakefile +0 -34
- data/test/file_creation.rb +0 -34
- data/test/helper.rb +0 -44
- data/test/in_environment.rb +0 -35
- data/test/reqfile.rb +0 -3
- data/test/reqfile2.rb +0 -3
- data/test/shellcommand.rb +0 -3
- data/test/test_rake.rb +0 -38
- data/test/test_rake_application.rb +0 -364
- data/test/test_rake_application_options.rb +0 -382
- data/test/test_rake_clean.rb +0 -12
- data/test/test_rake_definitions.rb +0 -80
- data/test/test_rake_directory_task.rb +0 -55
- data/test/test_rake_dsl.rb +0 -73
- data/test/test_rake_early_time.rb +0 -31
- data/test/test_rake_extension.rb +0 -59
- data/test/test_rake_file_creation_task.rb +0 -62
- data/test/test_rake_file_list.rb +0 -633
- data/test/test_rake_file_list_path_map.rb +0 -8
- data/test/test_rake_file_task.rb +0 -104
- data/test/test_rake_file_utils.rb +0 -252
- data/test/test_rake_ftp_file.rb +0 -59
- data/test/test_rake_functional.rb +0 -468
- data/test/test_rake_invocation_chain.rb +0 -52
- data/test/test_rake_makefile_loader.rb +0 -23
- data/test/test_rake_multi_task.rb +0 -51
- data/test/test_rake_name_space.rb +0 -43
- data/test/test_rake_package_task.rb +0 -78
- data/test/test_rake_path_map.rb +0 -157
- data/test/test_rake_path_map_explode.rb +0 -31
- data/test/test_rake_path_map_partial.rb +0 -18
- data/test/test_rake_pseudo_status.rb +0 -20
- data/test/test_rake_rdoc_task.rb +0 -81
- data/test/test_rake_require.rb +0 -35
- data/test/test_rake_rules.rb +0 -346
- data/test/test_rake_task.rb +0 -271
- data/test/test_rake_task_argument_parsing.rb +0 -116
- data/test/test_rake_task_arguments.rb +0 -86
- data/test/test_rake_task_lib.rb +0 -9
- data/test/test_rake_task_manager.rb +0 -145
- data/test/test_rake_task_manager_argument_resolution.rb +0 -36
- data/test/test_rake_task_with_arguments.rb +0 -162
- data/test/test_rake_test_task.rb +0 -122
- data/test/test_rake_top_level_functions.rb +0 -76
- data/test/test_rake_win32.rb +0 -83
- data/test/test_sys.rb +0 -20
data/doc/jamis.rb
CHANGED
data/doc/rake.1
ADDED
@@ -0,0 +1,156 @@
|
|
1
|
+
.Dd June 12, 2016
|
2
|
+
.Dt RAKE 1
|
3
|
+
.Os rake 11.2.2
|
4
|
+
.Sh NAME
|
5
|
+
.Nm rake
|
6
|
+
.Nd make-like build utility for Ruby
|
7
|
+
.Sh SYNOPSIS
|
8
|
+
.Nm
|
9
|
+
.Op Fl f Ar rakefile
|
10
|
+
.Op Ar options
|
11
|
+
.Ar targets ...
|
12
|
+
.Sh DESCRIPTION
|
13
|
+
.Nm
|
14
|
+
is a
|
15
|
+
.Xr make 1 Ns -like
|
16
|
+
build utility for Ruby.
|
17
|
+
Tasks and dependencies are specified in standard Ruby syntax.
|
18
|
+
.Sh OPTIONS
|
19
|
+
.Bl -tag -width Ds
|
20
|
+
.It Fl m , Fl -multitask
|
21
|
+
Treat all tasks as multitasks.
|
22
|
+
.It Fl B , Fl -build-all
|
23
|
+
Build all prerequisites, including those which are up\-to\-date.
|
24
|
+
.It Fl j , Fl -jobs Ar num_jobs
|
25
|
+
Specifies the maximum number of tasks to execute in parallel (default is number of CPU cores + 4).
|
26
|
+
.El
|
27
|
+
.Ss Modules
|
28
|
+
.Bl -tag -width Ds
|
29
|
+
.It Fl I , Fl -libdir Ar libdir
|
30
|
+
Include
|
31
|
+
.Ar libdir
|
32
|
+
in the search path for required modules.
|
33
|
+
.It Fl r , Fl -require Ar module
|
34
|
+
Require
|
35
|
+
.Ar module
|
36
|
+
before executing
|
37
|
+
.Pa rakefile .
|
38
|
+
.El
|
39
|
+
.Ss Rakefile location
|
40
|
+
.Bl -tag -width Ds
|
41
|
+
.It Fl f , Fl -rakefile Ar filename
|
42
|
+
Use
|
43
|
+
.Ar filename
|
44
|
+
as the rakefile to search for.
|
45
|
+
.It Fl N , Fl -no-search , Fl -nosearch
|
46
|
+
Do not search parent directories for the Rakefile.
|
47
|
+
.It Fl G , Fl -no-system , Fl -nosystem
|
48
|
+
Use standard project Rakefile search paths, ignore system wide rakefiles.
|
49
|
+
.It Fl R , Fl -rakelib Ar rakelibdir , Fl -rakelibdir Ar rakelibdir
|
50
|
+
Auto-import any .rake files in
|
51
|
+
.Ar rakelibdir
|
52
|
+
(default is
|
53
|
+
.Sq rakelib )
|
54
|
+
.It Fl g , Fl -system
|
55
|
+
Use system-wide (global) rakefiles (usually
|
56
|
+
.Pa ~/.rake/*.rake ) .
|
57
|
+
.El
|
58
|
+
.Ss Debugging
|
59
|
+
.Bl -tag -width Ds
|
60
|
+
.It Fl -backtrace Ns = Ns Ar out
|
61
|
+
Enable full backtrace.
|
62
|
+
.Ar out
|
63
|
+
can be
|
64
|
+
.Dv stderr
|
65
|
+
(default) or
|
66
|
+
.Dv stdout .
|
67
|
+
.It Fl t , Fl -trace Ns = Ns Ar out
|
68
|
+
Turn on invoke/execute tracing, enable full backtrace.
|
69
|
+
.Ar out
|
70
|
+
can be
|
71
|
+
.Dv stderr
|
72
|
+
(default) or
|
73
|
+
.Dv stdout .
|
74
|
+
.It Fl -suppress-backtrace Ar pattern
|
75
|
+
Suppress backtrace lines matching regexp
|
76
|
+
.Ar pattern .
|
77
|
+
Ignored if
|
78
|
+
.Fl -trace
|
79
|
+
is on.
|
80
|
+
.It Fl -rules
|
81
|
+
Trace the rules resolution.
|
82
|
+
.It Fl n , Fl -dry-run
|
83
|
+
Do a dry run without executing actions.
|
84
|
+
.It Fl T , Fl -tasks Op Ar pattern
|
85
|
+
Display the tasks (matching optional
|
86
|
+
.Ar pattern )
|
87
|
+
with descriptions, then exit.
|
88
|
+
.It Fl D , Fl -describe Op Ar pattern
|
89
|
+
Describe the tasks (matching optional
|
90
|
+
.Ar pattern ) ,
|
91
|
+
then exit.
|
92
|
+
.It Fl W , Fl -where Op Ar pattern
|
93
|
+
Describe the tasks (matching optional
|
94
|
+
.Ar pattern ) ,
|
95
|
+
then exit.
|
96
|
+
.It Fl P , Fl -prereqs
|
97
|
+
Display the tasks and dependencies, then exit.
|
98
|
+
.It Fl e , Fl -execute Ar code
|
99
|
+
Execute some Ruby code and exit.
|
100
|
+
.It Fl p , Fl -execute-print Ar code
|
101
|
+
Execute some Ruby code, print the result, then exit.
|
102
|
+
.It Fl E , Fl -execute-continue Ar code
|
103
|
+
Execute some Ruby code, then continue with normal task processing.
|
104
|
+
.El
|
105
|
+
.Ss Information
|
106
|
+
.Bl -tag -width Ds
|
107
|
+
.It Fl v , Fl -verbose
|
108
|
+
Log message to standard output.
|
109
|
+
.It Fl q , Fl -quiet
|
110
|
+
Do not log messages to standard output.
|
111
|
+
.It Fl s , Fl -silent
|
112
|
+
Like
|
113
|
+
.Fl -quiet ,
|
114
|
+
but also suppresses the
|
115
|
+
.Sq in directory
|
116
|
+
announcement.
|
117
|
+
.It Fl X , Fl -no-deprecation-warnings
|
118
|
+
Disable the deprecation warnings.
|
119
|
+
.It Fl -comments
|
120
|
+
Show commented tasks only
|
121
|
+
.It Fl A , Fl -all
|
122
|
+
Show all tasks, even uncommented ones (in combination with
|
123
|
+
.Fl T
|
124
|
+
or
|
125
|
+
.Fl D )
|
126
|
+
.It Fl -job-stats Op Ar level
|
127
|
+
Display job statistics.
|
128
|
+
If
|
129
|
+
.Ar level
|
130
|
+
is
|
131
|
+
.Sq history ,
|
132
|
+
displays a complete job list.
|
133
|
+
.It Fl V , Fl -version
|
134
|
+
Display the program version.
|
135
|
+
.It Fl h , Fl H , Fl -help
|
136
|
+
Display a help message.
|
137
|
+
.El
|
138
|
+
.Sh SEE ALSO
|
139
|
+
The complete documentation for
|
140
|
+
.Nm rake
|
141
|
+
has been installed at
|
142
|
+
.Pa /usr/share/doc/rake-doc/html/index.html .
|
143
|
+
It is also available online at
|
144
|
+
.Lk https://ruby.github.io/rake .
|
145
|
+
.Sh AUTHORS
|
146
|
+
.An -nosplit
|
147
|
+
.Nm
|
148
|
+
was written by
|
149
|
+
.An Jim Weirich Aq Mt jim@weirichhouse.org .
|
150
|
+
.Pp
|
151
|
+
This manual was created by
|
152
|
+
.An Caitlin Matos Aq Mt caitlin.matos@zoho.com
|
153
|
+
for the Debian project (but may be used by others).
|
154
|
+
It was inspired by the manual by
|
155
|
+
.An Jani Monoses Aq Mt jani@iv.ro
|
156
|
+
for the Ubuntu project.
|
data/doc/rakefile.rdoc
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
= Rakefile Format
|
1
|
+
= Rakefile Format
|
2
2
|
|
3
3
|
First of all, there is no special format for a Rakefile. A Rakefile
|
4
4
|
contains executable Ruby code. Anything legal in a ruby script is
|
@@ -30,9 +30,9 @@ parameter that is the name of the task.
|
|
30
30
|
Any prerequisites are given as a list (enclosed in square brackets)
|
31
31
|
following the name and an arrow (=>).
|
32
32
|
|
33
|
-
task :
|
33
|
+
task name: [:prereq1, :prereq2]
|
34
34
|
|
35
|
-
|
35
|
+
*NOTE:* Although this syntax looks a little funky, it is legal
|
36
36
|
Ruby. We are constructing a hash where the key is :name and the value
|
37
37
|
for that key is the list of prerequisites. It is equivalent to the
|
38
38
|
following ...
|
@@ -41,13 +41,27 @@ following ...
|
|
41
41
|
hash[:name] = [:prereq1, :prereq2]
|
42
42
|
task(hash)
|
43
43
|
|
44
|
+
You can also use strings for task names and prerequisites, rake doesn't care.
|
45
|
+
This is the same task definition:
|
46
|
+
|
47
|
+
task 'name' => %w[prereq1 prereq2]
|
48
|
+
|
49
|
+
As is this:
|
50
|
+
|
51
|
+
task name: %w[prereq1 prereq2]
|
52
|
+
|
53
|
+
We'll prefer this style for regular tasks with prerequisites throughout the
|
54
|
+
rest of the document. Using an array of strings for the prerequisites means
|
55
|
+
you will need to make fewer changes if you need to move tasks into namespaces
|
56
|
+
or perform other refactorings.
|
57
|
+
|
44
58
|
=== Tasks with Actions
|
45
59
|
|
46
60
|
Actions are defined by passing a block to the +task+ method. Any Ruby
|
47
61
|
code can be placed in the block. The block may reference the task
|
48
62
|
object via the block parameter.
|
49
63
|
|
50
|
-
task :
|
64
|
+
task name: [:prereq1, :prereq2] do |t|
|
51
65
|
# actions (may reference t)
|
52
66
|
end
|
53
67
|
|
@@ -62,8 +76,8 @@ For example, the following is equivalent to the single task
|
|
62
76
|
specification given above.
|
63
77
|
|
64
78
|
task :name
|
65
|
-
task :
|
66
|
-
task :
|
79
|
+
task name: :prereq1
|
80
|
+
task name: %w[prereq2]
|
67
81
|
task :name do |t|
|
68
82
|
# actions
|
69
83
|
end
|
@@ -79,8 +93,8 @@ method). In addition, file tasks are usually named with a string
|
|
79
93
|
rather than a symbol.
|
80
94
|
|
81
95
|
The following file task creates a executable program (named +prog+)
|
82
|
-
given two object files
|
83
|
-
for creating
|
96
|
+
given two object files named +a.o+ and +b.o+. The tasks
|
97
|
+
for creating +a.o+ and +b.o+ are not shown.
|
84
98
|
|
85
99
|
file "prog" => ["a.o", "b.o"] do |t|
|
86
100
|
sh "cc -o #{t.name} #{t.prerequisites.join(' ')}"
|
@@ -97,9 +111,9 @@ that creates the directory. For example, the following declaration
|
|
97
111
|
|
98
112
|
is equivalent to ...
|
99
113
|
|
100
|
-
file "testdata"
|
101
|
-
file "testdata/examples"
|
102
|
-
file "testdata/examples/doc" do |t| mkdir t.name end
|
114
|
+
file "testdata" do |t| mkdir t.name end
|
115
|
+
file "testdata/examples" => ["testdata"] do |t| mkdir t.name end
|
116
|
+
file "testdata/examples/doc" => ["testdata/examples"] do |t| mkdir t.name end
|
103
117
|
|
104
118
|
The +directory+ method does not accept prerequisites or actions, but
|
105
119
|
both prerequisites and actions can be added later. For example ...
|
@@ -114,7 +128,7 @@ both prerequisites and actions can be added later. For example ...
|
|
114
128
|
|
115
129
|
Rake allows parallel execution of prerequisites using the following syntax:
|
116
130
|
|
117
|
-
multitask :
|
131
|
+
multitask copy_files: %w[copy_src copy_doc copy_bin] do
|
118
132
|
puts "All Copies Complete"
|
119
133
|
end
|
120
134
|
|
@@ -133,9 +147,9 @@ until the common prerequisites have been run.
|
|
133
147
|
For example, if the <tt>copy_<em>xxx</em></tt> tasks have the
|
134
148
|
following prerequisites:
|
135
149
|
|
136
|
-
task :
|
137
|
-
task :
|
138
|
-
task :
|
150
|
+
task copy_src: :prep_for_copy
|
151
|
+
task copy_bin: :prep_for_copy
|
152
|
+
task copy_doc: :prep_for_copy
|
139
153
|
|
140
154
|
Then the +prep_for_copy+ task is run before starting all the copies in
|
141
155
|
parallel. Once +prep_for_copy+ is complete, +copy_src+, +copy_bin+,
|
@@ -175,7 +189,7 @@ arguments can be passed by separating them with a comma, for example:
|
|
175
189
|
|
176
190
|
Just a few words of caution. The rake task name and its arguments
|
177
191
|
need to be a single command line argument to rake. This generally
|
178
|
-
means no spaces. If spaces are needed, then the entire
|
192
|
+
means no spaces. If spaces are needed, then the entire name +
|
179
193
|
argument string should be quoted. Something like this:
|
180
194
|
|
181
195
|
rake "name[billy bob, smith]"
|
@@ -183,22 +197,6 @@ argument string should be quoted. Something like this:
|
|
183
197
|
(Quoting rules vary between operating systems and shells, so make sure
|
184
198
|
you consult the proper docs for your OS/shell).
|
185
199
|
|
186
|
-
=== Tasks Arguments and the Environment
|
187
|
-
|
188
|
-
Task argument values can also be picked up from the environment. For
|
189
|
-
example, if the "release" task expected a parameter named
|
190
|
-
"release_version", then either
|
191
|
-
|
192
|
-
rake release[0.8.2]
|
193
|
-
|
194
|
-
or
|
195
|
-
|
196
|
-
RELEASE_VERSION rake release
|
197
|
-
|
198
|
-
will work. Environment variable names must either match the task
|
199
|
-
parameter exactly, or match an all-uppercase version of the task
|
200
|
-
parameter.
|
201
|
-
|
202
200
|
=== Tasks that Expect Parameters
|
203
201
|
|
204
202
|
Parameters are only given to tasks that are setup to expect them. In
|
@@ -225,9 +223,7 @@ behaviour can now accept a second parameter:
|
|
225
223
|
The first argument of the block "t" is always bound to the current
|
226
224
|
task object. The second argument "args" is an open-struct like object
|
227
225
|
that allows access to the task arguments. Extra command line
|
228
|
-
arguments to a task are ignored.
|
229
|
-
picked up from matching environment variables. If there are no
|
230
|
-
matching environment variables, they are given the nil value.
|
226
|
+
arguments to a task are ignored.
|
231
227
|
|
232
228
|
If you wish to specify default values for the arguments, you can use
|
233
229
|
the with_defaults method in the task body. Here is the above example
|
@@ -251,6 +247,25 @@ for tasks with arguments. For example:
|
|
251
247
|
puts "Last name is #{args.last_name}"
|
252
248
|
end
|
253
249
|
|
250
|
+
=== Tasks that take Variable-length Parameters
|
251
|
+
|
252
|
+
Tasks that need to handle a list of values as a parameter can use the
|
253
|
+
extras method of the args variable. This allows for tasks that can
|
254
|
+
loop over a variable number of values, and its compatible with named
|
255
|
+
parameters as well:
|
256
|
+
|
257
|
+
task :email, [:message] do |t, args|
|
258
|
+
mail = Mail.new(args.message)
|
259
|
+
recipients = args.extras
|
260
|
+
recipients.each do |target|
|
261
|
+
mail.send_to(target)
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
There is also the convenience method to_a that returns all parameters
|
266
|
+
in the sequential order they were given, including those associated
|
267
|
+
with named parameters.
|
268
|
+
|
254
269
|
=== Deprecated Task Parameters Format
|
255
270
|
|
256
271
|
There is an older format for declaring task parameters that omitted
|
@@ -262,8 +277,7 @@ versions of rake.
|
|
262
277
|
== Accessing Task Programmatically
|
263
278
|
|
264
279
|
Sometimes it is useful to manipulate tasks programmatically in a
|
265
|
-
Rakefile. To find a task object
|
266
|
-
<tt>Rake::Task</tt>.
|
280
|
+
Rakefile. To find a task object use Rake::Task.[].
|
267
281
|
|
268
282
|
=== Programmatic Task Example
|
269
283
|
|
@@ -291,7 +305,7 @@ Running this example:
|
|
291
305
|
|
292
306
|
The ability to programmatically manipulate tasks gives rake very
|
293
307
|
powerful meta-programming capabilities w.r.t. task execution, but
|
294
|
-
should be used with
|
308
|
+
should be used with caution.
|
295
309
|
|
296
310
|
== Rules
|
297
311
|
|
@@ -332,18 +346,18 @@ The following rule is equivalent to the example above.
|
|
332
346
|
sh "cc #{t.source} -c -o #{t.name}"
|
333
347
|
end
|
334
348
|
|
335
|
-
|
349
|
+
*NOTE:* Because of a _quirk_ in Ruby syntax, parenthesis are
|
336
350
|
required on *rule* when the first argument is a regular expression.
|
337
351
|
|
338
352
|
The following rule might be used for Java files ...
|
339
353
|
|
340
|
-
rule '.
|
354
|
+
rule '.class' => [
|
341
355
|
proc { |tn| tn.sub(/\.class$/, '.java').sub(/^classes\//, 'src/') }
|
342
356
|
] do |t|
|
343
357
|
java_compile(t.source, t.name)
|
344
358
|
end
|
345
359
|
|
346
|
-
|
360
|
+
*NOTE:* +java_compile+ is a hypothetical method that invokes the
|
347
361
|
java compiler.
|
348
362
|
|
349
363
|
== Importing Dependencies
|
@@ -354,23 +368,18 @@ required file are just added to the definitions already accumulated.
|
|
354
368
|
|
355
369
|
Because the files are loaded _before_ the rake targets are evaluated,
|
356
370
|
the loaded files must be "ready to go" when the rake command is
|
357
|
-
invoked.
|
371
|
+
invoked. This makes generated dependency files difficult to use. By
|
358
372
|
the time rake gets around to updating the dependencies file, it is too
|
359
373
|
late to load it.
|
360
374
|
|
361
|
-
The +
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
<b>NOTE:</b> Starting in Rake version 0.9.0, the top level +import+
|
369
|
-
command is deprecated and we recommend using the scoped
|
370
|
-
"+Rake.import+" command mentioned above. Future versions of Rake will
|
371
|
-
drop support for the top level +import+ command.
|
375
|
+
The +import+ command addresses this by specifying a file to be loaded
|
376
|
+
_after_ the main rakefile is loaded, but _before_ any targets on the
|
377
|
+
command line are invoked. In addition, if the file name matches an
|
378
|
+
explicit task, that task is invoked before loading the file. This
|
379
|
+
allows dependency files to be generated and used in a single rake
|
380
|
+
command invocation.
|
372
381
|
|
373
|
-
|
382
|
+
Example:
|
374
383
|
|
375
384
|
require 'rake/loaders/makefile'
|
376
385
|
|
@@ -378,7 +387,7 @@ drop support for the top level +import+ command.
|
|
378
387
|
sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}"
|
379
388
|
end
|
380
389
|
|
381
|
-
|
390
|
+
import ".depends.mf"
|
382
391
|
|
383
392
|
If ".depends" does not exist, or is out of date w.r.t. the source
|
384
393
|
files, a new ".depends" file is generated using +makedepend+ before
|
@@ -391,17 +400,17 @@ legal in Ruby source code, including comments for tasks and rules.
|
|
391
400
|
However, if you wish a task to be described using the "-T" switch,
|
392
401
|
then you need to use the +desc+ command to describe the task.
|
393
402
|
|
394
|
-
|
403
|
+
Example:
|
395
404
|
|
396
405
|
desc "Create a distribution package"
|
397
|
-
task :
|
406
|
+
task package: %w[ ... ] do ... end
|
398
407
|
|
399
408
|
The "-T" switch (or "--tasks" if you like to spell things out) will
|
400
409
|
display a list of tasks that have a description. If you use +desc+ to
|
401
410
|
describe your major tasks, you have a semi-automatic way of generating
|
402
411
|
a summary of your Rake file.
|
403
412
|
|
404
|
-
|
413
|
+
$ rake -T
|
405
414
|
(in /home/.../rake)
|
406
415
|
rake clean # Remove any temporary products.
|
407
416
|
rake clobber # Remove any generated file.
|
@@ -426,8 +435,7 @@ common for task names to begin to clash. For example, if you might
|
|
426
435
|
have a main program and a set of sample programs built by a single
|
427
436
|
Rakefile. By placing the tasks related to the main program in one
|
428
437
|
namespace, and the tasks for building the sample programs in a
|
429
|
-
different namespace, the task names will not
|
430
|
-
each other.
|
438
|
+
different namespace, the task names will not interfere with each other.
|
431
439
|
|
432
440
|
For example:
|
433
441
|
|
@@ -443,12 +451,12 @@ For example:
|
|
443
451
|
end
|
444
452
|
end
|
445
453
|
|
446
|
-
task :
|
454
|
+
task build: %w[main:build samples:build]
|
447
455
|
|
448
456
|
Referencing a task in a separate namespace can be achieved by
|
449
457
|
prefixing the task name with the namespace and a colon
|
450
458
|
(e.g. "main:build" refers to the :build task in the +main+ namespace).
|
451
|
-
Nested namespaces are supported
|
459
|
+
Nested namespaces are supported.
|
452
460
|
|
453
461
|
Note that the name given in the +task+ command is always the unadorned
|
454
462
|
task name without any namespace prefixes. The +task+ command always
|
@@ -550,6 +558,63 @@ This is the proper way to specify the task ...
|
|
550
558
|
# Actions go here
|
551
559
|
end
|
552
560
|
|
561
|
+
== Rakefile Path
|
562
|
+
|
563
|
+
When issuing the +rake+ command in a terminal, Rake will look
|
564
|
+
for a Rakefile in the current directory. If a Rakefile is not found,
|
565
|
+
it will search parent directories until one is found.
|
566
|
+
|
567
|
+
For example, if a Rakefile resides in the +project/+ directory,
|
568
|
+
moving deeper into the project's directory tree will not have an adverse
|
569
|
+
effect on rake tasks:
|
570
|
+
|
571
|
+
$ pwd
|
572
|
+
/home/user/project
|
573
|
+
|
574
|
+
$ cd lib/foo/bar
|
575
|
+
$ pwd
|
576
|
+
/home/user/project/lib/foo/bar
|
577
|
+
|
578
|
+
$ rake run_pwd
|
579
|
+
/home/user/project
|
580
|
+
|
581
|
+
As far as rake is concerned, all tasks are run from the directory in
|
582
|
+
which the Rakefile resides.
|
583
|
+
|
584
|
+
=== Multiple Rake Files
|
585
|
+
|
586
|
+
Not all tasks need to be included in a single Rakefile. Additional
|
587
|
+
rake files (with the file extension "+.rake+") may be placed in
|
588
|
+
+rakelib+ directory located at the top level of a project (i.e.
|
589
|
+
the same directory that contains the main +Rakefile+).
|
590
|
+
|
591
|
+
Also, rails projects may include additional rake files in the
|
592
|
+
+lib/tasks+ directory.
|
593
|
+
|
594
|
+
=== Clean and Clobber Tasks
|
595
|
+
|
596
|
+
Through <tt>require 'rake/clean'</tt> Rake provides +clean+ and +clobber+
|
597
|
+
tasks:
|
598
|
+
|
599
|
+
+clean+ ::
|
600
|
+
Clean up the project by deleting scratch files and backup files. Add files
|
601
|
+
to the +CLEAN+ FileList to have the +clean+ target handle them.
|
602
|
+
|
603
|
+
+clobber+ ::
|
604
|
+
Clobber all generated and non-source files in a project. The task depends
|
605
|
+
on +clean+, so all the +CLEAN+ files will be deleted as well as files in the
|
606
|
+
+CLOBBER+ FileList. The intent of this task is to return a project to its
|
607
|
+
pristine, just unpacked state.
|
608
|
+
|
609
|
+
You can add file names or glob patterns to both the +CLEAN+ and +CLOBBER+
|
610
|
+
lists.
|
611
|
+
|
612
|
+
=== Phony Task
|
613
|
+
|
614
|
+
The phony task can be used as a dependency to allow file-based tasks to use
|
615
|
+
non-file-based-tasks as prerequisites without forcing them to rebuild. You
|
616
|
+
can <tt>require 'rake/phony'</tt> to add the +phony+ task.
|
617
|
+
|
553
618
|
----
|
554
619
|
|
555
620
|
== See
|