rake 10.4.2 → 13.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +16 -7
  3. data/Gemfile +10 -0
  4. data/History.rdoc +2022 -287
  5. data/README.rdoc +40 -25
  6. data/Rakefile +25 -65
  7. data/bin/bundle +105 -0
  8. data/bin/console +7 -0
  9. data/bin/rake +20 -24
  10. data/bin/rdoc +29 -0
  11. data/bin/rubocop +29 -0
  12. data/bin/setup +6 -0
  13. data/doc/glossary.rdoc +10 -11
  14. data/doc/jamis.rb +1 -0
  15. data/doc/rake.1 +139 -124
  16. data/doc/rakefile.rdoc +2 -33
  17. data/exe/rake +27 -0
  18. data/lib/rake.rb +35 -43
  19. data/lib/rake/application.rb +125 -91
  20. data/lib/rake/backtrace.rb +3 -2
  21. data/lib/rake/clean.rb +8 -6
  22. data/lib/rake/cloneable.rb +1 -0
  23. data/lib/rake/cpu_counter.rb +10 -28
  24. data/lib/rake/default_loader.rb +1 -0
  25. data/lib/rake/dsl_definition.rb +6 -12
  26. data/lib/rake/early_time.rb +1 -0
  27. data/lib/rake/ext/core.rb +1 -0
  28. data/lib/rake/ext/string.rb +24 -21
  29. data/lib/rake/file_creation_task.rb +4 -3
  30. data/lib/rake/file_list.rb +35 -28
  31. data/lib/rake/file_task.rb +12 -4
  32. data/lib/rake/file_utils.rb +38 -32
  33. data/lib/rake/file_utils_ext.rb +8 -18
  34. data/lib/rake/invocation_chain.rb +1 -0
  35. data/lib/rake/invocation_exception_mixin.rb +1 -0
  36. data/lib/rake/late_time.rb +2 -1
  37. data/lib/rake/linked_list.rb +24 -15
  38. data/lib/rake/loaders/makefile.rb +23 -9
  39. data/lib/rake/multi_task.rb +2 -1
  40. data/lib/rake/name_space.rb +1 -1
  41. data/lib/rake/packagetask.rb +40 -17
  42. data/lib/rake/phony.rb +2 -1
  43. data/lib/rake/private_reader.rb +1 -0
  44. data/lib/rake/promise.rb +13 -12
  45. data/lib/rake/pseudo_status.rb +1 -0
  46. data/lib/rake/rake_module.rb +30 -1
  47. data/lib/rake/rake_test_loader.rb +18 -13
  48. data/lib/rake/rule_recursion_overflow_error.rb +2 -2
  49. data/lib/rake/scope.rb +3 -2
  50. data/lib/rake/task.rb +82 -31
  51. data/lib/rake/task_argument_error.rb +1 -0
  52. data/lib/rake/task_arguments.rb +15 -4
  53. data/lib/rake/task_manager.rb +54 -33
  54. data/lib/rake/tasklib.rb +2 -14
  55. data/lib/rake/testtask.rb +40 -63
  56. data/lib/rake/thread_history_display.rb +4 -3
  57. data/lib/rake/thread_pool.rb +16 -17
  58. data/lib/rake/trace_output.rb +2 -1
  59. data/lib/rake/version.rb +4 -1
  60. data/lib/rake/win32.rb +10 -15
  61. data/rake.gemspec +43 -0
  62. metadata +33 -270
  63. data/.autotest +0 -7
  64. data/.gemtest +0 -0
  65. data/.rubocop.yml +0 -27
  66. data/.togglerc +0 -7
  67. data/Manifest.txt +0 -166
  68. data/doc/release_notes/rake-0.4.14.rdoc +0 -23
  69. data/doc/release_notes/rake-0.4.15.rdoc +0 -35
  70. data/doc/release_notes/rake-0.5.0.rdoc +0 -53
  71. data/doc/release_notes/rake-0.5.3.rdoc +0 -78
  72. data/doc/release_notes/rake-0.5.4.rdoc +0 -46
  73. data/doc/release_notes/rake-0.6.0.rdoc +0 -141
  74. data/doc/release_notes/rake-0.7.0.rdoc +0 -119
  75. data/doc/release_notes/rake-0.7.1.rdoc +0 -59
  76. data/doc/release_notes/rake-0.7.2.rdoc +0 -121
  77. data/doc/release_notes/rake-0.7.3.rdoc +0 -47
  78. data/doc/release_notes/rake-0.8.0.rdoc +0 -114
  79. data/doc/release_notes/rake-0.8.2.rdoc +0 -165
  80. data/doc/release_notes/rake-0.8.3.rdoc +0 -112
  81. data/doc/release_notes/rake-0.8.4.rdoc +0 -147
  82. data/doc/release_notes/rake-0.8.5.rdoc +0 -53
  83. data/doc/release_notes/rake-0.8.6.rdoc +0 -37
  84. data/doc/release_notes/rake-0.8.7.rdoc +0 -55
  85. data/doc/release_notes/rake-0.9.0.rdoc +0 -112
  86. data/doc/release_notes/rake-0.9.1.rdoc +0 -52
  87. data/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
  88. data/doc/release_notes/rake-0.9.2.rdoc +0 -49
  89. data/doc/release_notes/rake-0.9.3.rdoc +0 -102
  90. data/doc/release_notes/rake-0.9.4.rdoc +0 -60
  91. data/doc/release_notes/rake-0.9.5.rdoc +0 -55
  92. data/doc/release_notes/rake-0.9.6.rdoc +0 -64
  93. data/doc/release_notes/rake-10.0.0.rdoc +0 -178
  94. data/doc/release_notes/rake-10.0.1.rdoc +0 -58
  95. data/doc/release_notes/rake-10.0.2.rdoc +0 -53
  96. data/doc/release_notes/rake-10.0.3.rdoc +0 -191
  97. data/doc/release_notes/rake-10.1.0.rdoc +0 -61
  98. data/lib/rake/alt_system.rb +0 -110
  99. data/lib/rake/contrib/.document +0 -1
  100. data/lib/rake/contrib/compositepublisher.rb +0 -21
  101. data/lib/rake/contrib/ftptools.rb +0 -137
  102. data/lib/rake/contrib/publisher.rb +0 -81
  103. data/lib/rake/contrib/rubyforgepublisher.rb +0 -18
  104. data/lib/rake/contrib/sshpublisher.rb +0 -61
  105. data/lib/rake/contrib/sys.rb +0 -4
  106. data/lib/rake/ext/module.rb +0 -2
  107. data/lib/rake/ext/pathname.rb +0 -25
  108. data/lib/rake/ext/time.rb +0 -16
  109. data/lib/rake/gempackagetask.rb +0 -4
  110. data/lib/rake/pathmap.rb +0 -3
  111. data/lib/rake/rdoctask.rb +0 -4
  112. data/lib/rake/ruby182_test_unit_fix.rb +0 -29
  113. data/lib/rake/runtest.rb +0 -27
  114. data/rakelib/publish.rake +0 -20
  115. data/rakelib/test_times.rake +0 -25
  116. data/test/file_creation.rb +0 -34
  117. data/test/helper.rb +0 -130
  118. data/test/support/rakefile_definitions.rb +0 -478
  119. data/test/support/ruby_runner.rb +0 -34
  120. data/test/test_private_reader.rb +0 -42
  121. data/test/test_rake.rb +0 -40
  122. data/test/test_rake_application.rb +0 -643
  123. data/test/test_rake_application_options.rb +0 -466
  124. data/test/test_rake_backtrace.rb +0 -119
  125. data/test/test_rake_clean.rb +0 -61
  126. data/test/test_rake_cpu_counter.rb +0 -68
  127. data/test/test_rake_definitions.rb +0 -84
  128. data/test/test_rake_directory_task.rb +0 -76
  129. data/test/test_rake_dsl.rb +0 -40
  130. data/test/test_rake_early_time.rb +0 -31
  131. data/test/test_rake_extension.rb +0 -59
  132. data/test/test_rake_file_creation_task.rb +0 -56
  133. data/test/test_rake_file_list.rb +0 -655
  134. data/test/test_rake_file_list_path_map.rb +0 -8
  135. data/test/test_rake_file_task.rb +0 -197
  136. data/test/test_rake_file_utils.rb +0 -309
  137. data/test/test_rake_ftp_file.rb +0 -74
  138. data/test/test_rake_functional.rb +0 -482
  139. data/test/test_rake_invocation_chain.rb +0 -64
  140. data/test/test_rake_late_time.rb +0 -18
  141. data/test/test_rake_linked_list.rb +0 -84
  142. data/test/test_rake_makefile_loader.rb +0 -46
  143. data/test/test_rake_multi_task.rb +0 -64
  144. data/test/test_rake_name_space.rb +0 -57
  145. data/test/test_rake_package_task.rb +0 -79
  146. data/test/test_rake_path_map.rb +0 -168
  147. data/test/test_rake_path_map_explode.rb +0 -34
  148. data/test/test_rake_path_map_partial.rb +0 -18
  149. data/test/test_rake_pathname_extensions.rb +0 -15
  150. data/test/test_rake_pseudo_status.rb +0 -21
  151. data/test/test_rake_rake_test_loader.rb +0 -20
  152. data/test/test_rake_reduce_compat.rb +0 -26
  153. data/test/test_rake_require.rb +0 -40
  154. data/test/test_rake_rules.rb +0 -388
  155. data/test/test_rake_scope.rb +0 -44
  156. data/test/test_rake_task.rb +0 -393
  157. data/test/test_rake_task_argument_parsing.rb +0 -119
  158. data/test/test_rake_task_arguments.rb +0 -127
  159. data/test/test_rake_task_lib.rb +0 -9
  160. data/test/test_rake_task_manager.rb +0 -178
  161. data/test/test_rake_task_manager_argument_resolution.rb +0 -19
  162. data/test/test_rake_task_with_arguments.rb +0 -172
  163. data/test/test_rake_test_task.rb +0 -146
  164. data/test/test_rake_thread_pool.rb +0 -145
  165. data/test/test_rake_top_level_functions.rb +0 -71
  166. data/test/test_rake_win32.rb +0 -72
  167. data/test/test_thread_history_display.rb +0 -101
  168. data/test/test_trace_output.rb +0 -52
