summaryrefslogtreecommitdiff
path: root/lib/rake/application.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rake/application.rb')
-rw-r--r--lib/rake/application.rb25
1 files changed, 13 insertions, 12 deletions
diff --git a/lib/rake/application.rb b/lib/rake/application.rb
index 96f907b077..bd72a2efae 100644
--- a/lib/rake/application.rb
+++ b/lib/rake/application.rb
@@ -20,9 +20,6 @@ module Rake
include TaskManager
include TraceOutput
- # The command-line arguments rake is using (defaults to ARGV)
- attr_reader :argv # :nodoc:
-
# The name of the application (typically 'rake')
attr_reader :name
@@ -48,7 +45,6 @@ module Rake
# Initialize a Rake::Application object.
def initialize
super
- @argv = ARGV.dup
@name = 'rake'
@rakefiles = DEFAULT_RAKEFILES.dup
@rakefile = nil
@@ -77,8 +73,6 @@ module Rake
# call +top_level+ to run your top level tasks.
def run
standard_exception_handling do
- @argv = argv
-
init
load_rakefile
top_level
@@ -89,8 +83,8 @@ module Rake
def init(app_name='rake')
standard_exception_handling do
@name = app_name
- handle_options
- collect_command_line_tasks
+ args = handle_options
+ collect_command_line_tasks(args)
end
end
@@ -622,7 +616,9 @@ module Rake
end
private :select_trace_output
- # Read and handle the command line options.
+ # 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 # :nodoc:
options.rakelib = ['rakelib']
options.trace_output = $stderr
@@ -639,7 +635,7 @@ module Rake
standard_rake_options.each { |args| opts.on(*args) }
opts.environment('RAKEOPT')
- end.parse! @argv
+ end.parse(ARGV)
end
# Similar to the regular Ruby +require+ command, but will check
@@ -733,9 +729,14 @@ module Rake
# 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_command_line_tasks # :nodoc:
+ #
+ # `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