require 'rake/classic_namespace'
to the
+ Rakefile to get the old behavior.
+
+ rake will print a rather annoying warning whenever a
+ deprecated class name is referenced without enabling classic
+ namespace.
+
+===== Bug Fixes
+
+* Several unit tests and functional tests were fixed to run better
+ under windows.
+
+* Directory tasks are now a specialized version of a File task. A
+ directory task will only be triggered if it doesn't exist. It will
+ not be triggered if it is out of date w.r.t. any of its
+ prerequisites.
+
+* Fixed a bug in the Rake::GemPackageTask class so that the gem now
+ properly contains the platform name.
+
+* Fixed a bug where a prerequisite on a file task would cause
+ an exception if the prerequisite did not exist.
+
+==== Thanks
+
+As usual, it was input from users that drove a alot of these changes.
+The following people either contributed patches, made suggestions or
+made otherwise helpful comments. Thanks to ...
+
+* Greg Fast (better ruby_opt test options)
+* Kelly Felkins (requested by better namespace support)
+* Martin Fowler (suggested Task.investigation)
+* Stuart Jansen (send initial patch for multiple prerequisites).
+* Masao Mutch (better support for non-ruby Gem platforms)
+* Philipp Neubeck (patch for file task exception fix)
+
+-- Jim Weirich
+
+=== 0.5.4
+
+Time for some minor bug fixes and small enhancements
+
+==== Changes
+
+Here are the changes for version 0.5.4 ...
+
+* Added double quotes to the test runner. This allows the location of
+ the tests (and runner) to be in a directory path that contains
+ spaces (e.g. "C:/Program Files/ruby/bin").
+* Added .svn to default ignore list. Now subversion project metadata
+ is automatically ignored by Rake's FileList.
+* Updated FileList#include to support nested arrays and filelists.
+ FileLists are flat lists of file names. Using a FileList in an
+ include will flatten out the nested file names.
+
+== Thanks
+
+As usual, it was input from users that drove a alot of these changes.
+Thanks to ...
+
+* Tilman Sauerbeck for the nested FileList suggestion.
+* Josh Knowles for pointing out the spaces in directory name problem.
+
+-- Jim Weirich
+
+=== 0.5.3
+
+Although it has only been two weeks since the last release, we have
+enough updates to the Rake program to make it time for another
+release.
+
+==== Changes
+
+Here are the changes for version 0.5.3 ...
+
+* FileLists have been extensively changed so that they mimic the
+ behavior of real arrays even more closely. In particular,
+ operations on FileLists that return a new collection (e.g. collect,
+ reject) will now return a FileList rather than an array. In
+ addition, several places where FileLists were not properly expanded
+ before use have been fixed.
+* A method (+ext+) to simplify the handling of file extensions was
+ added to String and to Array.
+* The 'testrb' script in test/unit tends to silently swallow syntax
+ errors in test suites. Because of that, the default test loader is
+ now a rake-provided script. You can still use 'testrb' by setting
+ the loader flag in the test task to :testrb. (See the API documents
+ for TestTask for all the loader flag values).
+* FileUtil methods (e.g. cp, mv, install) are now declared to be
+ private. This will cut down on the interference with user defined
+ methods of the same name.
+* Fixed the verbose flag in the TestTask so that the test code is
+ controlled by the flag. Also shortened up some failure messages.
+ (Thanks to Tobias Luetke for the suggestion).
+* Rules will now properly detect a task that can generate a source
+ file. Previously rules would only consider source files that were
+ already present.
+* Added an +import+ command that allows Rake to dynamically import
+ dependendencies into a running Rake session. The +import+ command
+ can run tasks to update the dependency file before loading them.
+ Dependency files can be in rake or make format, allowing rake to
+ work with tools designed to generate dependencies for make.
+
+==== Thanks
+
+As usual, it was input from users that drove a alot of these changes.
+Thanks to ...
+
+* Brian Gernhardt for the rules fix (especially for the patience to
+ explain the problem to me until I got what he was talking about).
+* Stefan Lang for pointing out problems in the dark corners of the
+ FileList implementation.
+* Alexey Verkhovsky pointing out the silently swallows syntax errors
+ in tests.
+* Tobias Luetke for beautifying the test task output.
+* Sam Roberts for some of the ideas behind dependency loading.
+
+-- Jim Weirich
+
+
+=== 0.5.0
+
+It has been a long time in coming, but we finally have a new version
+of Rake available.
+
+==== Changes
+
+* Fixed documentation that was lacking the Rake module name (Tilman
+ Sauerbeck).
+* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck).
+* Recursive rules are now supported (Tilman Sauerbeck).
+* Added warning option for the Test Task (requested by Eric Hodel).
+* The jamis rdoc template is only used if it exists.
+* Added fix for Ruby 1.8.2 test/unit and rails problem.
+* Added contributed rake man file (Jani Monoses).
+* Added Brian Candler's fix for problems in --trace and --dry-run
+ mode.
+
+==== Thanks
+
+Lots of people provided input to this release. Thanks to Tilman
+Sauerbeck for numerous patches, documentation fixes and suggestions.
+And for also pushing me to get this release out. Also, thanks to
+Brian Candler for the finding and fixing --trace/dry-run fix. That
+was an obscure bug. Also to Eric Hodel for some good suggestions.
+
+-- Jim Weirich
+
+=== 0.4.15
+
+==== Changes
+
+Version 0.4.15 is a bug fix update for the Ruby 1.8.2 compatibility
+changes. This release includes:
+
+* Fixed a bug that prevented the TESTOPTS flag from working with the
+ revised for 1.8.2 test task.
+* Updated the docs on --trace to indicate that it also enables a full
+ backtrace on errors.
+* Several fixes for new warnings generated.
+
+==== Mini-Roadmap
+
+I will continue to issue Rake updates in the 0.4.xx series as new
+Ruby-1.8.2 issues become manifest. Once the codebase stabilizes, I
+will release a 0.5.0 version incorporating all the changes. If you
+are not using Ruby-1.8.2 and wish to avoid version churn, I recommend
+staying with a release prior to Rake-0.4.14.
+
+=== 0.4.14
+
+Version 0.4.14 is a compatibility fix to allow Rake's test task to
+work under Ruby 1.8.2. A change in the Test::Unit autorun feature
+prevented Rake from running any tests. This release fixes the
+problem.
+
+Rake 0.4.14 is the recommended release for anyone using Ruby 1.8.2.
+
+=== 0.4.13
+
+* Fixed the dry-run flag so it is operating again.
+* Multiple arguments to sh and ruby commands will not be interpreted
+ by the shell (patch provided by Jonathan Paisley).
+
+=== 0.4.12
+
+* Added --silent (-s) to suppress the (in directory) rake message.
+
+=== 0.4.11
+
+* Changed the "don't know how to rake" message (finally)
+* Changes references to a literal "Rakefile" to reference the global
+ variable $rakefile (which contains the actual name of the rakefile).
+
+=== 0.4.10
+
+* Added block support to the "sh" command, allowing users to take
+ special actions on the result of the system call. E.g.
+
+ sh "shell_command" do |ok, res|
+ puts "Program returned #{res.exitstatus}" if ! ok
+ end
+
+=== 0.4.9
+
+* Switched to Jamis Buck's RDoc template.
+* Removed autorequire from Rake's gem spec. This prevents the Rake
+ libraries from loading while using rails.
+
+=== 0.4.8
+
+* Added support for .rb versions of Rakefile.
+* Removed \\\n's from test task.
+* Fixed Ruby 1.9 compatibility issue with FileList.
+
+=== 0.4.7
+
+* Fixed problem in FileList that caused Ruby 1.9 to go into infinite
+ recursion. Since to_a was removed from Object, it does not need to
+ added back into the list of methods to rewrite in FileList. (Thanks
+ to Kent Sibilev for pointing this out).
+
+=== 0.4.6
+* Removed test version of ln in FileUtils that prevented safe_ln from
+ using ln.
+
+=== 0.4.5
+* Upgraded comments in TestTask.
+* FileList to_s and inspect now automatically resolve pending changes.
+* FileList#exclude properly returns the FileList.
+
+=== 0.4.4
+* Fixed initialization problem with @comment.
+* Now using multi -r technique in TestTask. Switch Rakefile back to
+ using the built-in test task macros because the rake runtime is no
+ longer needed.
+* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task
+ macros.
+* Allow a +test_files+ attribute in test tasks. This allows more
+ flexibility in specifying test files.
+
+=== 0.4.3
+* Fixed Comment leakage.
+
+=== 0.4.2
+* Added safe_ln that falls back to a copy if a file link is not supported.
+* Package builder now uses safe\_ln.
+
+=== 0.4.1
+* Task comments are now additive, combined with "/".
+* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0)
+
+=== 0.4.0
+* FileList now uses deferred loading. The file system is not searched
+ until the first call that needs the file names.
+* VAR=VALUE options are now accepted on the command line and are
+ treated like environment variables. The values may be tested in a
+ Rakefile by referencing ENV['VAR'].
+* File.mtime is now used (instead of File.new().mtime).
+
+=== 0.3.2.x
+
+* Removed some hidden dependencies on rubygems. Tests now will test
+ gems only if they are installed.
+* Removed Sys from some example files. I believe that is that last
+ reference to Sys outside of the contrib area.
+* Updated all copyright notices to include 2004.
+
+=== 0.3.2
+
+* GEM Installation now works with the application stub.
+
+=== 0.3.1
+
+* FileLists now automatically ignore CVS, .bak, !
+* GEM Installation now works.
+
+=== 0.3.0
+
+Promoted 0.2.10.
+
+=== 0.2.10
+General
+
+* Added title to Rake's rdocs
+* Contrib packages are no longer included in the documentation.
+
+RDoc Issues
+
+* Removed default for the '--main' option
+* Fixed rendering of the rdoc options
+* Fixed clean/clobber confusion with rerdoc
+* 'title' attribute added
+
+Package Task Library Issues
+
+* Version (or explicit :noversion) is required.
+* +package_file+ attribute is now writable
+
+FileList Issues
+
+* Dropped bang version of exclude. Now using ant-like include/exclude semantics.
+* Enabled the "yield self" idiom in FileList#initialize.
+
+=== 0.2.9
+
+This version contains numerous changes as the RubyConf.new(2003)
+presentation was being prepared. The changes include:
+
+* The monolithic rubyapp task library is in the process of being
+ dropped in favor of lighter weight task libraries.
+
+=== 0.2.7
+
+* Added "desc" for task descriptions.
+* -T will now display tasks with descriptions.
+* -P will display tasks and prerequisites.
+* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys
+ is still supported in the contrib area.
+
+=== 0.2.6
+
+* Moved to RubyForge
+
+=== 0.2.5
+
+* Switched to standard ruby app builder.
+* Added no_match option to file matcher.
+
+=== 0.2.4
+
+* Fixed indir, which neglected to actually change directories.
+
+=== 0.2.3
+
+* Added rake module for a help target
+* Added 'for\_files' to Sys
+* Added a $rakefile constant
+* Added test for selecting proper rule with multiple targets.
diff --git a/MIT-LICENSE b/MIT-LICENSE
index 727347539..4292f3b3c 100644
--- a/MIT-LICENSE
+++ b/MIT-LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2003, 2004 Jim Weirich
+Copyright (c) Jim Weirich
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
diff --git a/README.rdoc b/README.rdoc
index 3941f7950..5f0278d8e 100644
--- a/README.rdoc
+++ b/README.rdoc
@@ -1,7 +1,13 @@
= RAKE -- Ruby Make
-This package contains Rake, a simple ruby build program with capabilities
-similar to make.
+home :: https://github.com/ruby/rake
+bugs :: https://github.com/ruby/rake/issues
+docs :: https://ruby.github.io/rake
+
+== Description
+
+Rake is a Make-like program implemented in Ruby. Tasks and dependencies are
+specified in standard Ruby syntax.
Rake has the following features:
@@ -17,9 +23,9 @@ Rake has the following features:
file names and paths.
* A library of prepackaged tasks to make building rakefiles easier. For example,
- tasks for building tarballs and publishing to FTP or SSH sites. (Formerly
- tasks for building RDoc and Gems were included in rake but they're now
- available in RDoc and RubyGems respectively.)
+ tasks for building tarballs. (Formerly
+ tasks for building RDoc, Gems, and publishing to FTP were included in rake but they're now
+ available in RDoc, RubyGems, and rake-contrib respectively.)
* Supports parallel execution of tasks.
@@ -29,7 +35,7 @@ Rake has the following features:
Download and install rake with the following.
- gem install rake
+ gem install rake
== Usage
@@ -38,7 +44,7 @@ Download and install rake with the following.
First, you must write a "Rakefile" file which contains the build rules. Here's
a simple example:
- task :default => [:test]
+ task default: %w[test]
task :test do
ruby "test/unittest.rb"
@@ -46,8 +52,8 @@ a simple example:
This Rakefile has two tasks:
-* A task named "test", which - upon invocation - will run a unit test file in
- Ruby.
+* A task named "test", which -- upon invocation -- will run a unit test file
+ in Ruby.
* A task named "default". This task does nothing by itself, but it has exactly
one dependency, namely the "test" task. Invoking the "default" task will
cause Rake to invoke the "test" task as well.
@@ -64,124 +70,86 @@ Running the "rake" command without any options will cause it to run the
Type "rake --help" for all available options.
+== Resources
-=== More Information
-
-* For details on Rake's command-line invocation, read
- doc/command_line_usage.rdoc[https://github.com/jimweirich/rake/blob/master/doc/command_line_usage.rdoc]
-* For details on writing Rakefiles, see
- doc/rakefile.rdoc[https://github.com/jimweirich/rake/blob/master/doc/rakefile.rdoc].
-* For the original announcement of Rake, see
- doc/rational.rdoc[https://github.com/jimweirich/rake/blob/master/doc/rational.rdoc].
-* For a glossary of terms, see
- doc/glossary.rdoc[https://github.com/jimweirich/rake/blob/master/doc/glossary.rdoc].
-
-== Development
-
-=== Source Repository
-
-Rake is currently hosted at github. The github web page is
-http://github.com/jimweirich/rake. The public git clone URL is
-
-* git://github.com/jimweirich/rake.git
-
-=== Running the Rake Test Suite
-
-If you wish to run the unit and functional tests that come with Rake:
-
-* Install the 'flexmock' gem
-* Install the 'session' gem in order to run the functional tests.
-* CD into the top project directory of rake.
-* Type one of the following:
-
- rake # If you have a version of rake installed
- ruby -Ilib bin/rake # If you do not have a version of rake installed.
-
-=== Issues and Bug Reports
-
-Feature requests and bug reports can be made here
-
-* https://github.com/jimweirich/rake/issues
-
-Issues and bug reports can also be tracked here:
+=== Rake Information
-* http://www.pivotaltracker.com/projects/28469
-
-== Online Resources
-
-=== Rake References
-
-* Rake Documentation Home: http://docs.rubyrake.org
-* Rake Project Page: http://github.com/jimweirich/rake
-* Rake API Documents: http://onestepback.org/software/rake/
-* Rake Source Code Repo: http://github.com/jimweirich/rake
-* Rake Git Repo Clone URL: git://github.com/jimweirich/rake.git
-* Rake Bug Reports: https://github.com/jimweirich/rake/issues
-* Rake Continuous Build Server: https://travis-ci.org/#!/jimweirich/rake
+* {Rake command-line}[link:doc/command_line_usage.rdoc]
+* {Writing Rakefiles}[link:doc/rakefile.rdoc]
+* The original {Rake announcement}[link:doc/rational.rdoc]
+* Rake {glossary}[link:doc/glossary.rdoc]
=== Presentations and Articles about Rake
-* Jim Weirich's 2003 RubyConf presentation:
- http://onestepback.org/articles/buildingwithrake/
+* Avdi Grimm's rake series:
+ 1. {Rake Basics}[http://devblog.avdi.org/2014/04/21/rake-part-1-basics/]
+ 2. {Rake File Lists}[http://devblog.avdi.org/2014/04/22/rake-part-2-file-lists/]
+ 3. {Rake Rules}[http://devblog.avdi.org/2014/04/23/rake-part-3-rules/]
+ 4. {Rake Pathmap}[http://devblog.avdi.org/2014/04/24/rake-part-4-pathmap/]
+ 5. {File Operations}[http://devblog.avdi.org/2014/04/25/rake-part-5-file-operations/]
+ 6. {Clean and Clobber}[http://devblog.avdi.org/2014/04/28/rake-part-6-clean-and-clobber/]
+ 7. {MultiTask}[http://devblog.avdi.org/2014/04/29/rake-part-7-multitask/]
+* {Jim Weirich's 2003 RubyConf presentation}[http://web.archive.org/web/20140221123354/http://onestepback.org/articles/buildingwithrake/]
* Martin Fowler's article on Rake: http://martinfowler.com/articles/rake.html
-== Other Make Reinvisionings ...
+== Other Make Re-envisionings ...
Rake is a late entry in the make replacement field. Here are links to
other projects with similar (and not so similar) goals.
-* http://directory.fsf.org/bras.html -- Bras, one of earliest
+* http://directory.fsf.org/wiki/Bras -- Bras, one of earliest
implementations of "make in a scripting language".
* http://www.a-a-p.org -- Make in Python
-* http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make
* http://ant.apache.org -- The Ant project
-* http://ppt.perl.org/commands/make/index.html -- Make from the Perl
- Power Tools implementation.
* http://search.cpan.org/search?query=PerlBuildSystem -- The Perl Build System
-* http://rubydoc.info/gems/rant/0.5.7/frames -- Rant, another Ruby make tool.
+* http://www.rubydoc.info/gems/rant/0.5.7/frames -- Rant, another Ruby make tool.
== Credits
+[Jim Weirich] Who originally created Rake.
+
[Ryan Dlugosz] For the initial conversation that sparked Rake.
-[nobu.nokada@softhome.net] For the initial patch for rule support.
+[Nobuyoshi Nakada require 'rake/classic_namespace'
to the
- Rakefile to get the old behavior.
-
- rake will print a rather annoying warning whenever a
- deprecated class name is referenced without enabling classic
- namespace.
-
-=== Bug Fixes
-
-* Several unit tests and functional tests were fixed to run better
- under windows.
-
-* Directory tasks are now a specialized version of a File task. A
- directory task will only be triggered if it doesn't exist. It will
- not be triggered if it is out of date w.r.t. any of its
- prerequisites.
-
-* Fixed a bug in the Rake::GemPackageTask class so that the gem now
- properly contains the platform name.
-
-* Fixed a bug where a prerequisite on a file task would cause
- an exception if the prerequisite did not exist.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes.
-The following people either contributed patches, made suggestions or
-made otherwise helpful comments. Thanks to ...
-
-* Greg Fast (better ruby_opt test options)
-* Kelly Felkins (requested by better namespace support)
-* Martin Fowler (suggested Task.investigation)
-* Stuart Jansen (send initial patch for multiple prerequisites).
-* Masao Mutch (better support for non-ruby Gem platforms)
-* Philipp Neubeck (patch for file task exception fix)
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.7.0.rdoc b/doc/release_notes/rake-0.7.0.rdoc
deleted file mode 100644
index b8bf56ebb..000000000
--- a/doc/release_notes/rake-0.7.0.rdoc
+++ /dev/null
@@ -1,119 +0,0 @@
-= Rake 0.7.0 Released
-
-These changes for Rake have been brewing for a long time. Here they
-are, I hope you enjoy them.
-
-== Changes
-
-=== New Features
-
-* Name space support for task names (see below).
-
-* Prerequisites can be executed in parallel (see below).
-
-* Added safe_ln support for openAFS (via Ludvig Omholt).
-
-* RDoc defaults to internal (in-process) invocation. The old behavior
- is still available by setting the +external+ flag to true.
-
-* Rakefiles are now loaded with the expanded path to prevent
- accidental polution from the Ruby load path.
-
-* Task objects my now be used in prerequisite lists directly.
-
-* Task objects (in addition to task names) may now be included in the
- prerequisite list of a task.
-
-* Internals cleanup and refactoring.
-
-=== Bug Fixes
-
-* Compatibility fixes for Ruby 1.8.4 FileUtils changes.
-
-=== Namespaces
-
-Tasks can now be nested inside their own namespaces. Tasks within one
-namespace will not accidently interfer with tasks named in a different
-namespace.
-
-For example:
-
- namespace "main" do
- task :build do
- # Build the main program
- end
- end
-
- namespace "samples" do
- task :build do
- # Build the sample programs
- end
- end
-
- task :build_all => ["main:build", "samples:build"]
-
-Even though both tasks are named :build, they are separate tasks in
-their own namespaces. The :build_all task (defined in the toplevel
-namespace) references both build tasks in its prerequisites.
-
-You may invoke each of the individual build tasks with the following
-commands:
-
- rake main:build
- rake samples:build
-
-Or invoke both via the :build_all command:
-
- rake build_all
-
-Namespaces may be nested arbitrarily. Since the name of file tasks
-correspond to the name of a file in the external file system,
-FileTasks are not affected by the namespaces.
-
-See the Rakefile format documentation (in the Rake API documents) for
-more information.
-
-=== Parallel Tasks
-
-Sometimes you have several tasks that can be executed in parallel. By
-specifying these tasks as prerequisites to a +multitask+ task.
-
-In the following example the tasks copy_src, copy_doc and copy_bin
-will all execute in parallel in their own thread.
-
- multitask :copy_files => [:copy_src, :copy_doc, :copy_bin] do
- puts "All Copies Complete"
- end
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes.
-The following people either contributed patches, made suggestions or
-made otherwise helpful comments. Thanks to ...
-
-* Doug Young (inspriation for the parallel task)
-
-* David Heinemeier Hansson (for --trace message enhancement and for
- pushing for namespace support).
-
-* Ludvig Omholt (for the openAFS fix)
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.7.1.rdoc b/doc/release_notes/rake-0.7.1.rdoc
deleted file mode 100644
index c17088ee9..000000000
--- a/doc/release_notes/rake-0.7.1.rdoc
+++ /dev/null
@@ -1,59 +0,0 @@
-= Rake 0.7.1 Released
-
-Version 0.7.1 supplies a bug fix and a few minor enhancements.
-
-== Changes
-
-=== Bug Fixes in 0.7.1
-
-* Changes in the exception reported for the FileUtils.ln caused
- safe_ln to fail with a NotImplementedError. Rake 0.7.1 will now
- catch that error or any StandardError and properly fall back to
- using +cp+.
-
-=== New Features in 0.7.1
-
-* You can filter the results of the --task option by supplying an
- optional regular expression. This allows the user to easily find a
- particular task name in a long list of possible names.
-
-* Transforming procs in a rule may now return a list of prerequisites.
- This allows more flexible rule formation.
-
-* FileList and String now support a +pathmap+ melthod that makes the
- transforming paths a bit easier. See the API docs for +pathmap+ for
- details.
-
-* The -f option without a value will disable the search for a
- Rakefile. This allows the Rakefile to be defined entirely in a
- library (and loaded with the -r option). The current working
- directory is not changed when this is done.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes.
-The following people either contributed patches, made suggestions or
-made otherwise helpful comments. Thanks to ...
-
-* James Britt and Assaph Mehr for reporting and helping to debug the
- safe_ln issue.
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.7.2.rdoc b/doc/release_notes/rake-0.7.2.rdoc
deleted file mode 100644
index ec99ee0c0..000000000
--- a/doc/release_notes/rake-0.7.2.rdoc
+++ /dev/null
@@ -1,121 +0,0 @@
-= Rake 0.7.2 Released
-
-Version 0.7.2 supplies a bug fix and a few minor enhancements. In
-particular, the new version fixes an incompatibility with the soon to
-be released Ruby 1.8.6. We strongly recommend upgrading to Rake 0.7.2
-in order to be compatible with the new version of Ruby.
-
-== Changes
-
-=== Bug Fixes in 0.7.2
-
-There are quite a number of bug fixes in the new 0.7.2 version of
-Rake:
-
-* Removed dependency on internal fu_xxx functions from FileUtils.
-
-* Error messages are now send to stderr rather than stdout (from
- Payton Quackenbush).
-
-* Better error handling on invalid command line arguments (from Payton
- Quackenbush).
-
-* Fixed some bugs where the application object was going to the global
- appliation instead of using its own data.
-
-* Fixed the method name leak from FileUtils (bug found by Glenn
- Vanderburg).
-
-* Added test for noop, bad_option and verbose flags to sh command.
-
-* Added a description to the gem task in GemPackageTask.
-
-* Fixed a bug when rules have multiple prerequisites (patch by Joel
- VanderWerf)
-
-* Added the handful of RakeFileUtils to the private method as well.
-
-=== New Features in 0.7.2
-
-The following new features are available in Rake version 0.7.2:
-
-* Added square and curly bracket patterns to FileList#include (Tilman
- Sauerbeck).
-
-* FileLists can now pass a block to FileList#exclude to exclude files
- based on calculated values.
-
-* Added plain filename support to rule dependents (suggested by Nobu
- Nakada).
-
-* Added pathmap support to rule dependents. In other words, if a
- pathmap format (beginning with a '%') is given as a Rake rule
- dependent, then the name of the depend will be the name of the
- target with the pathmap format applied.
-
-* Added a 'tasks' method to a namespace to get a list of tasks
- associated with the namespace.
-
-* Added tar_command and zip_command options to the Package task.
-
-* The clean task will no longer delete 'core' if it is a directory.
-
-=== Internal Rake Improvements
-
-The following changes will are mainly internal improvements and
-refactorings and have little effect on the end user. But they may be
-of interest to the general public.
-
-* Added rcov task and updated unit testing for better code coverage.
-
-* Added a 'shame' task to the Rakefile.
-
-* Added rake_extension to handle detection of extension collisions.
-
-* Added a protected 'require "rubygems"' to test/test_application to
- unbreak cruisecontrol.rb.
-
-* Removed rake_dup. Now we just simply rescue a bad dup.
-
-* Refactored the FileList reject logic to remove duplication.
-
-* Removed if __FILE__ at the end of the rake.rb file.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes.
-The following people either contributed patches, made suggestions or
-made otherwise helpful comments. Thanks to ...
-
-* Payton Quackenbush -- For several error handling improvements.
-
-* Glenn Vanderburg -- For finding and fixing the method name leak from
- FileUtils.
-
-* Joel VanderWerf -- for finding and fixing a bug in the handling of
- multiple prerequisites.
-
-* Tilman Sauerbeck -- For some enhancing FileList to support more
- advanced file globbing.
-
-* Nobu Nakada -- For suggesting plain file name support to rule dependents.
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.7.3.rdoc b/doc/release_notes/rake-0.7.3.rdoc
deleted file mode 100755
index 7e9f92198..000000000
--- a/doc/release_notes/rake-0.7.3.rdoc
+++ /dev/null
@@ -1,47 +0,0 @@
-= Rake 0.7.3 Released
-
-Rake version 0.7.3 is a minor release that includes some refactoring to better
-support custom Rake applications.
-
-== Changes
-
-=== New Features in Version 0.7.3
-
-* Added the +init+ and +top_level+ methods to make the creation of custom Rake applications a bit easier. E.g.
-
- gem 'rake', ">= 0.7.3"
- require 'rake'
-
- Rake.application.init('myrake')
-
- task :default do
- something_interesting
- end
-
- Rake.application.top_level
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But instead of
-cryptic make recipes, Rake uses standard Ruby code to declare tasks and
-dependencies. You have the full power of a modern scripting language built
-right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.8.0.rdoc b/doc/release_notes/rake-0.8.0.rdoc
deleted file mode 100644
index 4fc7fdd7b..000000000
--- a/doc/release_notes/rake-0.8.0.rdoc
+++ /dev/null
@@ -1,114 +0,0 @@
-= Rake 0.8.0/0.8.1 Released
-
-Rake version 0.8.0 is a new release of rake that includes serveral new
-features.
-
-== Changes
-
-=== New Features in Version 0.8.0
-
-* Tasks can now receive command line parameters. See the examples
- below for more details.
-
-* Comments are limited to 80 columns on output, but full comments can
- be seen by using the -D parameter. (feature suggested by Jamis
- Buck).
-
-* Explicit exit(n) calls will now set the exit status to n. (patch
- provided by Stephen Touset).
-
-* Rake is now compatible with Ruby 1.9.
-
-Version 0.8.1 is a minor update that includes additional Ruby 1.9
-compatibility fixes.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-
-== Task Argument Examples
-
-Prior to version 0.8.0, rake was only able to handle command line
-arguments of the form NAME=VALUE that were passed into Rake via the
-ENV hash. Many folks had asked for some kind of simple command line
-arguments, perhaps using "--" to separate regular task names from
-argument values on the command line. The problem is that there was no
-easy way to associate positional arguments on the command line with
-different tasks. Suppose both tasks :a and :b expect a command line
-argument: does the first value go with :a? What if :b is run first?
-Should it then get the first command line argument.
-
-Rake 0.8.0 solves this problem by explicitly passing values directly
-to the tasks that need them. For example, if I had a release task
-that required a version number, I could say:
-
- rake release[0.8.0]
-
-And the string "0.8.0" will be passed to the :release task. Multiple
-arguments can be passed by separating them with a comma, for example:
-
- rake name[john,doe]
-
-Just a few words of caution. The rake task name and its arguments
-need to be a single command line argument to rake. This generally
-means no spaces. If spaces are needed, then the entire rake +
-argument string should be quoted. Something like this:
-
- rake "name[billy bob, smith]"
-
-(Quoting rules vary between operating systems and shells, so make sure
-you consult the proper docs for your OS/shell).
-
-=== Tasks that Expect Parameters
-
-Parameters are only given to tasks that are setup to expect them. In
-order to handle named parameters, the task declaration syntax for
-tasks has been extended slightly.
-
-For example, a task that needs a first name and last name might be
-declared as:
-
- task :name, :first_name, :last_name
-
-The first argument is still the name of the task (:name in this case).
-The next to argumements are the names of the parameters expected by
-:name (:first_name and :last_name in the example).
-
-To access the values of the paramters, the block defining the task
-behaviour can now accept a second parameter:
-
- task :name, :first_name, :last_name do |t, args|
- puts "First name is #{args.first_name}"
- puts "Last name is #{args.last_name}"
- end
-
-The first argument of the block "t" is always bound to the current
-task object. The second argument "args" is an open-struct like object
-that allows access to the task arguments. Extra command line
-arguments to a task are ignored. Missing command line arguments are
-given the nil value.
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Jamis Buck (for comment formatting suggestions)
-* Stephen Touset (for exit status patch).
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.8.2.rdoc b/doc/release_notes/rake-0.8.2.rdoc
deleted file mode 100644
index a822a9497..000000000
--- a/doc/release_notes/rake-0.8.2.rdoc
+++ /dev/null
@@ -1,165 +0,0 @@
-= Rake 0.8.2 Released
-
-Rake version 0.8.2 is a new release of rake that includes a number of
-new features and numerous bug fixes.
-
-== Changes
-
-=== New Features in Version 0.8.2
-
-* Switched from getoptlong to optparse (patches supplied by Edwin
- Pratomo).
-
-* The -T option will now attempt to dynamically sense the size of the
- terminal. The -T output will only self-truncate if the output is a
- tty. However, if RAKE_COLUMNS is explicitly set, it will be honored
- in any case. (Patch provided by Gavin Stark).
-
-* The following public methods have been added to rake task objects:
-
- * task.clear -- Clear both the prerequisites and actions of the
- target rake task.
- * task.clear_prerequisites -- Clear all the existing prerequisites
- from the target rake task.
- * task.clear_actions -- Clear all the existing actions from the
- target rake task.
- * task.reenable -- Re-enable a task, allowing its actions to be
- executed again if the task is invoked.
-
-* Changed RDoc test task to have no default template. This makes it
- easier for the tempate to pick up the template from the environment.
-
-* Default values for task arguments can easily be specified with the
- :with_defaults method. (Idea for default argument merging supplied
- by (Adam Q. Salter)
-
-=== Bug Fixes in Version 0.8.2
-
-* Fixed bug in package task so that it will include the subdir
- directory in the package for testing. (Bug found by Adam Majer)
-
-* Fixed filename dependency order bug in test_inspect_pending and
- test_to_s_pending. (Bug found by Adam Majer)
-
-* Fixed check for file utils options to make them immune to the
- symbol/string differences. (Patch supplied by Edwin Pratomo)
-
-* Fixed bug with rules involving multiple source, where only the first
- dependency of a rule has any effect (Patch supplied by Emanuel
- Indermühle)
-
-* FileList#clone and FileList#dup have better sematics w.r.t. taint
- and freeze.
-
-* Changed from using Mutex to Monitor. Evidently Mutex causes thread
- join errors when Ruby is compiled with -disable-pthreads. (Patch
- supplied by Ittay Dror)
-
-* Fixed bug in makefile parser that had problems with extra spaces in
- file task names. (Patch supplied by Ittay Dror)
-
-== Other changes in Version 0.8.2
-
-* Added ENV var to rake's own Rakefile to prevent OS X from including
- extended attribute junk in the rake package tar file. (Bug found by
- Adam Majer)
-
-* Added a performance patch for reading large makefile dependency
- files. (Patch supplied by Ittay Dror)
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-
-== Task Argument Examples
-
-Prior to version 0.8.0, rake was only able to handle command line
-arguments of the form NAME=VALUE that were passed into Rake via the
-ENV hash. Many folks had asked for some kind of simple command line
-arguments, perhaps using "--" to separate regular task names from
-argument values on the command line. The problem is that there was no
-easy way to associate positional arguments on the command line with
-different tasks. Suppose both tasks :a and :b expect a command line
-argument: does the first value go with :a? What if :b is run first?
-Should it then get the first command line argument.
-
-Rake 0.8.0 solves this problem by explicitly passing values directly
-to the tasks that need them. For example, if I had a release task
-that required a version number, I could say:
-
- rake release[0.8.2]
-
-And the string "0.8.2" will be passed to the :release task. Multiple
-arguments can be passed by separating them with a comma, for example:
-
- rake name[john,doe]
-
-Just a few words of caution. The rake task name and its arguments
-need to be a single command line argument to rake. This generally
-means no spaces. If spaces are needed, then the entire rake +
-argument string should be quoted. Something like this:
-
- rake "name[billy bob, smith]"
-
-(Quoting rules vary between operating systems and shells, so make sure
-you consult the proper docs for your OS/shell).
-
-=== Tasks that Expect Parameters
-
-Parameters are only given to tasks that are setup to expect them. In
-order to handle named parameters, the task declaration syntax for
-tasks has been extended slightly.
-
-For example, a task that needs a first name and last name might be
-declared as:
-
- task :name, :first_name, :last_name
-
-The first argument is still the name of the task (:name in this case).
-The next to argumements are the names of the parameters expected by
-:name (:first_name and :last_name in the example).
-
-To access the values of the paramters, the block defining the task
-behaviour can now accept a second parameter:
-
- task :name, :first_name, :last_name do |t, args|
- puts "First name is #{args.first_name}"
- puts "Last name is #{args.last_name}"
- end
-
-The first argument of the block "t" is always bound to the current
-task object. The second argument "args" is an open-struct like object
-that allows access to the task arguments. Extra command line
-arguments to a task are ignored. Missing command line arguments are
-given the nil value.
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Edwin Pratomo
-* Gavin Stark
-* Adam Q. Salter
-* Adam Majer
-* Emanuel Indermühle
-* Ittay Dror
-* Bheeshmar Redheendran (for spending an afternoon with me debugging
- windows issues)
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.8.3.rdoc b/doc/release_notes/rake-0.8.3.rdoc
deleted file mode 100644
index 97184c390..000000000
--- a/doc/release_notes/rake-0.8.3.rdoc
+++ /dev/null
@@ -1,112 +0,0 @@
-= Rake 0.8.3 Released
-
-Rake version 0.8.3 is a bug-fix release of rake.
-
-== Changes
-
-=== Bug Fixes in Version 0.8.3
-
-* Enhanced the system directory detection in windows. We now check
- HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch
- supplied by James Tucker). Rake no long aborts if it can't find the
- directory.
-
-* Added fix to handle ruby installations in directories with spaces in
- their name.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-
-== Task Argument Examples
-
-Prior to version 0.8.0, rake was only able to handle command line
-arguments of the form NAME=VALUE that were passed into Rake via the
-ENV hash. Many folks had asked for some kind of simple command line
-arguments, perhaps using "--" to separate regular task names from
-argument values on the command line. The problem is that there was no
-easy way to associate positional arguments on the command line with
-different tasks. Suppose both tasks :a and :b expect a command line
-argument: does the first value go with :a? What if :b is run first?
-Should it then get the first command line argument.
-
-Rake 0.8.0 solves this problem by explicitly passing values directly
-to the tasks that need them. For example, if I had a release task
-that required a version number, I could say:
-
- rake release[0.8.3]
-
-And the string "0.8.3" will be passed to the :release task. Multiple
-arguments can be passed by separating them with a comma, for example:
-
- rake name[john,doe]
-
-Just a few words of caution. The rake task name and its arguments
-need to be a single command line argument to rake. This generally
-means no spaces. If spaces are needed, then the entire rake +
-argument string should be quoted. Something like this:
-
- rake "name[billy bob, smith]"
-
-(Quoting rules vary between operating systems and shells, so make sure
-you consult the proper docs for your OS/shell).
-
-=== Tasks that Expect Parameters
-
-Parameters are only given to tasks that are setup to expect them. In
-order to handle named parameters, the task declaration syntax for
-tasks has been extended slightly.
-
-For example, a task that needs a first name and last name might be
-declared as:
-
- task :name, :first_name, :last_name
-
-The first argument is still the name of the task (:name in this case).
-The next to argumements are the names of the parameters expected by
-:name (:first_name and :last_name in the example).
-
-To access the values of the paramters, the block defining the task
-behaviour can now accept a second parameter:
-
- task :name, :first_name, :last_name do |t, args|
- puts "First name is #{args.first_name}"
- puts "Last name is #{args.last_name}"
- end
-
-The first argument of the block "t" is always bound to the current
-task object. The second argument "args" is an open-struct like object
-that allows access to the task arguments. Extra command line
-arguments to a task are ignored. Missing command line arguments are
-given the nil value.
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Edwin Pratomo
-* Gavin Stark
-* Adam Q. Salter
-* Adam Majer
-* Emanuel Indermühle
-* Ittay Dror
-* Bheeshmar Redheendran (for spending an afternoon with me debugging
- windows issues)
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.8.4.rdoc b/doc/release_notes/rake-0.8.4.rdoc
deleted file mode 100644
index d27de8b27..000000000
--- a/doc/release_notes/rake-0.8.4.rdoc
+++ /dev/null
@@ -1,147 +0,0 @@
-= Rake 0.8.4 Released
-
-Rake version 0.8.4 is a bug-fix release of rake.
-
-NOTE: The version of Rake that comes with Ruby 1.9 has diverged
- slightly from the core Rake code base. Rake 0.8.4 will work
- with Ruby 1.9, but is not a strict upgrade for the Rake that
- comes with Ruby 1.9. A (near) future release of Rake will unify
- those two codebases.
-
-== Letter Writing Campaign
-
-Thanks to Aaron Patterson (@tenderlove) and Eric Hodel (@drbrain) for
-their encouraging support in organizing a letter writing campaign to
-lobby for the "Warning Free" release of rake 0.8.4. A special callout
-goes to Jonathan D. Lord, Sr (Dr. Wingnut) whose postcard was the
-first to actually reach me. (see
-http://tenderlovemaking.com/2009/02/26/we-need-a-new-version-of-rake/
-for details)
-
-== Changes
-
-=== New Features / Enhancements in Version 0.8.4
-
-* Case is preserved on rakefile names. (patch from James
- M. Lawrence/quix)
-
-* Improved Rakefile case insensitivity testing (patch from Luis
- Lavena).
-
-* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH,
- APPDATA, USERPROFILE (patch from Luis Lavena)
-
-* MingGW is now recognized as a windows platform. (patch from Luis
- Lavena)
-
-=== Bug Fixes in Version 0.8.4
-
-* Removed reference to manage_gem to fix the warning produced by the
- gem package task.
-
-* Fixed stray ARGV option problem that was interfering with
- Test::Unit::Runner. (patch from Pivotal Labs)
-
-=== Infrastructure Improvements in Version 0.8.4
-
-* Numerous fixes to the windows test suite (patch from Luis Lavena).
-
-* Improved Rakefile case insensitivity testing (patch from Luis
- Lavena).
-
-* Better support for windows paths in the test task (patch from Simon
- Chiang/bahuvrihi)
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Task Argument Examples
-
-Prior to version 0.8.0, rake was only able to handle command line
-arguments of the form NAME=VALUE that were passed into Rake via the
-ENV hash. Many folks had asked for some kind of simple command line
-arguments, perhaps using "--" to separate regular task names from
-argument values on the command line. The problem is that there was no
-easy way to associate positional arguments on the command line with
-different tasks. Suppose both tasks :a and :b expect a command line
-argument: does the first value go with :a? What if :b is run first?
-Should it then get the first command line argument.
-
-Rake 0.8.0 solves this problem by explicitly passing values directly
-to the tasks that need them. For example, if I had a release task
-that required a version number, I could say:
-
- rake release[0.8.4]
-
-And the string "0.8.4" will be passed to the :release task. Multiple
-arguments can be passed by separating them with a comma, for example:
-
- rake name[john,doe]
-
-Just a few words of caution. The rake task name and its arguments
-need to be a single command line argument to rake. This generally
-means no spaces. If spaces are needed, then the entire rake +
-argument string should be quoted. Something like this:
-
- rake "name[billy bob, smith]"
-
-(Quoting rules vary between operating systems and shells, so make sure
-you consult the proper docs for your OS/shell).
-
-=== Tasks that Expect Parameters
-
-Parameters are only given to tasks that are setup to expect them. In
-order to handle named parameters, the task declaration syntax for
-tasks has been extended slightly.
-
-For example, a task that needs a first name and last name might be
-declared as:
-
- task :name, :first_name, :last_name
-
-The first argument is still the name of the task (:name in this case).
-The next to argumements are the names of the parameters expected by
-:name (:first_name and :last_name in the example).
-
-To access the values of the paramters, the block defining the task
-behaviour can now accept a second parameter:
-
- task :name, :first_name, :last_name do |t, args|
- puts "First name is #{args.first_name}"
- puts "Last name is #{args.last_name}"
- end
-
-The first argument of the block "t" is always bound to the current
-task object. The second argument "args" is an open-struct like object
-that allows access to the task arguments. Extra command line
-arguments to a task are ignored. Missing command line arguments are
-given the nil value.
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence/quix
-* Luis Lavena
-* Pivotal Labs
-* Simon Chiang/bahuvrihi
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.8.5.rdoc b/doc/release_notes/rake-0.8.5.rdoc
deleted file mode 100644
index 0ee2583dd..000000000
--- a/doc/release_notes/rake-0.8.5.rdoc
+++ /dev/null
@@ -1,53 +0,0 @@
-= Rake 0.8.5 Released
-
-Rake version 0.8.5 is a new release of Rake with greatly improved
-support for executing commands on Windows. The "sh" command now has
-the same semantics on Windows that it has on Unix based platforms.
-
-== Changes
-
-=== New Features / Enhancements in Version 0.8.5
-
-* Improved implementation of the Rake system command for Windows.
- (patch from James M. Lawrence/quix)
-
-* Support for Ruby 1.9's improved system command. (patch from James
- M. Lawrence/quix)
-
-* Rake now includes the configured extension when invoking an
- executable (Config::CONFIG['EXEEXT])
-
-=== Bug Fixes in Version 0.8.5
-
-* Environment variable keys are now correctly cased (it matters in
- some implementations).
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence/quix
-* Luis Lavena
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.8.6.rdoc b/doc/release_notes/rake-0.8.6.rdoc
deleted file mode 100644
index 476446077..000000000
--- a/doc/release_notes/rake-0.8.6.rdoc
+++ /dev/null
@@ -1,55 +0,0 @@
-= Rake 0.8.6 Released
-
-Rake version 0.8.5 introduced greatly improved support for executing
-commands on Windows. The "sh" command now has the same semantics on
-Windows that it has on Unix based platforms.
-
-Rake version 0.8.6 includes minor fixes the the RDoc generation.
-
-== Changes
-
-=== New Features / Enhancements in Version 0.8.5
-
-* Improved implementation of the Rake system command for Windows.
- (patch from James M. Lawrence/quix)
-
-* Support for Ruby 1.9's improved system command. (patch from James
- M. Lawrence/quix)
-
-* Rake now includes the configured extension when invoking an
- executable (Config::CONFIG['EXEEXT])
-
-=== Bug Fixes in Version 0.8.5
-
-* Environment variable keys are now correctly cased (it matters in
- some implementations).
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence/quix
-* Luis Lavena
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.8.7.rdoc b/doc/release_notes/rake-0.8.7.rdoc
deleted file mode 100644
index 884f4c659..000000000
--- a/doc/release_notes/rake-0.8.7.rdoc
+++ /dev/null
@@ -1,55 +0,0 @@
-= Rake 0.8.7 Released
-
-Rake version 0.8.5 introduced greatly improved support for executing
-commands on Windows. The "sh" command now has the same semantics on
-Windows that it has on Unix based platforms.
-
-Rake version 0.8.6 includes minor fixes the the RDoc generation.
-Rake version 0.8.7 includes a minor fix for JRuby running on windows.
-
-== Changes
-
-=== New Features / Enhancements in Version 0.8.5
-
-* Improved implementation of the Rake system command for Windows.
- (patch from James M. Lawrence/quix)
-
-* Support for Ruby 1.9's improved system command. (patch from James
- M. Lawrence/quix)
-
-* Rake now includes the configured extension when invoking an
- executable (Config::CONFIG['EXEEXT])
-
-=== Bug Fixes in Version 0.8.5
-
-* Environment variable keys are now correctly cased (it matters in
- some implementations).
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Charles Nutter
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.9.0.rdoc b/doc/release_notes/rake-0.9.0.rdoc
deleted file mode 100644
index 823483cc2..000000000
--- a/doc/release_notes/rake-0.9.0.rdoc
+++ /dev/null
@@ -1,112 +0,0 @@
-= Rake 0.9.0 Released
-
-Rake version 0.9.0 has a number of bug fixes and enhancments (see
-below for more details). Additionally, the internals have be slightly
-restructured and improved.
-
-== Changes
-
-=== New Features / Enhancements / Bug Fixes in Version 0.9.0
-
-* Rake now warns when the deprecated :needs syntax used (and suggests
- the proper syntax in the warning).
-
-* Moved Rake DSL commands to top level ruby object 'main'. Rake DSL
- commands are no longer private methods in Object. (Suggested by
- James M. Lawrence/quix)
-
-* Rake now uses case-insensitive comparisons to find the Rakefile on Windows.
- Based on patch by Roger Pack.
-
-* Rake now requires (instead of loads) files in the test task. Patch by Cezary
- Baginski.
-
-* Fixed typos. Patches by Sean Scot August Moon and R.T. Lechow.
-
-* Rake now prints the Rakefile directory only when it's different from the
- current directory. Patch by Alex Chaffee.
-
-* Improved rakefile_location discovery on Windows. Patch by James Tucker.
-
-* Rake now recognizes "Windows Server" as a windows system. Patch by Matthias
- Lüdtke
-
-* Rake::RDocTask is deprecated. Use RDoc::Task from RDoc 2.4.2+ (require
- 'rdoc/task')
-
-* Rake::GemPackageTask is deprecated. Use Gem::PackageTask (require
- 'rubygems/package_task')
-
-* Rake now outputs various messages to $stderr instead of $stdout.
-
-* Rake no longer emits warnings for Config. Patch by Santiago Pastorino.
-
-* Removed Rake's DSL methods from the top level scope. If you need to
- call 'task :xzy' in your code, include Rake::DSL into your class, or
- put the code in a Rake::DSL.environment do ... end block.
-
-* Split rake.rb into individual files.
-
-* Support for the --where (-W) flag for showing where a task is defined.
-
-* Fixed quoting in test task.
- (http://onestepback.org/redmine/issues/show/44,
- http://www.pivotaltracker.com/story/show/1223138)
-
-* Fixed the silent option parsing problem.
- (http://onestepback.org/redmine/issues/show/47)
-
-* Fixed :verbose=>false flag on sh and ruby commands.
-
-* Rake command line options may be given by default in a RAKEOPT
- environment variable.
-
-* Errors in Rake will now display the task invocation chain in effect
- at the time of the error.
-
-* Accepted change by warnickr to not expand test patterns in shell
- (allowing more files in the test suite).
-
-* Fixed that file tasks did not perform prereq lookups in scope
- (Redmine #57).
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence (quix)
-* Roger Pack
-* Cezary Baginski
-* Sean Scot August Moon
-* R.T. Lechow
-* Alex Chaffee
-* James Tucker
-* Matthias Lüdtke
-* Santiago Pastorino
-
-Also, bit thanks to Eric Hodel for assisting with getting this release
-out the door (where "assisting" includes, but is not by any means
-limited to, "pushing" me to get it done).
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.9.1.rdoc b/doc/release_notes/rake-0.9.1.rdoc
deleted file mode 100644
index 70be8b568..000000000
--- a/doc/release_notes/rake-0.9.1.rdoc
+++ /dev/null
@@ -1,52 +0,0 @@
-= Rake 0.9.1 Released
-
-Rake version 0.9.1 has a number of bug fixes and enhancments (see
-below for more details). Additionally, the internals have be slightly
-restructured and improved.
-
-== Changes
-
-Rake 0.9.1 adds back the global DSL methods, but with deprecation
-messages. This allows Rake 0.9.1 to be used with older rakefiles with
-warning messages.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence (quix)
-* Roger Pack
-* Cezary Baginski
-* Sean Scot August Moon
-* R.T. Lechow
-* Alex Chaffee
-* James Tucker
-* Matthias Lüdtke
-* Santiago Pastorino
-
-Also, bit thanks to Eric Hodel for assisting with getting this release
-out the door (where "assisting" includes, but is not by any means
-limited to, "pushing" me to get it done).
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.9.2.2.rdoc b/doc/release_notes/rake-0.9.2.2.rdoc
deleted file mode 100644
index d804aba81..000000000
--- a/doc/release_notes/rake-0.9.2.2.rdoc
+++ /dev/null
@@ -1,55 +0,0 @@
-= Rake 0.9.3 Released
-
-Rake version 0.9.3 is mainly bug fixes.
-
-== Changes
-
-* The rake test loader now removes arguments it has processed. Issue #51
-* Rake::TaskArguments now responds to #values_at
-* RakeFileUtils.verbose_flag = nil silences output the same as 0.8.7
-* Rake tests are now directory-independent
-* Rake tests are no longer require flexmock
-* Commands constant is no longer polluting top level namespace.
-* Show only the interesting portion of the backtrace by default (James M. Lawrence).
-* Added --reduce-compat option to remove backward compatible DSL hacks (James M. Lawrence).
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence (quix)
-* Roger Pack
-* Cezary Baginski
-* Sean Scot August Moon
-* R.T. Lechow
-* Alex Chaffee
-* James Tucker
-* Matthias Lüdtke
-* Santiago Pastorino
-
-Also, bit thanks to Eric Hodel for assisting with getting this release
-out the door (where "assisting" includes, but is not by any means
-limited to, "pushing" me to get it done).
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.9.2.rdoc b/doc/release_notes/rake-0.9.2.rdoc
deleted file mode 100644
index 2314193f5..000000000
--- a/doc/release_notes/rake-0.9.2.rdoc
+++ /dev/null
@@ -1,49 +0,0 @@
-= Rake 0.9.2 Released
-
-Rake version 0.9.2 has a few small fixes. See below for details.
-
-== Changes
-
-* Support for Ruby 1.8.6 was fixed.
-* Global DSL warnings now honor --no-deprecate
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://rake.rubyforge.org/
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* James M. Lawrence (quix)
-* Roger Pack
-* Cezary Baginski
-* Sean Scot August Moon
-* R.T. Lechow
-* Alex Chaffee
-* James Tucker
-* Matthias Lüdtke
-* Santiago Pastorino
-
-Also, bit thanks to Eric Hodel for assisting with getting this release
-out the door (where "assisting" includes, but is not by any means
-limited to, "pushing" me to get it done).
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.9.3.rdoc b/doc/release_notes/rake-0.9.3.rdoc
deleted file mode 100644
index 4476b4f18..000000000
--- a/doc/release_notes/rake-0.9.3.rdoc
+++ /dev/null
@@ -1,102 +0,0 @@
-= Rake 0.9.3 Released
-
-Rake version 0.9.3 contains some new, backwards compatible features and
-a number of bug fixes.
-
-== Changes
-
-=== New Features
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.9.4.rdoc b/doc/release_notes/rake-0.9.4.rdoc
deleted file mode 100644
index e5d45b46a..000000000
--- a/doc/release_notes/rake-0.9.4.rdoc
+++ /dev/null
@@ -1,110 +0,0 @@
-= Rake 0.9.4 Released
-
-Rake version 0.9.4 contains a number of bug fixes.
-
-== Changes
-
-=== New Features (in 0.9.3)
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes (0.9.3)
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-=== Bug Fixes (0.9.4)
-
-* Exit status with failing tests is not correctly set to non-zero.
-
-* Simplified syntax for phony task (for older versions of RDoc).
-
-* Stand alone FileList usage gets glob function (without loading in
- extra dependencies)
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.9.5.rdoc b/doc/release_notes/rake-0.9.5.rdoc
deleted file mode 100644
index 88e2d7cf3..000000000
--- a/doc/release_notes/rake-0.9.5.rdoc
+++ /dev/null
@@ -1,114 +0,0 @@
-= Rake 0.9.5 Released
-
-Rake version 0.9.5 contains a number of bug fixes.
-
-== Changes
-
-=== New Features (in 0.9.3)
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes (0.9.3)
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-=== Bug Fixes (0.9.4)
-
-* Exit status with failing tests is not correctly set to non-zero.
-
-* Simplified syntax for phony task (for older versions of RDoc).
-
-* Stand alone FileList usage gets glob function (without loading in
- extra dependencies)
-
-=== Bug Fixes (0.9.5)
-
-* --trace and --backtrace no longer swallow following task names.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-0.9.6.rdoc b/doc/release_notes/rake-0.9.6.rdoc
deleted file mode 100644
index e1c5f88ca..000000000
--- a/doc/release_notes/rake-0.9.6.rdoc
+++ /dev/null
@@ -1,127 +0,0 @@
-= Rake 0.9.6 Released
-
-Rake version 0.9.6 contains a number of fixes mainly for merging
-Rake into the Ruby source tree and fixing tests.
-
-== Changes
-
-=== New Features (in 0.9.3)
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes (0.9.3)
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-=== Bug Fixes (0.9.4)
-
-* Exit status with failing tests is not correctly set to non-zero.
-
-* Simplified syntax for phony task (for older versions of RDoc).
-
-* Stand alone FileList usage gets glob function (without loading in
- extra dependencies)
-
-=== Bug Fixes (0.9.5)
-
-* --trace and --backtrace no longer swallow following task names.
-
-=== Bug Fixes (0.9.6)
-
-* Better trace output when using a multi-threaded Rakefile.
-* Arg parsing is now consistent for tasks and multitasks.
-* Skip exit code test in versions of Ruby that don't support it well.
-
-Changes for better integration with the Ruby source tree:
-
-* Fix version literal for Ruby source tree build.
-* Better loading of libraries for testing in Ruby build.
-* Use the ruby version provided by Ruby's tests.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a alot of these changes. The
-following people either contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-10.0.0.rdoc b/doc/release_notes/rake-10.0.0.rdoc
deleted file mode 100644
index 7bf68fb73..000000000
--- a/doc/release_notes/rake-10.0.0.rdoc
+++ /dev/null
@@ -1,178 +0,0 @@
-= Rake 10.0 Released
-
- "Jim, when will Rake reach version 1.0?"
-
-Over the past several years I've been asked that question at
-conferences, panels and over twitter. Due to historical reasons (or
-maybe just plain laziness) Rake has (incorrectly) been treating the
-second digit of the version as the major release number. So in my head
-Rake was already at version 9.
-
-Well, it's time to fix things. This next version of Rake drops old,
-crufty, backwards compatibility hacks such as top level constants, DSL
-methods defined in Object and numerous other features that are just no
-longer desired. It's also time to drop the leading zero from the
-version number as well and call this new version of rake what it
-really is: Version 10.
-
-So, welcome to Rake 10.0!
-
-Rake 10 is actually feature identical to the latest version of Rake 9
-(that would be the version spelled 0.9.3), *except* that Rake 10 drops
-all the sundry deprecated features that have accumulated over the years.
-
-If your Rakefile is up to date and current with all the new features
-of Rake 10, you are ready to go. If your Rakefile still uses a few
-deprecated feeatures, feel free to use Rake 9 (0.9.3) with the same
-feature set. Just be aware that future features will be in Rake 10
-family line.
-
-== Changes in 10.0
-
-As mentioned above, there are no new features in Rake 10. However,
-there are a number of features missing:
-
-* Classic namespaces are now gone. Rake is no longer able to reflect
- the options settings in the global variables ($rakefile, $show_tasks,
- $show_prereqs, $trace, $dryrun and $silent). The
- --classic-namespace option is no longer supported.
-
-* Global constants are no longer supported. This includes
- Task, FileTask, FileCreationTask and
- RakeApp). The constant missing hook to warn about using
- global rake constants has been removed.
-
-* The Rake DSL methods (task, file, directory, etc) are in their own
- module (Rake::DSL). The stub versions of these methods (that printed
- warnings) in Object have been removed. However, the DSL methods are
- added to the top-level main object. Since main is
- not in the inheritance tree, the presence of the DSL methods in main
- should be low impact on other libraries.
-
- If you want to use the Rake DSL commands from your own code, just
- include Rake::DSL into your own classes and modules.
-
-* The deprecated syntax for task arguments (the one using
- :needs) has been removed.
-
-* The --reduce-compat flag has been removed (it's not needed
- anymore).
-
-* The deprecated rake/sys.rb library has been removed.
-
-* The deprecated rake/rdoctask.rb library has been removed.
- RDoc supplies its own rake task now.
-
-* The deprecated rake/gempackagetask.rb library has been
- removed. Gem supplies its own package task now.
-
-There is one small behavioral change:
-
-* Non-file tasks now always report the current time as their time
- stamp. This is different from the previous behavior where non-file
- tasks reported current time only if there were no prerequisites, and
- the max prerequisite timestamp otherwise. This lead to inconsistent
- and surprising behavior when adding prerequisites to tasks that in
- turn were prequisites to file tasks. The new behavior is more
- consistent and predictable.
-
-== Changes (from 0.9.3)
-
-Since Rake 10 includes the changes from the last version of Rake 9,
-we'll repeat the changes for version 0.9.3 here.
-
-=== New Features
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a lot of these changes. The
-following people contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-10.0.1.rdoc b/doc/release_notes/rake-10.0.1.rdoc
deleted file mode 100644
index 75aa926aa..000000000
--- a/doc/release_notes/rake-10.0.1.rdoc
+++ /dev/null
@@ -1,187 +0,0 @@
-= Rake 10.0.1 Released
-
- "Jim, when will Rake reach version 1.0?"
-
-Over the past several years I've been asked that question at
-conferences, panels and over twitter. Due to historical reasons (or
-maybe just plain laziness) Rake has (incorrectly) been treating the
-second digit of the version as the major release number. So in my head
-Rake was already at version 9.
-
-Well, it's time to fix things. This next version of Rake drops old,
-crufty, backwards compatibility hacks such as top level constants, DSL
-methods defined in Object and numerous other features that are just no
-longer desired. It's also time to drop the leading zero from the
-version number as well and call this new version of rake what it
-really is: Version 10.
-
-So, welcome to Rake 10.0!
-
-Rake 10 is actually feature identical to the latest version of Rake 9
-(that would be the version spelled 0.9.3), *except* that Rake 10 drops
-all the sundry deprecated features that have accumulated over the years.
-
-If your Rakefile is up to date and current with all the new features
-of Rake 10, you are ready to go. If your Rakefile still uses a few
-deprecated feeatures, feel free to use Rake 9 (0.9.3) with the same
-feature set. Just be aware that future features will be in Rake 10
-family line.
-
-== Changes in 10.0
-
-As mentioned above, there are no new features in Rake 10. However,
-there are a number of features missing:
-
-* Classic namespaces are now gone. Rake is no longer able to reflect
- the options settings in the global variables ($rakefile, $show_tasks,
- $show_prereqs, $trace, $dryrun and $silent). The
- --classic-namespace option is no longer supported.
-
-* Global constants are no longer supported. This includes
- Task, FileTask, FileCreationTask and
- RakeApp). The constant missing hook to warn about using
- global rake constants has been removed.
-
-* The Rake DSL methods (task, file, directory, etc) are in their own
- module (Rake::DSL). The stub versions of these methods (that printed
- warnings) in Object have been removed. However, the DSL methods are
- added to the top-level main object. Since main is
- not in the inheritance tree, the presence of the DSL methods in main
- should be low impact on other libraries.
-
- If you want to use the Rake DSL commands from your own code, just
- include Rake::DSL into your own classes and modules.
-
-* The deprecated syntax for task arguments (the one using
- :needs) has been removed.
-
-* The --reduce-compat flag has been removed (it's not needed
- anymore).
-
-* The deprecated rake/sys.rb library has been removed.
-
-* The deprecated rake/rdoctask.rb library has been removed.
- RDoc supplies its own rake task now.
-
-* The deprecated rake/gempackagetask.rb library has been
- removed. Gem supplies its own package task now.
-
-There is one small behavioral change:
-
-* Non-file tasks now always report the current time as their time
- stamp. This is different from the previous behavior where non-file
- tasks reported current time only if there were no prerequisites, and
- the max prerequisite timestamp otherwise. This lead to inconsistent
- and surprising behavior when adding prerequisites to tasks that in
- turn were prequisites to file tasks. The new behavior is more
- consistent and predictable.
-
-== Changes (from 0.9.3 & 0.9.4)
-
-Since Rake 10 includes the changes from the last version of Rake 9,
-we'll repeat the changes for version 0.9.3 here.
-
-=== New Features (in 0.9.3)
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes (in 0.9.3)
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-=== Bug Fixes (in 0.9.4)
-
-* Exit status with failing tests is not correctly set to non-zero.
-
-* Simplified syntax for phony task (for older versions of RDoc).
-
-* Stand alone FileList usage gets glob function (without loading in
- extra dependencies)
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a lot of these changes. The
-following people contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-10.0.2.rdoc b/doc/release_notes/rake-10.0.2.rdoc
deleted file mode 100644
index b9ef26787..000000000
--- a/doc/release_notes/rake-10.0.2.rdoc
+++ /dev/null
@@ -1,191 +0,0 @@
-= Rake 10.0.2 Released
-
- "Jim, when will Rake reach version 1.0?"
-
-Over the past several years I've been asked that question at
-conferences, panels and over twitter. Due to historical reasons (or
-maybe just plain laziness) Rake has (incorrectly) been treating the
-second digit of the version as the major release number. So in my head
-Rake was already at version 9.
-
-Well, it's time to fix things. This next version of Rake drops old,
-crufty, backwards compatibility hacks such as top level constants, DSL
-methods defined in Object and numerous other features that are just no
-longer desired. It's also time to drop the leading zero from the
-version number as well and call this new version of rake what it
-really is: Version 10.
-
-So, welcome to Rake 10.0!
-
-Rake 10 is actually feature identical to the latest version of Rake 9
-(that would be the version spelled 0.9.3), *except* that Rake 10 drops
-all the sundry deprecated features that have accumulated over the years.
-
-If your Rakefile is up to date and current with all the new features
-of Rake 10, you are ready to go. If your Rakefile still uses a few
-deprecated feeatures, feel free to use Rake 9 (0.9.3) with the same
-feature set. Just be aware that future features will be in Rake 10
-family line.
-
-== Changes in Version 10
-
-As mentioned above, there are no new features in Rake 10. However,
-there are a number of features missing:
-
-* Classic namespaces are now gone. Rake is no longer able to reflect
- the options settings in the global variables ($rakefile, $show_tasks,
- $show_prereqs, $trace, $dryrun and $silent). The
- --classic-namespace option is no longer supported.
-
-* Global constants are no longer supported. This includes
- Task, FileTask, FileCreationTask and
- RakeApp). The constant missing hook to warn about using
- global rake constants has been removed.
-
-* The Rake DSL methods (task, file, directory, etc) are in their own
- module (Rake::DSL). The stub versions of these methods (that printed
- warnings) in Object have been removed. However, the DSL methods are
- added to the top-level main object. Since main is
- not in the inheritance tree, the presence of the DSL methods in main
- should be low impact on other libraries.
-
- If you want to use the Rake DSL commands from your own code, just
- include Rake::DSL into your own classes and modules.
-
-* The deprecated syntax for task arguments (the one using
- :needs) has been removed.
-
-* The --reduce-compat flag has been removed (it's not needed
- anymore).
-
-* The deprecated rake/sys.rb library has been removed.
-
-* The deprecated rake/rdoctask.rb library has been removed.
- RDoc supplies its own rake task now.
-
-* The deprecated rake/gempackagetask.rb library has been
- removed. Gem supplies its own package task now.
-
-There is one small behavioral change:
-
-* Non-file tasks now always report the current time as their time
- stamp. This is different from the previous behavior where non-file
- tasks reported current time only if there were no prerequisites, and
- the max prerequisite timestamp otherwise. This lead to inconsistent
- and surprising behavior when adding prerequisites to tasks that in
- turn were prequisites to file tasks. The new behavior is more
- consistent and predictable.
-
-== Changes (from 0.9.3, 0.9.4, 0.9.5)
-
-Since Rake 10 includes the changes from the last version of Rake 9,
-we'll repeat the changes for versions 0.9.3 through 0.9.5 here.
-
-=== New Features (in 0.9.3)
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes (in 0.9.3)
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-=== Bug Fixes (in 0.9.4)
-
-* Exit status with failing tests is not correctly set to non-zero.
-
-* Simplified syntax for phony task (for older versions of RDoc).
-
-* Stand alone FileList usage gets glob function (without loading in
- extra dependencies)
-
-=== Bug Fixes (in 0.9.5)
-
-* --trace and --backtrace no longer swallow following task names.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a lot of these changes. The
-following people contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-10.0.3.rdoc b/doc/release_notes/rake-10.0.3.rdoc
deleted file mode 100644
index dbc84c1c1..000000000
--- a/doc/release_notes/rake-10.0.3.rdoc
+++ /dev/null
@@ -1,191 +0,0 @@
-= Rake 10.0.3 Released
-
- "Jim, when will Rake reach version 1.0?"
-
-Over the past several years I've been asked that question at
-conferences, panels and over twitter. Due to historical reasons (or
-maybe just plain laziness) Rake has (incorrectly) been treating the
-second digit of the version as the major release number. So in my head
-Rake was already at version 9.
-
-Well, it's time to fix things. This next version of Rake drops old,
-crufty, backwards compatibility hacks such as top level constants, DSL
-methods defined in Object and numerous other features that are just no
-longer desired. It's also time to drop the leading zero from the
-version number as well and call this new version of rake what it
-really is: Version 10.
-
-So, welcome to Rake 10.0!
-
-Rake 10 is actually feature identical to the latest version of Rake 9
-(that would be the version spelled 0.9.3), *except* that Rake 10 drops
-all the sundry deprecated features that have accumulated over the years.
-
-If your Rakefile is up to date and current with all the new features
-of Rake 10, you are ready to go. If your Rakefile still uses a few
-deprecated feeatures, feel free to use Rake 9 (0.9.3) with the same
-feature set. Just be aware that future features will be in Rake 10
-family line.
-
-== Changes in Version 10
-
-As mentioned above, there are no new features in Rake 10. However,
-there are a number of features missing:
-
-* Classic namespaces are now gone. Rake is no longer able to reflect
- the options settings in the global variables ($rakefile, $show_tasks,
- $show_prereqs, $trace, $dryrun and $silent). The
- --classic-namespace option is no longer supported.
-
-* Global constants are no longer supported. This includes
- Task, FileTask, FileCreationTask and
- RakeApp). The constant missing hook to warn about using
- global rake constants has been removed.
-
-* The Rake DSL methods (task, file, directory, etc) are in their own
- module (Rake::DSL). The stub versions of these methods (that printed
- warnings) in Object have been removed. However, the DSL methods are
- added to the top-level main object. Since main is
- not in the inheritance tree, the presence of the DSL methods in main
- should be low impact on other libraries.
-
- If you want to use the Rake DSL commands from your own code, just
- include Rake::DSL into your own classes and modules.
-
-* The deprecated syntax for task arguments (the one using
- :needs) has been removed.
-
-* The --reduce-compat flag has been removed (it's not needed
- anymore).
-
-* The deprecated rake/sys.rb library has been removed.
-
-* The deprecated rake/rdoctask.rb library has been removed.
- RDoc supplies its own rake task now.
-
-* The deprecated rake/gempackagetask.rb library has been
- removed. Gem supplies its own package task now.
-
-There is one small behavioral change:
-
-* Non-file tasks now always report the current time as their time
- stamp. This is different from the previous behavior where non-file
- tasks reported current time only if there were no prerequisites, and
- the max prerequisite timestamp otherwise. This lead to inconsistent
- and surprising behavior when adding prerequisites to tasks that in
- turn were prequisites to file tasks. The new behavior is more
- consistent and predictable.
-
-== Changes (from 0.9.3, 0.9.4, 0.9.5)
-
-Since Rake 10 includes the changes from the last version of Rake 9,
-we'll repeat the changes for versions 0.9.3 through 0.9.5 here.
-
-=== New Features (in 0.9.3)
-
-* Multitask tasks now use a thread pool. Use -j to limit the number of
- available threads.
-
-* Use -m to turn regular tasks into multitasks (use at your own risk).
-
-* You can now do "Rake.add_rakelib 'dir'" in your Rakefile to
- programatically add rake task libraries.
-
-* You can specific backtrace suppression patterns (see
- --supress-backtrace)
-
-* Directory tasks can now take prerequisites and actions
-
-* Use --backtrace to request a full backtrace without the task trace.
-
-* You can say "--backtrace=stdout" and "--trace=stdout" to route trace
- output to standard output rather than standard error.
-
-* Optional 'phony' target (enable with 'require 'rake/phony'") for
- special purpose builds.
-
-* Task#clear now clears task comments as well as actions and
- prerequisites. Task#clear_comment will specifically target comments.
-
-* The --all option will force -T and -D to consider all the tasks,
- with and without descriptions.
-
-=== Bug Fixes (in 0.9.3)
-
-* Semi-colons in windows rakefile paths now work.
-
-* Improved Control-C support when invoking multiple test suites.
-
-* egrep method now reads files in text mode (better support for
- Windows)
-
-* Better deprecation line number reporting.
-
-* The -W option now works with all tasks, whether they have a
- description or not.
-
-* File globs in rake should not be sorted alphabetically, independent
- of file system and platform.
-
-* Numerous internal improvements.
-
-* Documentation typos and fixes.
-
-=== Bug Fixes (in 0.9.4)
-
-* Exit status with failing tests is not correctly set to non-zero.
-
-* Simplified syntax for phony task (for older versions of RDoc).
-
-* Stand alone FileList usage gets glob function (without loading in
- extra dependencies)
-
-=== Bug Fixes (in 0.9.5)
-
-* --trace and --backtrace no longer swallow following task names.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more traditional places:
-
-Home Page:: http://github.com/jimweirich/rake
-Download:: http://rubyforge.org/project/showfiles.php?group_id=50
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a lot of these changes. The
-following people contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Aaron Patterson
-* Dylan Smith
-* Jo Liss
-* Jonas Pfenniger
-* Kazuki Tsujimoto
-* Michael Bishop
-* Michael Elufimov
-* NAKAMURA Usaku
-* Ryan Davis
-* Sam Grönblom
-* Sam Phippen
-* Sergio Wong
-* Tay Ray Chuan
-* grosser
-* quix
-
-Also, many thanks to Eric Hodel for assisting with getting this release
-out the door.
-
--- Jim Weirich
diff --git a/doc/release_notes/rake-10.1.0.rdoc b/doc/release_notes/rake-10.1.0.rdoc
deleted file mode 100644
index 3c3d78a4f..000000000
--- a/doc/release_notes/rake-10.1.0.rdoc
+++ /dev/null
@@ -1,61 +0,0 @@
-= Rake 10.1.0 Released
-
-== Changes in Version 10.1
-
-Here are new features in this version of Rake:
-
-* Add support for variable length task argument lists. If more actual
- arguments are supplied than named arguments, then the extra
- arguments values will be in args.extras.
-
-* Application name is not displayed in the help banner. (Previously
- "rake" was hardcoded, now rake-based applications can display their
- own names).
-
-=== Bug Fixes (in 10.1)
-
-Bug fixes include:
-
-* Fix backtrace suppression issues.
-
-* Rules now explicit get task arguments passed to them.
-
-* Rename FileList#exclude? to FileList#exclude_from_list? to avoid
- conflict with new Rails method.
-
-* Clean / Clobber tasks now report failure to remove files.
-
-* Plus heaps of internal code cleanup.
-
-== What is Rake
-
-Rake is a build tool similar to the make program in many ways. But
-instead of cryptic make recipes, Rake uses standard Ruby code to
-declare tasks and dependencies. You have the full power of a modern
-scripting language built right into your build tool.
-
-== Availability
-
-The easiest way to get and install rake is via RubyGems ...
-
- gem install rake (you may need root/admin privileges)
-
-Otherwise, you can get it from the more from GitHub:
-
-GitHub:: git://github.com/jimweirich/rake.git
-
-== Thanks
-
-As usual, it was input from users that drove a lot of these changes.
-The following people contributed patches, made suggestions or made
-otherwise helpful comments. Thanks to ...
-
-* Michael Nikitochkin (general code cleanup)
-* Vipul A M (general code cleanup)
-* Dennis Bell (variable length task argument lists)
-* Jacob Swanner (rules arguments)
-* Rafael Rosa Fu (documentation typo)
-* Stuart Nelson (install.rb fixes)
-* Lee Hambley (application name in help banner)
-
--- Jim Weirich
diff --git a/exe/rake b/exe/rake
new file mode 100755
index 000000000..a00975f30
--- /dev/null
+++ b/exe/rake
@@ -0,0 +1,27 @@
+#!/usr/bin/env ruby
+
+#--
+# Copyright (c) 2003, 2004, 2005, 2006, 2007 Jim Weirich
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+#++
+
+require "rake"
+
+Rake.application.run
diff --git a/install.rb b/install.rb
deleted file mode 100644
index 45946c198..000000000
--- a/install.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-require 'rbconfig'
-require 'find'
-require 'fileutils'
-require 'tempfile'
-
-include RbConfig
-
-$ruby = CONFIG['ruby_install_name']
-
-##
-# Install a binary file. We patch in on the way through to
-# insert a #! line. If this is a Unix install, we name
-# the command (for example) 'rake' and let the shebang line
-# handle running it. Under windows, we add a '.rb' extension
-# and let file associations do their stuff
-#
-
-def installBIN(from, opfile)
-
- tmp_file = Tempfile.new("_tmp")
-
- File.open(from) do |ip|
- File.open(tmp_file, "w") do |op|
- ruby = File.join($realbindir, $ruby)
- op.puts "#!#{ruby} -w"
- op.write ip.read
- end
- end
-
- opfile += ".rb" if CONFIG["target_os"] =~ /mswin/i
- FileUtils.install(tmp_file, File.join($bindir, opfile),
- {:mode => 0755, :verbose => true})
- tmp_file.unlink
-end
-
-$sitedir = CONFIG["sitelibdir"]
-unless $sitedir
- version = CONFIG["MAJOR"]+"."+CONFIG["MINOR"]
- $libdir = File.join(CONFIG["libdir"], "ruby", version)
- $sitedir = $:.find {|x| x =~ /site_ruby/}
- if !$sitedir
- $sitedir = File.join($libdir, "site_ruby")
- elsif $sitedir !~ Regexp.quote(version)
- $sitedir = File.join($sitedir, version)
- end
-end
-
-$bindir = CONFIG["bindir"]
-
-$realbindir = $bindir
-
-if (destdir = ENV['DESTDIR'])
- $bindir = destdir + $bindir
- $sitedir = destdir + $sitedir
-
- FileUtils.mkdir_p($bindir)
- FileUtils.mkdir_p($sitedir)
-end
-
-rake_dest = File.join($sitedir, "rake")
-FileUtils.mkdir_p(rake_dest, {:verbose => true})
-File.chmod(0755, rake_dest)
-
-# The library files
-
-files = Dir.chdir('lib') { Dir['**/*.rb'].sort }
-
-for fn in files
- fn_dir = File.dirname(fn)
- target_dir = File.join($sitedir, fn_dir)
- if ! File.exist?(target_dir)
- FileUtils.mkdir_p(target_dir)
- end
- FileUtils.install(File.join('lib', fn), File.join($sitedir, fn),
- {:mode => 0644, :verbose => true})
-end
-
-# and the executable
-
-installBIN("bin/rake", "rake")
diff --git a/lib/rake.rb b/lib/rake.rb
index 531cfc82b..0dfd05315 100644
--- a/lib/rake.rb
+++ b/lib/rake.rb
@@ -1,5 +1,5 @@
+# frozen_string_literal: true
#--
-
# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com)
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -21,47 +21,45 @@
# IN THE SOFTWARE.
#++
-require 'rake/version'
+module Rake; end
-# :stopdoc:
-RAKEVERSION = Rake::VERSION
-# :startdoc:
+require "rake/version"
-require 'rbconfig'
-require 'fileutils'
-require 'singleton'
-require 'monitor'
-require 'optparse'
-require 'ostruct'
+require "rbconfig"
+require "fileutils"
+require "singleton"
+require "monitor"
+require "optparse"
+require "ostruct"
-require 'rake/ext/module'
-require 'rake/ext/string'
-require 'rake/ext/time'
+require "rake/ext/string"
-require 'rake/win32'
+require "rake/win32"
-require 'rake/linked_list'
-require 'rake/scope'
-require 'rake/task_argument_error'
-require 'rake/rule_recursion_overflow_error'
-require 'rake/rake_module'
-require 'rake/trace_output'
-require 'rake/pseudo_status'
-require 'rake/task_arguments'
-require 'rake/invocation_chain'
-require 'rake/task'
-require 'rake/file_task'
-require 'rake/file_creation_task'
-require 'rake/multi_task'
-require 'rake/dsl_definition'
-require 'rake/file_utils_ext'
-require 'rake/file_list'
-require 'rake/default_loader'
-require 'rake/early_time'
-require 'rake/name_space'
-require 'rake/task_manager'
-require 'rake/application'
-require 'rake/backtrace'
+require "rake/linked_list"
+require "rake/cpu_counter"
+require "rake/scope"
+require "rake/task_argument_error"
+require "rake/rule_recursion_overflow_error"
+require "rake/rake_module"
+require "rake/trace_output"
+require "rake/pseudo_status"
+require "rake/task_arguments"
+require "rake/invocation_chain"
+require "rake/task"
+require "rake/file_task"
+require "rake/file_creation_task"
+require "rake/multi_task"
+require "rake/dsl_definition"
+require "rake/file_utils_ext"
+require "rake/file_list"
+require "rake/default_loader"
+require "rake/early_time"
+require "rake/late_time"
+require "rake/name_space"
+require "rake/task_manager"
+require "rake/application"
+require "rake/backtrace"
$trace = false
diff --git a/lib/rake/alt_system.rb b/lib/rake/alt_system.rb
deleted file mode 100644
index a42597bf0..000000000
--- a/lib/rake/alt_system.rb
+++ /dev/null
@@ -1,108 +0,0 @@
-#
-# Copyright (c) 2008 James M. Lawrence
-#
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this software and associated documentation files
-# (the "Software"), to deal in the Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, sublicense, and/or sell copies of the Software,
-# and to permit persons to whom the Software is furnished to do so,
-# subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-#
-
-require 'rbconfig'
-
-#
-# Alternate implementations of system() and backticks `` on Windows
-# for ruby-1.8 and earlier.
-#
-module Rake::AltSystem
- WINDOWS = RbConfig::CONFIG["host_os"] =~
- %r!(msdos|mswin|djgpp|mingw|[Ww]indows)!
-
- class << self
- def define_module_function(name, &block)
- define_method(name, &block)
- module_function(name)
- end
- end
-
- if WINDOWS && RUBY_VERSION < "1.9.0"
- RUNNABLE_EXTS = %w[com exe bat cmd]
- RUNNABLE_PATTERN = %r!\.(#{RUNNABLE_EXTS.join('|')})\Z!i
-
- define_module_function :kernel_system, &Kernel.method(:system)
- define_module_function :kernel_backticks, &Kernel.method(:'`')
-
- module_function
-
- def repair_command(cmd)
- "call " + (
- if cmd =~ %r!\A\s*\".*?\"!
- # already quoted
- cmd
- elsif match = cmd.match(%r!\A\s*(\S+)!)
- if match[1] =~ %r!/!
- # avoid x/y.bat interpretation as x with option /y
- %Q!"#{match[1]}"! + match.post_match
- else
- # a shell command will fail if quoted
- cmd
- end
- else
- # empty or whitespace
- cmd
- end
- )
- end
-
- def find_runnable(file)
- if file =~ RUNNABLE_PATTERN
- file
- else
- RUNNABLE_EXTS.each { |ext|
- test = "#{file}.#{ext}"
- return test if File.exist?(test)
- }
- nil
- end
- end
-
- def system(cmd, *args)
- repaired = (
- if args.empty?
- [repair_command(cmd)]
- elsif runnable = find_runnable(cmd)
- [File.expand_path(runnable), *args]
- else
- # non-existent file
- [cmd, *args]
- end
- )
- kernel_system(*repaired)
- end
-
- def backticks(cmd)
- kernel_backticks(repair_command(cmd))
- end
-
- define_module_function :'`', &method(:backticks)
- else
- # Non-Windows or ruby-1.9+: same as Kernel versions
- define_module_function :system, &Kernel.method(:system)
- define_module_function :backticks, &Kernel.method(:'`')
- define_module_function :'`', &Kernel.method(:'`')
- end
-end
diff --git a/lib/rake/application.rb b/lib/rake/application.rb
index b76244b7a..9ac9b2130 100644
--- a/lib/rake/application.rb
+++ b/lib/rake/application.rb
@@ -1,21 +1,21 @@
-require 'shellwords'
-require 'optparse'
+# frozen_string_literal: true
+require "optparse"
-require 'rake/task_manager'
-require 'rake/file_list'
-require 'rake/thread_pool'
-require 'rake/thread_history_display'
-require 'rake/trace_output'
-require 'rake/win32'
+require "rake/task_manager"
+require "rake/file_list"
+require "rake/thread_pool"
+require "rake/thread_history_display"
+require "rake/trace_output"
+require "rake/win32"
module Rake
CommandLineOptionError = Class.new(StandardError)
- ######################################################################
+ ##
# Rake main application object. When invoking +rake+ from the
# command line, a Rake::Application object is created and run.
- #
+
class Application
include TaskManager
include TraceOutput
@@ -35,17 +35,20 @@ class Application
# List of the top level task names (task names from the command line).
attr_reader :top_level_tasks
+ # Override the detected TTY output state (mostly for testing)
+ attr_writer :tty_output
+
DEFAULT_RAKEFILES = [
- 'rakefile',
- 'Rakefile',
- 'rakefile.rb',
- 'Rakefile.rb'
+ "rakefile",
+ "Rakefile",
+ "rakefile.rb",
+ "Rakefile.rb"
].freeze
# Initialize a Rake::Application object.
def initialize
super
- @name = 'rake'
+ @name = "rake"
@rakefiles = DEFAULT_RAKEFILES.dup
@rakefile = nil
@pending_imports = []
@@ -54,11 +57,13 @@ def initialize
@default_loader = Rake::DefaultLoader.new
@original_dir = Dir.pwd
@top_level_tasks = []
- add_loader('rb', DefaultLoader.new)
- add_loader('rf', DefaultLoader.new)
- add_loader('rake', DefaultLoader.new)
+ add_loader("rb", DefaultLoader.new)
+ add_loader("rf", DefaultLoader.new)
+ add_loader("rake", DefaultLoader.new)
@tty_output = STDOUT.tty?
- @terminal_columns = ENV['RAKE_COLUMNS'].to_i
+ @terminal_columns = ENV["RAKE_COLUMNS"].to_i
+
+ set_default_options
end
# Run the Rake application. The run method performs the following
@@ -71,20 +76,25 @@ def initialize
# If you wish to build a custom rake command, you should call
# +init+ on your application. Then define any tasks. Finally,
# call +top_level+ to run your top level tasks.
- def run
+ def run(argv = ARGV)
standard_exception_handling do
- init
+ init "rake", argv
load_rakefile
top_level
end
end
# Initialize the command line parameters and app name.
- def init(app_name='rake')
+ def init(app_name="rake", argv = ARGV)
standard_exception_handling do
@name = app_name
- handle_options
- collect_tasks
+ begin
+ args = handle_options argv
+ rescue ArgumentError
+ # Backward compatibility for capistrano
+ args = handle_options
+ end
+ collect_command_line_tasks(args)
end
end
@@ -117,8 +127,8 @@ def run_with_threads
thread_pool.join
if options.job_stats
stats = thread_pool.statistics
- puts "Maximum active threads: #{stats[:max_active_threads]}"
- puts "Total threads in play: #{stats[:total_threads_in_play]}"
+ puts "Maximum active threads: #{stats[:max_active_threads]} + main"
+ puts "Total threads in play: #{stats[:total_threads_in_play]} + main"
end
ThreadHistoryDisplay.new(thread_pool.history).show if
options.job_stats == :history
@@ -138,30 +148,41 @@ def options
# Return the thread pool used for multithreaded processing.
def thread_pool # :nodoc:
- @thread_pool ||= ThreadPool.new(options.thread_pool_size || FIXNUM_MAX)
+ @thread_pool ||= ThreadPool.new(options.thread_pool_size || Rake.suggested_thread_count-1)
end
- # private ----------------------------------------------------------------
+ # internal ----------------------------------------------------------------
- def invoke_task(task_string)
+ # Invokes a task with arguments that are extracted from +task_string+
+ def invoke_task(task_string) # :nodoc:
name, args = parse_task_string(task_string)
t = self[name]
t.invoke(*args)
end
- def parse_task_string(string)
- if string =~ /^([^\[]+)(\[(.*)\])$/
- name = $1
- args = $3.split(/\s*,\s*/)
- else
- name = string
- args = []
- end
- [name, args]
+ def parse_task_string(string) # :nodoc:
+ /^([^\[]+)(?:\[(.*)\])$/ =~ string.to_s
+
+ name = $1
+ remaining_args = $2
+
+ return string, [] unless name
+ return name, [] if remaining_args.empty?
+
+ args = []
+
+ begin
+ /\s*((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args
+
+ remaining_args = $2
+ args << $1.gsub(/\\(.)/, '\1')
+ end while remaining_args
+
+ return name, args
end
# Provide standard exception handling for the given block.
- def standard_exception_handling
+ def standard_exception_handling # :nodoc:
yield
rescue SystemExit
# Exit silently with current status
@@ -175,24 +196,58 @@ def standard_exception_handling
exit_because_of_exception(ex)
end
- # Exit the program because of an unhandle exception.
+ # Exit the program because of an unhandled exception.
# (may be overridden by subclasses)
- def exit_because_of_exception(ex)
+ def exit_because_of_exception(ex) # :nodoc:
exit(false)
end
# Display the error message that caused the exception.
- def display_error_message(ex)
+ def display_error_message(ex) # :nodoc:
trace "#{name} aborted!"
- trace ex.message
+ display_exception_details(ex)
+ trace "Tasks: #{ex.chain}" if has_chain?(ex)
+ trace "(See full trace by running task with --trace)" unless
+ options.backtrace
+ end
+
+ def display_exception_details(ex) # :nodoc:
+ display_exception_details_seen << ex
+
+ display_exception_message_details(ex)
+ display_exception_backtrace(ex)
+ display_cause_details(ex.cause) if has_cause?(ex)
+ end
+
+ def display_cause_details(ex) # :nodoc:
+ return if display_exception_details_seen.include? ex
+
+ trace "\nCaused by:"
+ display_exception_details(ex)
+ end
+
+ def display_exception_details_seen # :nodoc:
+ Thread.current[:rake_display_exception_details_seen] ||= []
+ end
+
+ def has_cause?(ex) # :nodoc:
+ ex.respond_to?(:cause) && ex.cause
+ end
+
+ def display_exception_message_details(ex) # :nodoc:
+ if ex.instance_of?(RuntimeError)
+ trace ex.message
+ else
+ trace "#{ex.class.name}: #{ex.message}"
+ end
+ end
+
+ def display_exception_backtrace(ex) # :nodoc:
if options.backtrace
trace ex.backtrace.join("\n")
else
trace Backtrace.collapse(ex.backtrace).join("\n")
end
- trace "Tasks: #{ex.chain}" if has_chain?(ex)
- trace "(See full trace by running task with --trace)" unless
- options.backtrace
end
# Warn about deprecated usage.
@@ -200,7 +255,7 @@ def display_error_message(ex)
# Example:
# Rake.application.deprecate("import", "Rake.import", caller.first)
#
- def deprecate(old_usage, new_usage, call_site)
+ def deprecate(old_usage, new_usage, call_site) # :nodoc:
unless options.ignore_deprecate
$stderr.puts "WARNING: '#{old_usage}' is deprecated. " +
"Please use '#{new_usage}' instead.\n" +
@@ -209,19 +264,19 @@ def deprecate(old_usage, new_usage, call_site)
end
# Does the exception have a task invocation chain?
- def has_chain?(exception)
+ def has_chain?(exception) # :nodoc:
exception.respond_to?(:chain) && exception.chain
end
private :has_chain?
# True if one of the files in RAKEFILES is in the current directory.
# If a match is found, it is copied into @rakefile.
- def have_rakefile
+ def have_rakefile # :nodoc:
@rakefiles.each do |fn|
if File.exist?(fn)
others = FileList.glob(fn, File::FNM_CASEFOLD)
return others.size == 1 ? others.first : fn
- elsif fn == ''
+ elsif fn == ""
return fn
end
end
@@ -229,23 +284,18 @@ def have_rakefile
end
# True if we are outputting to TTY, false otherwise
- def tty_output?
+ def tty_output? # :nodoc:
@tty_output
end
- # Override the detected TTY output state (mostly for testing)
- def tty_output=(tty_output_state)
- @tty_output = tty_output_state
- end
-
# We will truncate output if we are outputting to a TTY or if we've been
# given an explicit column width to honor
- def truncate_output?
+ def truncate_output? # :nodoc:
tty_output? || @terminal_columns.nonzero?
end
# Display the tasks and comments.
- def display_tasks_and_comments
+ def display_tasks_and_comments # :nodoc:
displayable_tasks = tasks.select { |t|
(options.show_all_tasks || t.comment) &&
t.name =~ options.show_task_pattern
@@ -284,7 +334,7 @@ def display_tasks_and_comments
end
end
- def terminal_width
+ def terminal_width # :nodoc:
if @terminal_columns.nonzero?
result = @terminal_columns
else
@@ -296,28 +346,28 @@ def terminal_width
end
# Calculate the dynamic width of the
- def dynamic_width
+ def dynamic_width # :nodoc:
@dynamic_width ||= (dynamic_width_stty.nonzero? || dynamic_width_tput)
end
- def dynamic_width_stty
+ def dynamic_width_stty # :nodoc:
%x{stty size 2>/dev/null}.split[1].to_i
end
- def dynamic_width_tput
+ def dynamic_width_tput # :nodoc:
%x{tput cols 2>/dev/null}.to_i
end
- def unix?
- RbConfig::CONFIG['host_os'] =~
+ def unix? # :nodoc:
+ RbConfig::CONFIG["host_os"] =~
/(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
end
- def windows?
+ def windows? # :nodoc:
Win32.windows?
end
- def truncate(string, width)
+ def truncate(string, width) # :nodoc:
if string.nil?
""
elsif string.length <= width
@@ -328,56 +378,62 @@ def truncate(string, width)
end
# Display the tasks and prerequisites
- def display_prerequisites
+ def display_prerequisites # :nodoc:
tasks.each do |t|
puts "#{name} #{t.name}"
t.prerequisites.each { |pre| puts " #{pre}" }
end
end
- def trace(*strings)
+ def trace(*strings) # :nodoc:
options.trace_output ||= $stderr
trace_on(options.trace_output, *strings)
end
- def sort_options(options)
+ def sort_options(options) # :nodoc:
options.sort_by { |opt|
- opt.select { |o| o =~ /^-/ }.map { |o| o.downcase }.sort.reverse
+ opt.select { |o| o.is_a?(String) && o =~ /^-/ }.map(&:downcase).sort.reverse
}
end
private :sort_options
# A list of all the standard options used in rake, suitable for
# passing to OptionParser.
- def standard_rake_options
+ def standard_rake_options # :nodoc:
sort_options(
[
- ['--all', '-A',
- "Show all tasks, even uncommented ones",
+ ["--all", "-A",
+ "Show all tasks, even uncommented ones (in combination with -T or -D)",
lambda { |value|
options.show_all_tasks = value
}
],
- ['--backtrace=[OUT]',
+ ["--backtrace=[OUT]",
"Enable full backtrace. OUT can be stderr (default) or stdout.",
lambda { |value|
options.backtrace = true
- select_trace_output(options, 'backtrace', value)
+ select_trace_output(options, "backtrace", value)
}
],
- ['--comments',
+ ["--build-all", "-B",
+ "Build all prerequisites, including those which are up-to-date.",
+ lambda { |value|
+ options.build_all = true
+ }
+ ],
+ ["--comments",
"Show commented tasks only",
lambda { |value|
options.show_all_tasks = !value
}
],
- ['--describe', '-D [PATTERN]',
+ ["--describe", "-D [PATTERN]",
"Describe the tasks (matching optional PATTERN), then exit.",
lambda { |value|
select_tasks_to_show(options, :describe, value)
}
],
- ['--dry-run', '-n',
+ ["--dry-run", "-n",
"Do a dry run without executing actions.",
lambda { |value|
Rake.verbose(true)
@@ -386,33 +442,41 @@ def standard_rake_options
options.trace = true
}
],
- ['--execute', '-e CODE',
+ ["--execute", "-e CODE",
"Execute some Ruby code and exit.",
lambda { |value|
eval(value)
exit
}
],
- ['--execute-print', '-p CODE',
+ ["--execute-print", "-p CODE",
"Execute some Ruby code, print the result, then exit.",
lambda { |value|
puts eval(value)
exit
}
],
- ['--execute-continue', '-E CODE',
+ ["--execute-continue", "-E CODE",
"Execute some Ruby code, " +
"then continue with normal task processing.",
lambda { |value| eval(value) }
],
- ['--jobs', '-j [NUMBER]',
+ ["--jobs", "-j [NUMBER]",
"Specifies the maximum number of tasks to execute in parallel. " +
- "(default is 2)",
+ "(default is number of CPU cores + 4)",
lambda { |value|
- options.thread_pool_size = [(value || 2).to_i, 2].max
+ if value.nil? || value == ""
+ value = Float::INFINITY
+ elsif value =~ /^\d+$/
+ value = value.to_i
+ else
+ value = Rake.suggested_thread_count
+ end
+ value = 1 if value < 1
+ options.thread_pool_size = value - 1
}
],
- ['--job-stats [LEVEL]',
+ ["--job-stats [LEVEL]",
"Display job statistics. " +
"LEVEL=history displays a complete job list",
lambda { |value|
@@ -423,42 +487,42 @@ def standard_rake_options
end
}
],
- ['--libdir', '-I LIBDIR',
+ ["--libdir", "-I LIBDIR",
"Include LIBDIR in the search path for required modules.",
lambda { |value| $:.push(value) }
],
- ['--multitask', '-m',
+ ["--multitask", "-m",
"Treat all tasks as multitasks.",
lambda { |value| options.always_multitask = true }
],
- ['--no-search', '--nosearch',
- '-N', "Do not search parent directories for the Rakefile.",
+ ["--no-search", "--nosearch",
+ "-N", "Do not search parent directories for the Rakefile.",
lambda { |value| options.nosearch = true }
],
- ['--prereqs', '-P',
+ ["--prereqs", "-P",
"Display the tasks and dependencies, then exit.",
lambda { |value| options.show_prereqs = true }
],
- ['--quiet', '-q',
+ ["--quiet", "-q",
"Do not log messages to standard output.",
lambda { |value| Rake.verbose(false) }
],
- ['--rakefile', '-f [FILE]',
- "Use FILE as the rakefile.",
+ ["--rakefile", "-f [FILENAME]",
+ "Use FILENAME as the rakefile to search for.",
lambda { |value|
- value ||= ''
+ value ||= ""
@rakefiles.clear
@rakefiles << value
}
],
- ['--rakelibdir', '--rakelib', '-R RAKELIBDIR',
+ ["--rakelibdir", "--rakelib", "-R RAKELIBDIR",
"Auto-import any .rake files in RAKELIBDIR. " +
"(default is 'rakelib')",
lambda { |value|
options.rakelib = value.split(File::PATH_SEPARATOR)
}
],
- ['--require', '-r MODULE',
+ ["--require", "-r MODULE",
"Require MODULE before executing rakefile.",
lambda { |value|
begin
@@ -472,11 +536,11 @@ def standard_rake_options
end
}
],
- ['--rules',
+ ["--rules",
"Trace the rules resolution.",
lambda { |value| options.trace_rules = true }
],
- ['--silent', '-s',
+ ["--silent", "-s",
"Like --quiet, but also suppresses the " +
"'in directory' announcement.",
lambda { |value|
@@ -484,59 +548,60 @@ def standard_rake_options
options.silent = true
}
],
- ['--suppress-backtrace PATTERN',
+ ["--suppress-backtrace PATTERN",
"Suppress backtrace lines matching regexp PATTERN. " +
"Ignored if --trace is on.",
lambda { |value|
options.suppress_backtrace_pattern = Regexp.new(value)
}
],
- ['--system', '-g',
+ ["--system", "-g",
"Using system wide (global) rakefiles " +
"(usually '~/.rake/*.rake').",
lambda { |value| options.load_system = true }
],
- ['--no-system', '--nosystem', '-G',
+ ["--no-system", "--nosystem", "-G",
"Use standard project Rakefile search paths, " +
"ignore system wide rakefiles.",
lambda { |value| options.ignore_system = true }
],
- ['--tasks', '-T [PATTERN]',
+ ["--tasks", "-T [PATTERN]",
"Display the tasks (matching optional PATTERN) " +
- "with descriptions, then exit.",
+ "with descriptions, then exit. " +
+ "-AT combination displays all of tasks contained no description.",
lambda { |value|
select_tasks_to_show(options, :tasks, value)
}
],
- ['--trace=[OUT]', '-t',
+ ["--trace=[OUT]", "-t",
"Turn on invoke/execute tracing, enable full backtrace. " +
"OUT can be stderr (default) or stdout.",
lambda { |value|
options.trace = true
options.backtrace = true
- select_trace_output(options, 'trace', value)
+ select_trace_output(options, "trace", value)
Rake.verbose(true)
}
],
- ['--verbose', '-v',
+ ["--verbose", "-v",
"Log message to standard output.",
lambda { |value| Rake.verbose(true) }
],
- ['--version', '-V',
+ ["--version", "-V",
"Display the program version.",
lambda { |value|
- puts "rake, version #{RAKEVERSION}"
+ puts "rake, version #{Rake::VERSION}"
exit
}
],
- ['--where', '-W [PATTERN]',
+ ["--where", "-W [PATTERN]",
"Describe the tasks (matching optional PATTERN), then exit.",
lambda { |value|
select_tasks_to_show(options, :lines, value)
options.show_all_tasks = true
}
],
- ['--no-deprecation-warnings', '-X',
+ ["--no-deprecation-warnings", "-X",
"Disable the deprecation warnings.",
lambda { |value|
options.ignore_deprecate = true
@@ -545,19 +610,19 @@ def standard_rake_options
])
end
- def select_tasks_to_show(options, show_tasks, value)
+ def select_tasks_to_show(options, show_tasks, value) # :nodoc:
options.show_tasks = show_tasks
- options.show_task_pattern = Regexp.new(value || '')
+ options.show_task_pattern = Regexp.new(value || "")
Rake::TaskManager.record_task_metadata = true
end
private :select_tasks_to_show
- def select_trace_output(options, trace_option, value)
+ def select_trace_output(options, trace_option, value) # :nodoc:
value = value.strip unless value.nil?
case value
- when 'stdout'
+ when "stdout"
options.trace_output = $stdout
- when 'stderr', nil
+ when "stderr", nil
options.trace_output = $stderr
else
fail CommandLineOptionError,
@@ -566,10 +631,11 @@ def select_trace_output(options, trace_option, value)
end
private :select_trace_output
- # Read and handle the command line options.
- def handle_options
- options.rakelib = ['rakelib']
- options.trace_output = $stderr
+ # Read and handle the command line options. Returns the command line
+ # arguments that we didn't understand, which should (in theory) be just
+ # task names and env vars.
+ def handle_options(argv) # :nodoc:
+ set_default_options
OptionParser.new do |opts|
opts.banner = "#{Rake.application.name} [-f rakefile] {options} targets..."
@@ -582,13 +648,13 @@ def handle_options
end
standard_rake_options.each { |args| opts.on(*args) }
- opts.environment('RAKEOPT')
- end.parse!
+ opts.environment("RAKEOPT")
+ end.parse(argv)
end
# Similar to the regular Ruby +require+ command, but will check
# for *.rake files in addition to *.rb files.
- def rake_require(file_name, paths=$LOAD_PATH, loaded=$")
+ def rake_require(file_name, paths=$LOAD_PATH, loaded=$") # :nodoc:
fn = file_name + ".rake"
return false if loaded.include?(fn)
paths.each do |path|
@@ -602,7 +668,7 @@ def rake_require(file_name, paths=$LOAD_PATH, loaded=$")
fail LoadError, "Can't find #{file_name}"
end
- def find_rakefile_location
+ def find_rakefile_location # :nodoc:
here = Dir.pwd
until (fn = have_rakefile)
Dir.chdir("..")
@@ -614,14 +680,14 @@ def find_rakefile_location
Dir.chdir(Rake.original_dir)
end
- def print_rakefile_directory(location)
+ def print_rakefile_directory(location) # :nodoc:
$stderr.puts "(in #{Dir.pwd})" unless
options.silent or original_dir == location
end
def raw_load_rakefile # :nodoc:
rakefile, location = find_rakefile_location
- if (! options.ignore_system) &&
+ if (!options.ignore_system) &&
(options.load_system || rakefile.nil?) &&
system_dir && File.directory?(system_dir)
print_rakefile_directory(location)
@@ -635,7 +701,7 @@ def raw_load_rakefile # :nodoc:
Dir.chdir(location)
print_rakefile_directory(location)
Rake.load_rakefile(File.expand_path(@rakefile)) if
- @rakefile && @rakefile != ''
+ @rakefile && @rakefile != ""
options.rakelib.each do |rlib|
glob("#{rlib}/*.rake") do |name|
add_import name
@@ -645,17 +711,17 @@ def raw_load_rakefile # :nodoc:
load_imports
end
- def glob(path, &block)
- FileList.glob(path.gsub("\\", '/')).each(&block)
+ def glob(path, &block) # :nodoc:
+ FileList.glob(path.tr("\\", "/")).each(&block)
end
private :glob
# The directory path containing the system wide rakefiles.
- def system_dir
+ def system_dir # :nodoc:
@system_dir ||=
begin
- if ENV['RAKE_SYSTEM']
- ENV['RAKE_SYSTEM']
+ if ENV["RAKE_SYSTEM"]
+ ENV["RAKE_SYSTEM"]
else
standard_system_dir
end
@@ -669,7 +735,7 @@ def standard_system_dir #:nodoc:
end
else
def standard_system_dir #:nodoc:
- File.join(File.expand_path('~'), '.rake')
+ File.join(File.expand_path("~"), ".rake")
end
end
private :standard_system_dir
@@ -677,9 +743,14 @@ def standard_system_dir #:nodoc:
# Collect the list of tasks on the command line. If no tasks are
# given, return a list containing only the default task.
# Environmental assignments are processed at this time as well.
- def collect_tasks
+ #
+ # `args` is the list of arguments to peruse to get the list of tasks.
+ # It should be the command line that was given to rake, less any
+ # recognised command-line options, which OptionParser.parse will
+ # have taken care of already.
+ def collect_command_line_tasks(args) # :nodoc:
@top_level_tasks = []
- ARGV.each do |arg|
+ args.each do |arg|
if arg =~ /^(\w+)=(.*)$/m
ENV[$1] = $2
else
@@ -691,38 +762,63 @@ def collect_tasks
# Default task name ("default").
# (May be overridden by subclasses)
- def default_task_name
+ def default_task_name # :nodoc:
"default"
end
# Add a file to the list of files to be imported.
- def add_import(fn)
+ def add_import(fn) # :nodoc:
@pending_imports << fn
end
# Load the pending list of imported files.
- def load_imports
+ def load_imports # :nodoc:
while fn = @pending_imports.shift
next if @imported.member?(fn)
fn_task = lookup(fn) and fn_task.invoke
ext = File.extname(fn)
loader = @loaders[ext] || @default_loader
loader.load(fn)
+ if fn_task = lookup(fn) and fn_task.needed?
+ fn_task.reenable
+ fn_task.invoke
+ loader.load(fn)
+ end
@imported << fn
end
end
- def rakefile_location(backtrace=caller)
+ def rakefile_location(backtrace=caller) # :nodoc:
backtrace.map { |t| t[/([^:]+):/, 1] }
re = /^#{@rakefile}$/
re = /#{re.source}/i if windows?
- backtrace.find { |str| str =~ re } || ''
+ backtrace.find { |str| str =~ re } || ""
+ end
+
+ def set_default_options # :nodoc:
+ options.always_multitask = false
+ options.backtrace = false
+ options.build_all = false
+ options.dryrun = false
+ options.ignore_deprecate = false
+ options.ignore_system = false
+ options.job_stats = false
+ options.load_system = false
+ options.nosearch = false
+ options.rakelib = %w[rakelib]
+ options.show_all_tasks = false
+ options.show_prereqs = false
+ options.show_task_pattern = nil
+ options.show_tasks = nil
+ options.silent = false
+ options.suppress_backtrace_pattern = nil
+ options.thread_pool_size = Rake.suggested_thread_count
+ options.trace = false
+ options.trace_output = $stderr
+ options.trace_rules = false
end
- private
- FIXNUM_MAX = (2**(0.size * 8 - 2) - 1) # :nodoc:
-
end
end
diff --git a/lib/rake/backtrace.rb b/lib/rake/backtrace.rb
index 9b2ba6157..31ff05450 100644
--- a/lib/rake/backtrace.rb
+++ b/lib/rake/backtrace.rb
@@ -1,14 +1,18 @@
+# frozen_string_literal: true
module Rake
- module Backtrace
- SYS_KEYS = RbConfig::CONFIG.keys.grep(/(prefix|libdir)/)
+ module Backtrace # :nodoc: all
+ SYS_KEYS = RbConfig::CONFIG.keys.grep(/(?:[a-z]prefix|libdir)\z/)
SYS_PATHS = RbConfig::CONFIG.values_at(*SYS_KEYS).uniq +
[ File.join(File.dirname(__FILE__), "..") ]
SUPPRESSED_PATHS = SYS_PATHS.
- map { |s| s.gsub("\\", "/") }.
+ map { |s| s.tr("\\", "/") }.
map { |f| File.expand_path(f) }.
reject { |s| s.nil? || s =~ /^ *$/ }
SUPPRESSED_PATHS_RE = SUPPRESSED_PATHS.map { |f| Regexp.quote(f) }.join("|")
+ SUPPRESSED_PATHS_RE << "|^org\\/jruby\\/\\w+\\.java" if
+ Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == "jruby"
+
SUPPRESS_PATTERN = %r!(\A(#{SUPPRESSED_PATHS_RE})|bin/rake:\d+)!i
def self.collapse(backtrace)
diff --git a/lib/rake/clean.rb b/lib/rake/clean.rb
index 8001ce569..b52e832a9 100644
--- a/lib/rake/clean.rb
+++ b/lib/rake/clean.rb
@@ -1,3 +1,4 @@
+# frozen_string_literal: true
# The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and
# two rake tasks (:clean and :clobber).
#
@@ -11,7 +12,7 @@
# The intent of this task is to return a project to its
# pristine, just unpacked state.
-require 'rake'
+require "rake"
# :stopdoc:
@@ -27,19 +28,41 @@ def cleanup_files(file_names)
end
end
- def cleanup(file_name, opts={})
+ def cleanup(file_name, **opts)
begin
- rm_r file_name, opts
+ opts = { verbose: Rake.application.options.trace }.merge(opts)
+ rm_r file_name, **opts
rescue StandardError => ex
- puts "Failed to remove #{file_name}: #{ex}"
+ puts "Failed to remove #{file_name}: #{ex}" unless file_already_gone?(file_name)
end
end
+
+ def file_already_gone?(file_name)
+ return false if File.exist?(file_name)
+
+ path = file_name
+ prev = nil
+
+ while path = File.dirname(path)
+ return false if cant_be_deleted?(path)
+ break if [prev, "."].include?(path)
+ prev = path
+ end
+ true
+ end
+ private_class_method :file_already_gone?
+
+ def cant_be_deleted?(path_name)
+ File.exist?(path_name) &&
+ (!File.readable?(path_name) || !File.executable?(path_name))
+ end
+ private_class_method :cant_be_deleted?
end
end
CLEAN = ::Rake::FileList["**/*~", "**/*.bak", "**/core"]
CLEAN.clear_exclude.exclude { |fn|
- fn.pathmap("%f").downcase == 'core' && File.directory?(fn)
+ fn.pathmap("%f").downcase == "core" && File.directory?(fn)
}
desc "Remove any temporary products."
@@ -49,7 +72,7 @@ def cleanup(file_name, opts={})
CLOBBER = ::Rake::FileList.new
-desc "Remove any generated file."
-task :clobber => [:clean] do
+desc "Remove any generated files."
+task clobber: [:clean] do
Rake::Cleaner.cleanup_files(CLOBBER)
end
diff --git a/lib/rake/cloneable.rb b/lib/rake/cloneable.rb
index ac6747123..eddb77e2f 100644
--- a/lib/rake/cloneable.rb
+++ b/lib/rake/cloneable.rb
@@ -1,9 +1,10 @@
+# frozen_string_literal: true
module Rake
- # ##########################################################################
+ ##
# Mixin for creating easily cloned objects.
- #
- module Cloneable
- # The hook that invoked by 'clone' and 'dup' methods.
+
+ module Cloneable # :nodoc:
+ # The hook that is invoked by 'clone' and 'dup' methods.
def initialize_copy(source)
super
source.instance_variables.each do |var|
diff --git a/lib/rake/contrib/compositepublisher.rb b/lib/rake/contrib/compositepublisher.rb
deleted file mode 100644
index 69952a080..000000000
--- a/lib/rake/contrib/compositepublisher.rb
+++ /dev/null
@@ -1,21 +0,0 @@
-module Rake
-
- # Manage several publishers as a single entity.
- class CompositePublisher
- def initialize
- @publishers = []
- end
-
- # Add a publisher to the composite.
- def add(pub)
- @publishers << pub
- end
-
- # Upload all the individual publishers.
- def upload
- @publishers.each { |p| p.upload }
- end
- end
-
-end
-
diff --git a/lib/rake/contrib/ftptools.rb b/lib/rake/contrib/ftptools.rb
deleted file mode 100644
index 0dd50fdc8..000000000
--- a/lib/rake/contrib/ftptools.rb
+++ /dev/null
@@ -1,139 +0,0 @@
-# = Tools for FTP uploading.
-#
-# This file is still under development and is not released for general
-# use.
-
-require 'date'
-require 'net/ftp'
-require 'rake/file_list'
-
-module Rake # :nodoc:
-
- ####################################################################
- # Note: Not released for general use.
- class FtpFile
- attr_reader :name, :size, :owner, :group, :time
-
- def self.date
- @date_class ||= Date
- end
-
- def self.time
- @time_class ||= Time
- end
-
- def initialize(path, entry)
- @path = path
- @mode, _, @owner, @group, size, d1, d2, d3, @name = entry.split(' ')
- @size = size.to_i
- @time = determine_time(d1, d2, d3)
- end
-
- def path
- File.join(@path, @name)
- end
-
- def directory?
- @mode[0] == ?d
- end
-
- def mode
- parse_mode(@mode)
- end
-
- def symlink?
- @mode[0] == ?l
- end
-
- private # --------------------------------------------------------
-
- def parse_mode(m)
- result = 0
- (1..9).each do |i|
- result = 2 * result + ((m[i] == ?-) ? 0 : 1)
- end
- result
- end
-
- def determine_time(d1, d2, d3)
- now = self.class.time.now
- if /:/ !~ d3
- result = Time.parse("#{d1} #{d2} #{d3}")
- else
- result = Time.parse("#{d1} #{d2} #{now.year} #{d3}")
- result = Time.parse("#{d1} #{d2} #{now.year - 1} #{d3}") if
- result > now
- end
- result
- end
- end
-
- ####################################################################
- # Manage the uploading of files to an FTP account.
- class FtpUploader
-
- # Log uploads to standard output when true.
- attr_accessor :verbose
-
- class << FtpUploader
- # Create an uploader and pass it to the given block as +up+.
- # When the block is complete, close the uploader.
- def connect(path, host, account, password)
- up = self.new(path, host, account, password)
- begin
- yield(up)
- ensure
- up.close
- end
- end
- end
-
- # Create an FTP uploader targeting the directory +path+ on +host+
- # using the given account and password. +path+ will be the root
- # path of the uploader.
- def initialize(path, host, account, password)
- @created = Hash.new
- @path = path
- @ftp = Net::FTP.new(host, account, password)
- makedirs(@path)
- @ftp.chdir(@path)
- end
-
- # Create the directory +path+ in the uploader root path.
- def makedirs(path)
- route = []
- File.split(path).each do |dir|
- route << dir
- current_dir = File.join(route)
- if @created[current_dir].nil?
- @created[current_dir] = true
- $stderr.puts "Creating Directory #{current_dir}" if @verbose
- @ftp.mkdir(current_dir) rescue nil
- end
- end
- end
-
- # Upload all files matching +wildcard+ to the uploader's root
- # path.
- def upload_files(wildcard)
- FileList.glob(wildcard).each do |fn|
- upload(fn)
- end
- end
-
- # Close the uploader.
- def close
- @ftp.close
- end
-
- private # --------------------------------------------------------
-
- # Upload a single file to the uploader's root path.
- def upload(file)
- $stderr.puts "Uploading #{file}" if @verbose
- dir = File.dirname(file)
- makedirs(dir)
- @ftp.putbinaryfile(file, file) unless File.directory?(file)
- end
- end
-end
diff --git a/lib/rake/contrib/publisher.rb b/lib/rake/contrib/publisher.rb
deleted file mode 100644
index 8b11edb59..000000000
--- a/lib/rake/contrib/publisher.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com)
-# All rights reserved.
-
-# :stopdoc:
-
-# Configuration information about an upload host system.
-# name :: Name of host system.
-# webdir :: Base directory for the web information for the
-# application. The application name (APP) is appended to
-# this directory before using.
-# pkgdir :: Directory on the host system where packages can be
-# placed.
-HostInfo = Struct.new(:name, :webdir, :pkgdir)
-
-# :startdoc:
-
-# Manage several publishers as a single entity.
-class CompositePublisher
- def initialize
- @publishers = []
- end
-
- # Add a publisher to the composite.
- def add(pub)
- @publishers << pub
- end
-
- # Upload all the individual publishers.
- def upload
- @publishers.each { |p| p.upload }
- end
-end
-
-# Publish an entire directory to an existing remote directory using
-# SSH.
-class SshDirPublisher
- def initialize(host, remote_dir, local_dir)
- @host = host
- @remote_dir = remote_dir
- @local_dir = local_dir
- end
-
- def upload
- run %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}}
- end
-end
-
-# Publish an entire directory to a fresh remote directory using SSH.
-class SshFreshDirPublisher < SshDirPublisher
- def upload
- run %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil
- run %{ssh #{@host} mkdir #{@remote_dir}}
- super
- end
-end
-
-# Publish a list of files to an existing remote directory.
-class SshFilePublisher
- # Create a publisher using the give host information.
- def initialize(host, remote_dir, local_dir, *files)
- @host = host
- @remote_dir = remote_dir
- @local_dir = local_dir
- @files = files
- end
-
- # Upload the local directory to the remote directory.
- def upload
- @files.each do |fn|
- run %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}}
- end
- end
-end
diff --git a/lib/rake/contrib/rubyforgepublisher.rb b/lib/rake/contrib/rubyforgepublisher.rb
deleted file mode 100644
index a4b96936c..000000000
--- a/lib/rake/contrib/rubyforgepublisher.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'rake/contrib/sshpublisher'
-
-module Rake
-
- class RubyForgePublisher < SshDirPublisher
- attr_reader :project, :proj_id, :user
-
- def initialize(projname, user)
- super(
- "#{user}@rubyforge.org",
- "/var/www/gforge-projects/#{projname}",
- "html")
- end
- end
-
-end
diff --git a/lib/rake/contrib/sshpublisher.rb b/lib/rake/contrib/sshpublisher.rb
deleted file mode 100644
index bd6adc127..000000000
--- a/lib/rake/contrib/sshpublisher.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-require 'rake/dsl_definition'
-require 'rake/contrib/compositepublisher'
-
-module Rake
-
- # Publish an entire directory to an existing remote directory using
- # SSH.
- class SshDirPublisher
- include Rake::DSL
-
- def initialize(host, remote_dir, local_dir)
- @host = host
- @remote_dir = remote_dir
- @local_dir = local_dir
- end
-
- def upload
- sh %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}}
- end
- end
-
- # Publish an entire directory to a fresh remote directory using SSH.
- class SshFreshDirPublisher < SshDirPublisher
- def upload
- sh %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil
- sh %{ssh #{@host} mkdir #{@remote_dir}}
- super
- end
- end
-
- # Publish a list of files to an existing remote directory.
- class SshFilePublisher
- include Rake::DSL
-
- # Create a publisher using the give host information.
- def initialize(host, remote_dir, local_dir, *files)
- @host = host
- @remote_dir = remote_dir
- @local_dir = local_dir
- @files = files
- end
-
- # Upload the local directory to the remote directory.
- def upload
- @files.each do |fn|
- sh %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}}
- end
- end
- end
-end
diff --git a/lib/rake/contrib/sys.rb b/lib/rake/contrib/sys.rb
deleted file mode 100644
index a3a9f69e2..000000000
--- a/lib/rake/contrib/sys.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-fail "ERROR: 'rake/contrib/sys' is obsolete and no longer supported. " +
- "Use 'FileUtils' instead."
diff --git a/lib/rake/cpu_counter.rb b/lib/rake/cpu_counter.rb
new file mode 100644
index 000000000..564a62859
--- /dev/null
+++ b/lib/rake/cpu_counter.rb
@@ -0,0 +1,107 @@
+# frozen_string_literal: true
+module Rake
+
+ # Based on a script at:
+ # http://stackoverflow.com/questions/891537/ruby-detect-number-of-cpus-installed
+ class CpuCounter # :nodoc: all
+ def self.count
+ new.count_with_default
+ end
+
+ def count_with_default(default=4)
+ count || default
+ rescue StandardError
+ default
+ end
+
+ begin
+ require "etc"
+ rescue LoadError
+ else
+ if Etc.respond_to?(:nprocessors)
+ def count
+ return Etc.nprocessors
+ end
+ end
+ end
+ end
+end
+
+unless Rake::CpuCounter.method_defined?(:count)
+ Rake::CpuCounter.class_eval <<-'end;', __FILE__, __LINE__+1
+ require 'rbconfig'
+
+ def count
+ if RUBY_PLATFORM == 'java'
+ count_via_java_runtime
+ else
+ case RbConfig::CONFIG['host_os']
+ when /linux/
+ count_via_cpuinfo
+ when /darwin|bsd/
+ count_via_sysctl
+ when /mswin|mingw/
+ count_via_win32
+ else
+ # Try everything
+ count_via_win32 ||
+ count_via_sysctl ||
+ count_via_cpuinfo
+ end
+ end
+ end
+
+ def count_via_java_runtime
+ Java::Java.lang.Runtime.getRuntime.availableProcessors
+ rescue StandardError
+ nil
+ end
+
+ def count_via_win32
+ require 'win32ole'
+ wmi = WIN32OLE.connect("winmgmts://")
+ cpu = wmi.ExecQuery("select NumberOfCores from Win32_Processor") # TODO count hyper-threaded in this
+ cpu.to_enum.first.NumberOfCores
+ rescue StandardError, LoadError
+ nil
+ end
+
+ def count_via_cpuinfo
+ open('/proc/cpuinfo') { |f| f.readlines }.grep(/processor/).size
+ rescue StandardError
+ nil
+ end
+
+ def count_via_sysctl
+ run 'sysctl', '-n', 'hw.ncpu'
+ end
+
+ def run(command, *args)
+ cmd = resolve_command(command)
+ if cmd
+ IO.popen [cmd, *args] do |io|
+ io.read.to_i
+ end
+ else
+ nil
+ end
+ end
+
+ def resolve_command(command)
+ look_for_command("/usr/sbin", command) ||
+ look_for_command("/sbin", command) ||
+ in_path_command(command)
+ end
+
+ def look_for_command(dir, command)
+ path = File.join(dir, command)
+ File.exist?(path) ? path : nil
+ end
+
+ def in_path_command(command)
+ IO.popen ['which', command] do |io|
+ io.eof? ? nil : command
+ end
+ end
+ end;
+end
diff --git a/lib/rake/default_loader.rb b/lib/rake/default_loader.rb
index 5dd3c0561..d3b4650d3 100644
--- a/lib/rake/default_loader.rb
+++ b/lib/rake/default_loader.rb
@@ -1,7 +1,12 @@
+# frozen_string_literal: true
module Rake
# Default Rakefile loader used by +import+.
class DefaultLoader
+
+ ##
+ # Loads a rakefile into the current application from +fn+
+
def load(fn)
Rake.load_rakefile(File.expand_path(fn))
end
diff --git a/lib/rake/dsl_definition.rb b/lib/rake/dsl_definition.rb
index b24a82138..c80464020 100644
--- a/lib/rake/dsl_definition.rb
+++ b/lib/rake/dsl_definition.rb
@@ -1,11 +1,15 @@
+# frozen_string_literal: true
# Rake DSL functions.
-require 'rake/file_utils_ext'
+require "rake/file_utils_ext"
module Rake
##
# DSL is a module that provides #task, #desc, #namespace, etc. Use this
# when you'd like to use rake outside the top level scope.
+ #
+ # For a Rakefile you run from the command line this module is automatically
+ # included.
module DSL
@@ -21,14 +25,38 @@ module DSL
private
- # Declare a basic task.
+ # :call-seq:
+ # task(task_name)
+ # task(task_name: dependencies)
+ # task(task_name, arguments => dependencies)
#
- # Example:
- # task :clobber => [:clean] do
+ # Declare a basic task. The +task_name+ is always the first argument. If
+ # the task name contains a ":" it is defined in that namespace.
+ #
+ # The +dependencies+ may be a single task name or an Array of task names.
+ # The +argument+ (a single name) or +arguments+ (an Array of names) define
+ # the arguments provided to the task.
+ #
+ # The task, argument and dependency names may be either symbols or
+ # strings.
+ #
+ # A task with a single dependency:
+ #
+ # task clobber: %w[clean] do
# rm_rf "html"
# end
#
- def task(*args, &block)
+ # A task with an argument and a dependency:
+ #
+ # task :package, [:version] => :test do |t, args|
+ # # ...
+ # end
+ #
+ # To invoke this task from the command line:
+ #
+ # $ rake package[1.2.3]
+ #
+ def task(*args, &block) # :doc:
Rake::Task.define_task(*args, &block)
end
@@ -45,7 +73,7 @@ def task(*args, &block)
# end
# end
#
- def file(*args, &block)
+ def file(*args, &block) # :doc:
Rake::FileTask.define_task(*args, &block)
end
@@ -61,9 +89,10 @@ def file_create(*args, &block)
# Example:
# directory "testdata/doc"
#
- def directory(*args, &block)
+ def directory(*args, &block) # :doc:
result = file_create(*args, &block)
dir, _ = *Rake.application.resolve_args(args)
+ dir = Rake.from_pathname(dir)
Rake.each_dir_parent(dir) do |d|
file_create d do |t|
mkdir_p t.name unless File.exist?(t.name)
@@ -78,9 +107,9 @@ def directory(*args, &block)
# about it)
#
# Example:
- # multitask :deploy => [:deploy_gem, :deploy_rdoc]
+ # multitask deploy: %w[deploy_gem deploy_rdoc]
#
- def multitask(*args, &block)
+ def multitask(*args, &block) # :doc:
Rake::MultiTask.define_task(*args, &block)
end
@@ -88,14 +117,22 @@ def multitask(*args, &block)
# block. Returns a NameSpace object that can be used to lookup
# tasks defined in the namespace.
#
- # E.g.
+ # Example:
#
# ns = namespace "nested" do
+ # # the "nested:run" task
# task :run
# end
# task_run = ns[:run] # find :run in the given namespace.
#
- def namespace(name=nil, &block)
+ # Tasks can also be defined in a namespace by using a ":" in the task
+ # name:
+ #
+ # task "nested:test" do
+ # # ...
+ # end
+ #
+ def namespace(name=nil, &block) # :doc:
name = name.to_s if name.kind_of?(Symbol)
name = name.to_str if name.respond_to?(:to_str)
unless name.kind_of?(String) || name.nil?
@@ -108,23 +145,24 @@ def namespace(name=nil, &block)
#
# Example:
# rule '.o' => '.c' do |t|
- # sh %{cc -o #{t.name} #{t.source}}
+ # sh 'cc', '-o', t.name, t.source
# end
#
- def rule(*args, &block)
+ def rule(*args, &block) # :doc:
Rake::Task.create_rule(*args, &block)
end
- # Describe the next rake task.
- # Duplicate descriptions are discarded.
+ # Describes the next rake task. Duplicate descriptions are discarded.
+ # Descriptions are shown with rake -T
(up to the first
+ # sentence) and rake -D
(the entire description).
#
# Example:
# desc "Run the Unit Tests"
- # task :test => [:build]
- # runtests
+ # task test: [:build]
+ # # ... run tests
# end
#
- def desc(description)
+ def desc(description) # :doc:
Rake.application.last_description = description
end
@@ -142,7 +180,7 @@ def desc(description)
# Example:
# import ".depend", "my_rules"
#
- def import(*fns)
+ def import(*fns) # :doc:
fns.each do |fn|
Rake.application.add_import(fn)
end
diff --git a/lib/rake/early_time.rb b/lib/rake/early_time.rb
index 8c0e7d333..80cc6bfad 100644
--- a/lib/rake/early_time.rb
+++ b/lib/rake/early_time.rb
@@ -1,3 +1,4 @@
+# frozen_string_literal: true
module Rake
# EarlyTime is a fake timestamp that occurs _before_ any other time value.
@@ -5,11 +6,14 @@ class EarlyTime
include Comparable
include Singleton
+ ##
+ # The EarlyTime always comes before +other+!
+
def <=>(other)
-1
end
- def to_s
+ def to_s # :nodoc:
"; rm # -rf /
.
+ #
+ # If a block is given, upon command completion the block is called with an
+ # OK flag (true on a zero exit status) and a Process::Status object.
+ # Without a block a RuntimeError is raised when the command exits non-zero.
+ #
+ # Examples:
+ #
+ # sh 'ls -ltr'
#
# sh 'ls', 'file with spaces'
#
# # check exit status after command runs
# sh %{grep pattern file} do |ok, res|
- # if ! ok
+ # if !ok
# puts "pattern not found (status = #{res.exitstatus})"
# end
# end
@@ -33,13 +43,15 @@ module FileUtils
def sh(*cmd, &block)
options = (Hash === cmd.last) ? cmd.pop : {}
shell_runner = block_given? ? block : create_shell_runner(cmd)
+
set_verbose_option(options)
- options[:noop] ||= Rake::FileUtilsExt.nowrite_flag
- Rake.rake_check_options options, :noop, :verbose
- Rake.rake_output_message cmd.join(" ") if options[:verbose]
+ verbose = options.delete :verbose
+ noop = options.delete(:noop) || Rake::FileUtilsExt.nowrite_flag
- unless options[:noop]
- res = rake_system(*cmd)
+ Rake.rake_output_message sh_show_command cmd if verbose
+
+ unless noop
+ res = (Hash === cmd.last) ? system(*cmd) : system(*cmd, options)
status = $?
status = Rake::PseudoStatus.new(1) if !res && status.nil?
shell_runner.call(res, status)
@@ -47,8 +59,9 @@ def sh(*cmd, &block)
end
def create_shell_runner(cmd) # :nodoc:
- show_command = cmd.join(" ")
+ show_command = sh_show_command cmd
show_command = show_command[0, 42] + "..." unless $trace
+
lambda do |ok, status|
ok or
fail "Command failed with status (#{status.exitstatus}): " +
@@ -57,6 +70,19 @@ def create_shell_runner(cmd) # :nodoc:
end
private :create_shell_runner
+ def sh_show_command(cmd) # :nodoc:
+ cmd = cmd.dup
+
+ if Hash === cmd.first
+ env = cmd.first
+ env = env.map { |name, value| "#{name}=#{value}" }.join " "
+ cmd[0] = env
+ end
+
+ cmd.join " "
+ end
+ private :sh_show_command
+
def set_verbose_option(options) # :nodoc:
unless options.key? :verbose
options[:verbose] =
@@ -66,22 +92,16 @@ def set_verbose_option(options) # :nodoc:
end
private :set_verbose_option
- def rake_system(*cmd) # :nodoc:
- Rake::AltSystem.system(*cmd)
- end
- private :rake_system
-
# Run a Ruby interpreter with the given arguments.
#
# Example:
# ruby %{-pe '$_.upcase!' This package contains Rake, a simple ruby build program with - capabilities similar to make.
- -Rake has the following features:
- -