@@ -1,12 +1,12 @@
1
- require 'shellwords'
2
- require 'optparse'
1
+ # frozen_string_literal: true
2
+ require "optparse"
3
3
 
4
- require 'rake/task_manager'
5
- require 'rake/file_list'
6
- require 'rake/thread_pool'
7
- require 'rake/thread_history_display'
8
- require 'rake/trace_output'
9
- require 'rake/win32'
4
+ require "rake/task_manager"
5
+ require "rake/file_list"
6
+ require "rake/thread_pool"
7
+ require "rake/thread_history_display"
8
+ require "rake/trace_output"
9
+ require "rake/win32"
10
10
 
11
11
  module Rake
12
12
 
@@ -35,17 +35,20 @@ module Rake
35
35
  # List of the top level task names (task names from the command line).
36
36
  attr_reader :top_level_tasks
37
37
 
38
+ # Override the detected TTY output state (mostly for testing)
39
+ attr_writer :tty_output
40
+
38
41
  DEFAULT_RAKEFILES = [
39
- 'rakefile',
40
- 'Rakefile',
41
- 'rakefile.rb',
42
- 'Rakefile.rb'
42
+ "rakefile",
43
+ "Rakefile",
44
+ "rakefile.rb",
45
+ "Rakefile.rb"
43
46
  ].freeze
44
47
 
45
48
  # Initialize a Rake::Application object.
46
49
  def initialize
47
50
  super
48
- @name = 'rake'
51
+ @name = "rake"
49
52
  @rakefiles = DEFAULT_RAKEFILES.dup
50
53
  @rakefile = nil
51
54
  @pending_imports = []
@@ -54,11 +57,13 @@ module Rake
54
57
  @default_loader = Rake::DefaultLoader.new
55
58
  @original_dir = Dir.pwd
56
59
  @top_level_tasks = []
57
- add_loader('rb', DefaultLoader.new)
58
- add_loader('rf', DefaultLoader.new)
59
- add_loader('rake', DefaultLoader.new)
60
+ add_loader("rb", DefaultLoader.new)
61
+ add_loader("rf", DefaultLoader.new)
62
+ add_loader("rake", DefaultLoader.new)
60
63
  @tty_output = STDOUT.tty?
61
- @terminal_columns = ENV['RAKE_COLUMNS'].to_i
64
+ @terminal_columns = ENV["RAKE_COLUMNS"].to_i
65
+
66
+ set_default_options
62
67
  end
63
68
 
64
69
  # Run the Rake application. The run method performs the following
@@ -71,19 +76,24 @@ module Rake
71
76
  # If you wish to build a custom rake command, you should call
72
77
  # +init+ on your application. Then define any tasks. Finally,
73
78
  # call +top_level+ to run your top level tasks.
74
- def run
79
+ def run(argv = ARGV)
75
80
  standard_exception_handling do
76
- init
81
+ init "rake", argv
77
82
  load_rakefile
78
83
  top_level
79
84
  end
80
85
  end
81
86
 
82
87
  # Initialize the command line parameters and app name.
83
- def init(app_name='rake')
88
+ def init(app_name="rake", argv = ARGV)
84
89
  standard_exception_handling do
85
90
  @name = app_name
86
- args = handle_options
91
+ begin
92
+ args = handle_options argv
93
+ rescue ArgumentError
94
+ # Backward compatibility for capistrano
95
+ args = handle_options
96
+ end
87
97
  collect_command_line_tasks(args)
88
98
  end
89
99
  end
@@ -162,7 +172,7 @@ module Rake
162
172
  args = []
163
173
 
164
174
  begin
165
- /((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args
175
+ /\s*((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args
166
176
 
167
177
  remaining_args = $2
168
178
  args << $1.gsub(/\\(.)/, '\1')
@@ -186,7 +196,7 @@ module Rake
186
196
  exit_because_of_exception(ex)
187
197
  end
188
198
 
189
- # Exit the program because of an unhandle exception.
199
+ # Exit the program because of an unhandled exception.
190
200
  # (may be overridden by subclasses)
191
201
  def exit_because_of_exception(ex) # :nodoc:
192
202
  exit(false)
@@ -202,13 +212,22 @@ module Rake
202
212
  end
203
213
 
204
214
  def display_exception_details(ex) # :nodoc:
205
- seen = Thread.current[:rake_display_exception_details_seen] ||= []
206
- return if seen.include? ex
207
- seen << ex
215
+ display_exception_details_seen << ex
208
216
 
209
217
  display_exception_message_details(ex)
210
218
  display_exception_backtrace(ex)
211
- display_exception_details(ex.cause) if has_cause?(ex)
219
+ display_cause_details(ex.cause) if has_cause?(ex)
220
+ end
221
+
222
+ def display_cause_details(ex) # :nodoc:
223
+ return if display_exception_details_seen.include? ex
224
+
225
+ trace "\nCaused by:"
226
+ display_exception_details(ex)
227
+ end
228
+
229
+ def display_exception_details_seen # :nodoc:
230
+ Thread.current[:rake_display_exception_details_seen] ||= []
212
231
  end
213
232
 
214
233
  def has_cause?(ex) # :nodoc:
@@ -257,7 +276,7 @@ module Rake
257
276
  if File.exist?(fn)
258
277
  others = FileList.glob(fn, File::FNM_CASEFOLD)
259
278
  return others.size == 1 ? others.first : fn
260
- elsif fn == ''
279
+ elsif fn == ""
261
280
  return fn
262
281
  end
263
282
  end
@@ -269,11 +288,6 @@ module Rake
269
288
  @tty_output
270
289
  end
271
290
 
272
- # Override the detected TTY output state (mostly for testing)
273
- def tty_output=(tty_output_state) # :nodoc:
274
- @tty_output = tty_output_state
275
- end
276
-
277
291
  # We will truncate output if we are outputting to a TTY or if we've been
278
292
  # given an explicit column width to honor
279
293
  def truncate_output? # :nodoc:
@@ -345,7 +359,7 @@ module Rake
345
359
  end
346
360
 
347
361
  def unix? # :nodoc:
348
- RbConfig::CONFIG['host_os'] =~
362
+ RbConfig::CONFIG["host_os"] =~
349
363
  /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
350
364
  end
351
365
 
@@ -378,7 +392,7 @@ module Rake
378
392
 
379
393
  def sort_options(options) # :nodoc:
380
394
  options.sort_by { |opt|
381
- opt.select { |o| o =~ /^-/ }.map { |o| o.downcase }.sort.reverse
395
+ opt.select { |o| o.is_a?(String) && o =~ /^-/ }.map(&:downcase).sort.reverse
382
396
  }
383
397
  end
384
398
  private :sort_options
@@ -388,38 +402,38 @@ module Rake
388
402
  def standard_rake_options # :nodoc:
389
403
  sort_options(
390
404
  [
391
- ['--all', '-A',
405
+ ["--all", "-A",
392
406
  "Show all tasks, even uncommented ones (in combination with -T or -D)",
393
407
  lambda { |value|
394
408
  options.show_all_tasks = value
395
409
  }
396
410
  ],
397
- ['--backtrace=[OUT]',
411
+ ["--backtrace=[OUT]",
398
412
  "Enable full backtrace. OUT can be stderr (default) or stdout.",
399
413
  lambda { |value|
400
414
  options.backtrace = true
401
- select_trace_output(options, 'backtrace', value)
415
+ select_trace_output(options, "backtrace", value)
402
416
  }
403
417
  ],
404
- ['--build-all', '-B',
418
+ ["--build-all", "-B",
405
419
  "Build all prerequisites, including those which are up-to-date.",
406
420
  lambda { |value|
407
421
  options.build_all = true
408
422
  }
409
423
  ],
410
- ['--comments',
424
+ ["--comments",
411
425
  "Show commented tasks only",
412
426
  lambda { |value|
413
427
  options.show_all_tasks = !value
414
428
  }
415
429
  ],
416
- ['--describe', '-D [PATTERN]',
430
+ ["--describe", "-D [PATTERN]",
417
431
  "Describe the tasks (matching optional PATTERN), then exit.",
418
432
  lambda { |value|
419
433
  select_tasks_to_show(options, :describe, value)
420
434
  }
421
435
  ],
422
- ['--dry-run', '-n',
436
+ ["--dry-run", "-n",
423
437
  "Do a dry run without executing actions.",
424
438
  lambda { |value|
425
439
  Rake.verbose(true)
@@ -428,31 +442,31 @@ module Rake
428
442
  options.trace = true
429
443
  }
430
444
  ],
431
- ['--execute', '-e CODE',
445
+ ["--execute", "-e CODE",
432
446
  "Execute some Ruby code and exit.",
433
447
  lambda { |value|
434
448
  eval(value)
435
449
  exit
436
450
  }
437
451
  ],
438
- ['--execute-print', '-p CODE',
452
+ ["--execute-print", "-p CODE",
439
453
  "Execute some Ruby code, print the result, then exit.",
440
454
  lambda { |value|
441
455
  puts eval(value)
442
456
  exit
443
457
  }
444
458
  ],
445
- ['--execute-continue', '-E CODE',
459
+ ["--execute-continue", "-E CODE",
446
460
  "Execute some Ruby code, " +
447
461
  "then continue with normal task processing.",
448
462
  lambda { |value| eval(value) }
449
463
  ],
450
- ['--jobs', '-j [NUMBER]',
464
+ ["--jobs", "-j [NUMBER]",
451
465
  "Specifies the maximum number of tasks to execute in parallel. " +
452
466
  "(default is number of CPU cores + 4)",
453
467
  lambda { |value|
454
- if value.nil? || value == ''
455
- value = FIXNUM_MAX
468
+ if value.nil? || value == ""
469
+ value = Float::INFINITY
456
470
  elsif value =~ /^\d+$/
457
471
  value = value.to_i
458
472
  else
@@ -462,7 +476,7 @@ module Rake
462
476
  options.thread_pool_size = value - 1
463
477
  }
464
478
  ],
465
- ['--job-stats [LEVEL]',
479
+ ["--job-stats [LEVEL]",
466
480
  "Display job statistics. " +
467
481
  "LEVEL=history displays a complete job list",
468
482
  lambda { |value|
@@ -473,42 +487,42 @@ module Rake
473
487
  end
474
488
  }
475
489
  ],
476
- ['--libdir', '-I LIBDIR',
490
+ ["--libdir", "-I LIBDIR",
477
491
  "Include LIBDIR in the search path for required modules.",
478
492
  lambda { |value| $:.push(value) }
479
493
  ],
480
- ['--multitask', '-m',
494
+ ["--multitask", "-m",
481
495
  "Treat all tasks as multitasks.",
482
496
  lambda { |value| options.always_multitask = true }
483
497
  ],
484
- ['--no-search', '--nosearch',
485
- '-N', "Do not search parent directories for the Rakefile.",
498
+ ["--no-search", "--nosearch",
499
+ "-N", "Do not search parent directories for the Rakefile.",
486
500
  lambda { |value| options.nosearch = true }
487
501
  ],
488
- ['--prereqs', '-P',
502
+ ["--prereqs", "-P",
489
503
  "Display the tasks and dependencies, then exit.",
490
504
  lambda { |value| options.show_prereqs = true }
491
505
  ],
492
- ['--quiet', '-q',
506
+ ["--quiet", "-q",
493
507
  "Do not log messages to standard output.",
494
508
  lambda { |value| Rake.verbose(false) }
495
509
  ],
496
- ['--rakefile', '-f [FILENAME]',
510
+ ["--rakefile", "-f [FILENAME]",
497
511
  "Use FILENAME as the rakefile to search for.",
498
512
  lambda { |value|
499
- value ||= ''
513
+ value ||= ""
500
514
  @rakefiles.clear
501
515
  @rakefiles << value
502
516
  }
503
517
  ],
504
- ['--rakelibdir', '--rakelib', '-R RAKELIBDIR',
518
+ ["--rakelibdir", "--rakelib", "-R RAKELIBDIR",
505
519
  "Auto-import any .rake files in RAKELIBDIR. " +
506
520
  "(default is 'rakelib')",
507
521
  lambda { |value|
508
522
  options.rakelib = value.split(File::PATH_SEPARATOR)
509
523
  }
510
524
  ],
511
- ['--require', '-r MODULE',
525
+ ["--require", "-r MODULE",
512
526
  "Require MODULE before executing rakefile.",
513
527
  lambda { |value|
514
528
  begin
@@ -522,11 +536,11 @@ module Rake
522
536
  end
523
537
  }
524
538
  ],
525
- ['--rules',
539
+ ["--rules",
526
540
  "Trace the rules resolution.",
527
541
  lambda { |value| options.trace_rules = true }
528
542
  ],
529
- ['--silent', '-s',
543
+ ["--silent", "-s",
530
544
  "Like --quiet, but also suppresses the " +
531
545
  "'in directory' announcement.",
532
546
  lambda { |value|
@@ -534,59 +548,60 @@ module Rake
534
548
  options.silent = true
535
549
  }
536
550
  ],
537
- ['--suppress-backtrace PATTERN',
551
+ ["--suppress-backtrace PATTERN",
538
552
  "Suppress backtrace lines matching regexp PATTERN. " +
539
553
  "Ignored if --trace is on.",
540
554
  lambda { |value|
541
555
  options.suppress_backtrace_pattern = Regexp.new(value)
542
556
  }
543
557
  ],
544
- ['--system', '-g',
558
+ ["--system", "-g",
545
559
  "Using system wide (global) rakefiles " +
546
560
  "(usually '~/.rake/*.rake').",
547
561
  lambda { |value| options.load_system = true }
548
562
  ],
549
- ['--no-system', '--nosystem', '-G',
563
+ ["--no-system", "--nosystem", "-G",
550
564
  "Use standard project Rakefile search paths, " +
551
565
  "ignore system wide rakefiles.",
552
566
  lambda { |value| options.ignore_system = true }
553
567
  ],
554
- ['--tasks', '-T [PATTERN]',
568
+ ["--tasks", "-T [PATTERN]",
555
569
  "Display the tasks (matching optional PATTERN) " +
556
- "with descriptions, then exit.",
570
+ "with descriptions, then exit. " +
571
+ "-AT combination displays all of tasks contained no description.",
557
572
  lambda { |value|
558
573
  select_tasks_to_show(options, :tasks, value)
559
574
  }
560
575
  ],
561
- ['--trace=[OUT]', '-t',
576
+ ["--trace=[OUT]", "-t",
562
577
  "Turn on invoke/execute tracing, enable full backtrace. " +
563
578
  "OUT can be stderr (default) or stdout.",
564
579
  lambda { |value|
565
580
  options.trace = true
566
581
  options.backtrace = true
567
- select_trace_output(options, 'trace', value)
582
+ select_trace_output(options, "trace", value)
568
583
  Rake.verbose(true)
569
584
  }
570
585
  ],
571
- ['--verbose', '-v',
586
+ ["--verbose", "-v",
572
587
  "Log message to standard output.",
573
588
  lambda { |value| Rake.verbose(true) }
574
589
  ],
575
- ['--version', '-V',
590
+ ["--version", "-V",
576
591
  "Display the program version.",
577
592
  lambda { |value|
578
- puts "rake, version #{RAKEVERSION}"
593
+ puts "rake, version #{Rake::VERSION}"
579
594
  exit
580
595
  }
581
596
  ],
582
- ['--where', '-W [PATTERN]',
597
+ ["--where", "-W [PATTERN]",
583
598
  "Describe the tasks (matching optional PATTERN), then exit.",
584
599
  lambda { |value|
585
600
  select_tasks_to_show(options, :lines, value)
586
601
  options.show_all_tasks = true
587
602
  }
588
603
  ],
589
- ['--no-deprecation-warnings', '-X',
604
+ ["--no-deprecation-warnings", "-X",
590
605
  "Disable the deprecation warnings.",
591
606
  lambda { |value|
592
607
  options.ignore_deprecate = true
@@ -597,7 +612,7 @@ module Rake
597
612
 
598
613
  def select_tasks_to_show(options, show_tasks, value) # :nodoc:
599
614
  options.show_tasks = show_tasks
600
- options.show_task_pattern = Regexp.new(value || '')
615
+ options.show_task_pattern = Regexp.new(value || "")
601
616
  Rake::TaskManager.record_task_metadata = true
602
617
  end
603
618
  private :select_tasks_to_show
@@ -605,9 +620,9 @@ module Rake
605
620
  def select_trace_output(options, trace_option, value) # :nodoc:
606
621
  value = value.strip unless value.nil?
607
622
  case value
608
- when 'stdout'
623
+ when "stdout"
609
624
  options.trace_output = $stdout
610
- when 'stderr', nil
625
+ when "stderr", nil
611
626
  options.trace_output = $stderr
612
627
  else
613
628
  fail CommandLineOptionError,
@@ -619,9 +634,8 @@ module Rake
619
634
  # Read and handle the command line options. Returns the command line
620
635
  # arguments that we didn't understand, which should (in theory) be just
621
636
  # task names and env vars.
622
- def handle_options # :nodoc:
623
- options.rakelib = ['rakelib']
624
- options.trace_output = $stderr
637
+ def handle_options(argv) # :nodoc:
638
+ set_default_options
625
639
 
626
640
  OptionParser.new do |opts|
627
641
  opts.banner = "#{Rake.application.name} [-f rakefile] {options} targets..."
@@ -634,8 +648,8 @@ module Rake
634
648
  end
635
649
 
636
650
  standard_rake_options.each { |args| opts.on(*args) }
637
- opts.environment('RAKEOPT')
638
- end.parse(ARGV)
651
+ opts.environment("RAKEOPT")
652
+ end.parse(argv)
639
653
  end
640
654
 
641
655
  # Similar to the regular Ruby +require+ command, but will check
@@ -673,7 +687,7 @@ module Rake
673
687
 
674
688
  def raw_load_rakefile # :nodoc:
675
689
  rakefile, location = find_rakefile_location
676
- if (! options.ignore_system) &&
690
+ if (!options.ignore_system) &&
677
691
  (options.load_system || rakefile.nil?) &&
678
692
  system_dir && File.directory?(system_dir)
679
693
  print_rakefile_directory(location)
@@ -687,7 +701,7 @@ module Rake
687
701
  Dir.chdir(location)
688
702
  print_rakefile_directory(location)
689
703
  Rake.load_rakefile(File.expand_path(@rakefile)) if
690
- @rakefile && @rakefile != ''
704
+ @rakefile && @rakefile != ""
691
705
  options.rakelib.each do |rlib|
692
706
  glob("#{rlib}/*.rake") do |name|
693
707
  add_import name
@@ -698,7 +712,7 @@ module Rake
698
712
  end
699
713
 
700
714
  def glob(path, &block) # :nodoc:
701
- FileList.glob(path.gsub("\\", '/')).each(&block)
715
+ FileList.glob(path.tr("\\", "/")).each(&block)
702
716
  end
703
717
  private :glob
704
718
 
@@ -706,8 +720,8 @@ module Rake
706
720
  def system_dir # :nodoc:
707
721
  @system_dir ||=
708
722
  begin
709
- if ENV['RAKE_SYSTEM']
710
- ENV['RAKE_SYSTEM']
723
+ if ENV["RAKE_SYSTEM"]
724
+ ENV["RAKE_SYSTEM"]
711
725
  else
712
726
  standard_system_dir
713
727
  end
@@ -721,7 +735,7 @@ module Rake
721
735
  end
722
736
  else
723
737
  def standard_system_dir #:nodoc:
724
- File.join(File.expand_path('~'), '.rake')
738
+ File.join(File.expand_path("~"), ".rake")
725
739
  end
726
740
  end
727
741
  private :standard_system_dir
@@ -780,11 +794,31 @@ module Rake
780
794
  re = /^#{@rakefile}$/
781
795
  re = /#{re.source}/i if windows?
782
796
 
783
- backtrace.find { |str| str =~ re } || ''
797
+ backtrace.find { |str| str =~ re } || ""
798
+ end
799
+
800
+ def set_default_options # :nodoc:
801
+ options.always_multitask = false
802
+ options.backtrace = false
803
+ options.build_all = false
804
+ options.dryrun = false
805
+ options.ignore_deprecate = false
806
+ options.ignore_system = false
807
+ options.job_stats = false
808
+ options.load_system = false
809
+ options.nosearch = false
810
+ options.rakelib = %w[rakelib]
811
+ options.show_all_tasks = false
812
+ options.show_prereqs = false
813
+ options.show_task_pattern = nil
814
+ options.show_tasks = nil
815
+ options.silent = false
816
+ options.suppress_backtrace_pattern = nil
817
+ options.thread_pool_size = Rake.suggested_thread_count
818
+ options.trace = false
819
+ options.trace_output = $stderr
820
+ options.trace_rules = false
784
821
  end
785
822
 
786
- private
787
- FIXNUM_MAX = (2**(0.size * 8 - 2) - 1) # :nodoc:
788
-
789
823
  end
790
824
  end