rake 0.9.2.2 → 13.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +7 -0
  2. data/History.rdoc +2403 -0
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +64 -106
  5. data/doc/command_line_usage.rdoc +65 -21
  6. data/doc/glossary.rdoc +40 -49
  7. data/doc/jamis.rb +1 -0
  8. data/doc/rake.1 +156 -0
  9. data/doc/rakefile.rdoc +127 -62
  10. data/{bin → exe}/rake +1 -7
  11. data/lib/rake/application.rb +507 -271
  12. data/lib/rake/backtrace.rb +24 -0
  13. data/lib/rake/clean.rb +54 -8
  14. data/lib/rake/cloneable.rb +11 -19
  15. data/lib/rake/cpu_counter.rb +107 -0
  16. data/lib/rake/default_loader.rb +5 -0
  17. data/lib/rake/dsl_definition.rb +67 -48
  18. data/lib/rake/early_time.rb +5 -1
  19. data/lib/rake/ext/core.rb +5 -6
  20. data/lib/rake/ext/string.rb +61 -52
  21. data/lib/rake/file_creation_task.rb +4 -3
  22. data/lib/rake/file_list.rb +81 -49
  23. data/lib/rake/file_task.rb +15 -8
  24. data/lib/rake/file_utils.rb +63 -43
  25. data/lib/rake/file_utils_ext.rb +14 -25
  26. data/lib/rake/invocation_chain.rb +25 -19
  27. data/lib/rake/invocation_exception_mixin.rb +1 -0
  28. data/lib/rake/late_time.rb +18 -0
  29. data/lib/rake/linked_list.rb +112 -0
  30. data/lib/rake/loaders/makefile.rb +23 -9
  31. data/lib/rake/multi_task.rb +4 -6
  32. data/lib/rake/name_space.rb +36 -23
  33. data/lib/rake/packagetask.rb +71 -34
  34. data/lib/rake/phony.rb +16 -0
  35. data/lib/rake/private_reader.rb +21 -0
  36. data/lib/rake/promise.rb +100 -0
  37. data/lib/rake/pseudo_status.rb +8 -2
  38. data/lib/rake/rake_module.rb +41 -3
  39. data/lib/rake/rake_test_loader.rb +9 -4
  40. data/lib/rake/rule_recursion_overflow_error.rb +2 -2
  41. data/lib/rake/scope.rb +43 -0
  42. data/lib/rake/task.rb +186 -79
  43. data/lib/rake/task_argument_error.rb +1 -0
  44. data/lib/rake/task_arguments.rb +46 -15
  45. data/lib/rake/task_manager.rb +91 -67
  46. data/lib/rake/tasklib.rb +2 -12
  47. data/lib/rake/testtask.rb +61 -63
  48. data/lib/rake/thread_history_display.rb +49 -0
  49. data/lib/rake/thread_pool.rb +163 -0
  50. data/lib/rake/trace_output.rb +23 -0
  51. data/lib/rake/version.rb +5 -3
  52. data/lib/rake/win32.rb +14 -18
  53. data/lib/rake.rb +35 -33
  54. data/rake.gemspec +100 -0
  55. metadata +74 -176
  56. data/.gemtest +0 -0
  57. data/CHANGES +0 -522
  58. data/Rakefile +0 -369
  59. data/TODO +0 -20
  60. data/doc/rake.1.gz +0 -0
  61. data/doc/release_notes/rake-0.4.14.rdoc +0 -23
  62. data/doc/release_notes/rake-0.4.15.rdoc +0 -35
  63. data/doc/release_notes/rake-0.5.0.rdoc +0 -53
  64. data/doc/release_notes/rake-0.5.3.rdoc +0 -78
  65. data/doc/release_notes/rake-0.5.4.rdoc +0 -46
  66. data/doc/release_notes/rake-0.6.0.rdoc +0 -141
  67. data/doc/release_notes/rake-0.7.0.rdoc +0 -119
  68. data/doc/release_notes/rake-0.7.1.rdoc +0 -59
  69. data/doc/release_notes/rake-0.7.2.rdoc +0 -121
  70. data/doc/release_notes/rake-0.7.3.rdoc +0 -47
  71. data/doc/release_notes/rake-0.8.0.rdoc +0 -114
  72. data/doc/release_notes/rake-0.8.2.rdoc +0 -165
  73. data/doc/release_notes/rake-0.8.3.rdoc +0 -112
  74. data/doc/release_notes/rake-0.8.4.rdoc +0 -147
  75. data/doc/release_notes/rake-0.8.5.rdoc +0 -53
  76. data/doc/release_notes/rake-0.8.6.rdoc +0 -55
  77. data/doc/release_notes/rake-0.8.7.rdoc +0 -55
  78. data/doc/release_notes/rake-0.9.0.rdoc +0 -112
  79. data/doc/release_notes/rake-0.9.1.rdoc +0 -52
  80. data/doc/release_notes/rake-0.9.2.rdoc +0 -49
  81. data/install.rb +0 -90
  82. data/lib/rake/alt_system.rb +0 -109
  83. data/lib/rake/classic_namespace.rb +0 -11
  84. data/lib/rake/contrib/compositepublisher.rb +0 -21
  85. data/lib/rake/contrib/ftptools.rb +0 -150
  86. data/lib/rake/contrib/publisher.rb +0 -73
  87. data/lib/rake/contrib/rubyforgepublisher.rb +0 -16
  88. data/lib/rake/contrib/sshpublisher.rb +0 -50
  89. data/lib/rake/contrib/sys.rb +0 -191
  90. data/lib/rake/ext/module.rb +0 -39
  91. data/lib/rake/ext/time.rb +0 -14
  92. data/lib/rake/gempackagetask.rb +0 -15
  93. data/lib/rake/pathmap.rb +0 -1
  94. data/lib/rake/rdoctask.rb +0 -234
  95. data/lib/rake/ruby182_test_unit_fix.rb +0 -25
  96. data/lib/rake/runtest.rb +0 -21
  97. data/test/file_creation.rb +0 -34
  98. data/test/helper.rb +0 -492
  99. data/test/test_rake.rb +0 -40
  100. data/test/test_rake_application.rb +0 -489
  101. data/test/test_rake_application_options.rb +0 -335
  102. data/test/test_rake_clean.rb +0 -14
  103. data/test/test_rake_definitions.rb +0 -80
  104. data/test/test_rake_directory_task.rb +0 -46
  105. data/test/test_rake_dsl.rb +0 -77
  106. data/test/test_rake_early_time.rb +0 -31
  107. data/test/test_rake_extension.rb +0 -59
  108. data/test/test_rake_file_creation_task.rb +0 -56
  109. data/test/test_rake_file_list.rb +0 -628
  110. data/test/test_rake_file_list_path_map.rb +0 -8
  111. data/test/test_rake_file_task.rb +0 -102
  112. data/test/test_rake_file_utils.rb +0 -305
  113. data/test/test_rake_ftp_file.rb +0 -59
  114. data/test/test_rake_functional.rb +0 -450
  115. data/test/test_rake_invocation_chain.rb +0 -52
  116. data/test/test_rake_makefile_loader.rb +0 -44
  117. data/test/test_rake_multi_task.rb +0 -51
  118. data/test/test_rake_name_space.rb +0 -43
  119. data/test/test_rake_package_task.rb +0 -79
  120. data/test/test_rake_path_map.rb +0 -157
  121. data/test/test_rake_path_map_explode.rb +0 -34
  122. data/test/test_rake_path_map_partial.rb +0 -18
  123. data/test/test_rake_pseudo_status.rb +0 -21
  124. data/test/test_rake_rake_test_loader.rb +0 -21
  125. data/test/test_rake_rdoc_task.rb +0 -83
  126. data/test/test_rake_require.rb +0 -40
  127. data/test/test_rake_rules.rb +0 -327
  128. data/test/test_rake_task.rb +0 -267
  129. data/test/test_rake_task_argument_parsing.rb +0 -103
  130. data/test/test_rake_task_arguments.rb +0 -88
  131. data/test/test_rake_task_lib.rb +0 -9
  132. data/test/test_rake_task_manager.rb +0 -157
  133. data/test/test_rake_task_manager_argument_resolution.rb +0 -36
  134. data/test/test_rake_task_with_arguments.rb +0 -173
  135. data/test/test_rake_test_task.rb +0 -120
  136. data/test/test_rake_top_level_functions.rb +0 -111
  137. data/test/test_rake_win32.rb +0 -72
  138. data/test/test_sys.rb +0 -20
@@ -0,0 +1,163 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rake/promise"
4
+
5
+ module Rake
6
+
7
+ class ThreadPool # :nodoc: all
8
+
9
+ # Creates a ThreadPool object. The +thread_count+ parameter is the size
10
+ # of the pool.
11
+ def initialize(thread_count)
12
+ require "set"
13
+ @max_active_threads = [thread_count, 0].max
14
+ @threads = Set.new
15
+ @threads_mon = Monitor.new
16
+ @queue = Queue.new
17
+ @join_cond = @threads_mon.new_cond
18
+
19
+ @history_start_time = nil
20
+ @history = []
21
+ @history_mon = Monitor.new
22
+ @total_threads_in_play = 0
23
+ end
24
+
25
+ # Creates a future executed by the +ThreadPool+.
26
+ #
27
+ # The args are passed to the block when executing (similarly to
28
+ # Thread#new) The return value is an object representing
29
+ # a future which has been created and added to the queue in the
30
+ # pool. Sending #value to the object will sleep the
31
+ # current thread until the future is finished and will return the
32
+ # result (or raise an exception thrown from the future)
33
+ def future(*args, &block)
34
+ promise = Promise.new(args, &block)
35
+ promise.recorder = lambda { |*stats| stat(*stats) }
36
+
37
+ @queue.enq promise
38
+ stat :queued, item_id: promise.object_id
39
+ start_thread
40
+ promise
41
+ end
42
+
43
+ # Waits until the queue of futures is empty and all threads have exited.
44
+ def join
45
+ @threads_mon.synchronize do
46
+ begin
47
+ stat :joining
48
+ @join_cond.wait unless @threads.empty?
49
+ stat :joined
50
+ rescue Exception => e
51
+ stat :joined
52
+ $stderr.puts e
53
+ $stderr.print "Queue contains #{@queue.size} items. " +
54
+ "Thread pool contains #{@threads.count} threads\n"
55
+ $stderr.print "Current Thread #{Thread.current} status = " +
56
+ "#{Thread.current.status}\n"
57
+ $stderr.puts e.backtrace.join("\n")
58
+ @threads.each do |t|
59
+ $stderr.print "Thread #{t} status = #{t.status}\n"
60
+ $stderr.puts t.backtrace.join("\n")
61
+ end
62
+ raise e
63
+ end
64
+ end
65
+ end
66
+
67
+ # Enable the gathering of history events.
68
+ def gather_history #:nodoc:
69
+ @history_start_time = Time.now if @history_start_time.nil?
70
+ end
71
+
72
+ # Return a array of history events for the thread pool.
73
+ #
74
+ # History gathering must be enabled to be able to see the events
75
+ # (see #gather_history). Best to call this when the job is
76
+ # complete (i.e. after ThreadPool#join is called).
77
+ def history # :nodoc:
78
+ @history_mon.synchronize { @history.dup }.
79
+ sort_by { |i| i[:time] }.
80
+ each { |i| i[:time] -= @history_start_time }
81
+ end
82
+
83
+ # Return a hash of always collected statistics for the thread pool.
84
+ def statistics # :nodoc:
85
+ {
86
+ total_threads_in_play: @total_threads_in_play,
87
+ max_active_threads: @max_active_threads,
88
+ }
89
+ end
90
+
91
+ private
92
+
93
+ # processes one item on the queue. Returns true if there was an
94
+ # item to process, false if there was no item
95
+ def process_queue_item #:nodoc:
96
+ return false if @queue.empty?
97
+
98
+ # Even though we just asked if the queue was empty, it
99
+ # still could have had an item which by this statement
100
+ # is now gone. For this reason we pass true to Queue#deq
101
+ # because we will sleep indefinitely if it is empty.
102
+ promise = @queue.deq(true)
103
+ stat :dequeued, item_id: promise.object_id
104
+ promise.work
105
+ return true
106
+
107
+ rescue ThreadError # this means the queue is empty
108
+ false
109
+ end
110
+
111
+ def safe_thread_count
112
+ @threads_mon.synchronize do
113
+ @threads.count
114
+ end
115
+ end
116
+
117
+ def start_thread # :nodoc:
118
+ @threads_mon.synchronize do
119
+ next unless @threads.count < @max_active_threads
120
+
121
+ t = Thread.new do
122
+ begin
123
+ while safe_thread_count <= @max_active_threads
124
+ break unless process_queue_item
125
+ end
126
+ ensure
127
+ @threads_mon.synchronize do
128
+ @threads.delete Thread.current
129
+ stat :ended, thread_count: @threads.count
130
+ @join_cond.broadcast if @threads.empty?
131
+ end
132
+ end
133
+ end
134
+
135
+ @threads << t
136
+ stat(
137
+ :spawned,
138
+ new_thread: t.object_id,
139
+ thread_count: @threads.count)
140
+ @total_threads_in_play = @threads.count if
141
+ @threads.count > @total_threads_in_play
142
+ end
143
+ end
144
+
145
+ def stat(event, data=nil) # :nodoc:
146
+ return if @history_start_time.nil?
147
+ info = {
148
+ event: event,
149
+ data: data,
150
+ time: Time.now,
151
+ thread: Thread.current.object_id,
152
+ }
153
+ @history_mon.synchronize { @history << info }
154
+ end
155
+
156
+ # for testing only
157
+
158
+ def __queue__ # :nodoc:
159
+ @queue
160
+ end
161
+ end
162
+
163
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+ module Rake
3
+ module TraceOutput # :nodoc: all
4
+
5
+ # Write trace output to output stream +out+.
6
+ #
7
+ # The write is done as a single IO call (to print) to lessen the
8
+ # chance that the trace output is interrupted by other tasks also
9
+ # producing output.
10
+ def trace_on(out, *strings)
11
+ sep = $\ || "\n"
12
+ if strings.empty?
13
+ output = sep
14
+ else
15
+ output = strings.map { |s|
16
+ next if s.nil?
17
+ s.end_with?(sep) ? s : s + sep
18
+ }.join
19
+ end
20
+ out.print(output)
21
+ end
22
+ end
23
+ end
data/lib/rake/version.rb CHANGED
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
- VERSION = '0.9.2.2'
3
+ VERSION = "13.0.6"
3
4
 
4
5
  module Version # :nodoc: all
5
- MAJOR, MINOR, BUILD, PATCH = VERSION.split('.')
6
- NUMBERS = [ MAJOR, MINOR, BUILD, PATCH ]
6
+ MAJOR, MINOR, BUILD, *OTHER = Rake::VERSION.split "."
7
+
8
+ NUMBERS = [MAJOR, MINOR, BUILD, *OTHER]
7
9
  end
8
10
  end
data/lib/rake/win32.rb CHANGED
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+ require "rbconfig"
1
3
 
2
4
  module Rake
3
- require 'rake/alt_system'
4
-
5
5
  # Win 32 interface methods for Rake. Windows specific functionality
6
6
  # will be placed here to collect that knowledge in one spot.
7
- module Win32
7
+ module Win32 # :nodoc: all
8
8
 
9
9
  # Error indicating a problem in locating the home directory on a
10
10
  # Win32 system.
@@ -14,12 +14,7 @@ module Rake
14
14
  class << self
15
15
  # True if running on a windows system.
16
16
  def windows?
17
- AltSystem::WINDOWS
18
- end
19
-
20
- # Run a command line on windows.
21
- def rake_system(*cmd)
22
- AltSystem.system(*cmd)
17
+ RbConfig::CONFIG["host_os"] =~ %r!(msdos|mswin|djgpp|mingw|[Ww]indows)!
23
18
  end
24
19
 
25
20
  # The standard directory containing system wide rake files on
@@ -33,21 +28,22 @@ module Rake
33
28
  #
34
29
  # If the above are not defined, the return nil.
35
30
  def win32_system_dir #:nodoc:
36
- win32_shared_path = ENV['HOME']
37
- if win32_shared_path.nil? && ENV['HOMEDRIVE'] && ENV['HOMEPATH']
38
- win32_shared_path = ENV['HOMEDRIVE'] + ENV['HOMEPATH']
31
+ win32_shared_path = ENV["HOME"]
32
+ if win32_shared_path.nil? && ENV["HOMEDRIVE"] && ENV["HOMEPATH"]
33
+ win32_shared_path = ENV["HOMEDRIVE"] + ENV["HOMEPATH"]
39
34
  end
40
35
 
41
- win32_shared_path ||= ENV['APPDATA']
42
- win32_shared_path ||= ENV['USERPROFILE']
43
- raise Win32HomeError, "Unable to determine home path environment variable." if
44
- win32_shared_path.nil? or win32_shared_path.empty?
45
- normalize(File.join(win32_shared_path, 'Rake'))
36
+ win32_shared_path ||= ENV["APPDATA"]
37
+ win32_shared_path ||= ENV["USERPROFILE"]
38
+ raise Win32HomeError,
39
+ "Unable to determine home path environment variable." if
40
+ win32_shared_path.nil? or win32_shared_path.empty?
41
+ normalize(File.join(win32_shared_path, "Rake"))
46
42
  end
47
43
 
48
44
  # Normalize a win32 path so that the slashes are all forward slashes.
49
45
  def normalize(path)
50
- path.gsub(/\\/, '/')
46
+ path.gsub(/\\/, "/")
51
47
  end
52
48
 
53
49
  end
data/lib/rake.rb CHANGED
@@ -1,5 +1,5 @@
1
+ # frozen_string_literal: true
1
2
  #--
2
-
3
3
  # Copyright 2003-2010 by Jim Weirich (jim.weirich@gmail.com)
4
4
  #
5
5
  # Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -21,43 +21,45 @@
21
21
  # IN THE SOFTWARE.
22
22
  #++
23
23
 
24
- require 'rake/version'
24
+ module Rake; end
25
25
 
26
- # :stopdoc:
27
- RAKEVERSION = Rake::VERSION
28
- # :startdoc:
26
+ require "rake/version"
29
27
 
30
- require 'rbconfig'
31
- require 'fileutils'
32
- require 'singleton'
33
- require 'monitor'
34
- require 'optparse'
35
- require 'ostruct'
28
+ require "rbconfig"
29
+ require "fileutils"
30
+ require "singleton"
31
+ require "monitor"
32
+ require "optparse"
33
+ require "ostruct"
36
34
 
37
- require 'rake/ext/module'
38
- require 'rake/ext/string'
39
- require 'rake/ext/time'
35
+ require "rake/ext/string"
40
36
 
41
- require 'rake/win32'
37
+ require "rake/win32"
42
38
 
43
- require 'rake/task_argument_error'
44
- require 'rake/rule_recursion_overflow_error'
45
- require 'rake/rake_module'
46
- require 'rake/pseudo_status'
47
- require 'rake/task_arguments'
48
- require 'rake/invocation_chain'
49
- require 'rake/task'
50
- require 'rake/file_task'
51
- require 'rake/file_creation_task'
52
- require 'rake/multi_task'
53
- require 'rake/dsl_definition'
54
- require 'rake/file_utils_ext'
55
- require 'rake/file_list'
56
- require 'rake/default_loader'
57
- require 'rake/early_time'
58
- require 'rake/name_space'
59
- require 'rake/task_manager'
60
- require 'rake/application'
39
+ require "rake/linked_list"
40
+ require "rake/cpu_counter"
41
+ require "rake/scope"
42
+ require "rake/task_argument_error"
43
+ require "rake/rule_recursion_overflow_error"
44
+ require "rake/rake_module"
45
+ require "rake/trace_output"
46
+ require "rake/pseudo_status"
47
+ require "rake/task_arguments"
48
+ require "rake/invocation_chain"
49
+ require "rake/task"
50
+ require "rake/file_task"
51
+ require "rake/file_creation_task"
52
+ require "rake/multi_task"
53
+ require "rake/dsl_definition"
54
+ require "rake/file_utils_ext"
55
+ require "rake/file_list"
56
+ require "rake/default_loader"
57
+ require "rake/early_time"
58
+ require "rake/late_time"
59
+ require "rake/name_space"
60
+ require "rake/task_manager"
61
+ require "rake/application"
62
+ require "rake/backtrace"
61
63
 
62
64
  $trace = false
63
65
 
data/rake.gemspec ADDED
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+ require_relative 'lib/rake/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "rake".freeze
6
+ s.version = Rake::VERSION
7
+ s.authors = ["Hiroshi SHIBATA".freeze, "Eric Hodel".freeze, "Jim Weirich".freeze]
8
+ s.email = ["hsbt@ruby-lang.org".freeze, "drbrain@segment7.net".freeze, "".freeze]
9
+
10
+ s.summary = "Rake is a Make-like program implemented in Ruby".freeze
11
+ s.description = <<-DESCRIPTION
12
+ Rake is a Make-like program implemented in Ruby. Tasks and dependencies are
13
+ specified in standard Ruby syntax.
14
+ Rake has the following features:
15
+ * Rakefiles (rake's version of Makefiles) are completely defined in standard Ruby syntax.
16
+ No XML files to edit. No quirky Makefile syntax to worry about (is that a tab or a space?)
17
+ * Users can specify tasks with prerequisites.
18
+ * Rake supports rule patterns to synthesize implicit tasks.
19
+ * Flexible FileLists that act like arrays but know about manipulating file names and paths.
20
+ * Supports parallel execution of tasks.
21
+ DESCRIPTION
22
+ s.homepage = "https://github.com/ruby/rake".freeze
23
+ s.licenses = ["MIT".freeze]
24
+
25
+ s.metadata = {
26
+ "bug_tracker_uri" => "https://github.com/ruby/rake/issues",
27
+ "changelog_uri" => "https://github.com/ruby/rake/blob/v#{s.version}/History.rdoc",
28
+ "documentation_uri" => "https://ruby.github.io/rake",
29
+ "source_code_uri" => "https://github.com/ruby/rake/tree/v#{s.version}",
30
+ }
31
+
32
+ s.files = [
33
+ "History.rdoc",
34
+ "MIT-LICENSE",
35
+ "README.rdoc",
36
+ "doc/command_line_usage.rdoc",
37
+ "doc/example/Rakefile1",
38
+ "doc/example/Rakefile2",
39
+ "doc/example/a.c",
40
+ "doc/example/b.c",
41
+ "doc/example/main.c",
42
+ "doc/glossary.rdoc",
43
+ "doc/jamis.rb",
44
+ "doc/proto_rake.rdoc",
45
+ "doc/rake.1",
46
+ "doc/rakefile.rdoc",
47
+ "doc/rational.rdoc",
48
+ "exe/rake",
49
+ "lib/rake.rb",
50
+ "lib/rake/application.rb",
51
+ "lib/rake/backtrace.rb",
52
+ "lib/rake/clean.rb",
53
+ "lib/rake/cloneable.rb",
54
+ "lib/rake/cpu_counter.rb",
55
+ "lib/rake/default_loader.rb",
56
+ "lib/rake/dsl_definition.rb",
57
+ "lib/rake/early_time.rb",
58
+ "lib/rake/ext/core.rb",
59
+ "lib/rake/ext/string.rb",
60
+ "lib/rake/file_creation_task.rb",
61
+ "lib/rake/file_list.rb",
62
+ "lib/rake/file_task.rb",
63
+ "lib/rake/file_utils.rb",
64
+ "lib/rake/file_utils_ext.rb",
65
+ "lib/rake/invocation_chain.rb",
66
+ "lib/rake/invocation_exception_mixin.rb",
67
+ "lib/rake/late_time.rb",
68
+ "lib/rake/linked_list.rb",
69
+ "lib/rake/loaders/makefile.rb",
70
+ "lib/rake/multi_task.rb",
71
+ "lib/rake/name_space.rb",
72
+ "lib/rake/packagetask.rb",
73
+ "lib/rake/phony.rb",
74
+ "lib/rake/private_reader.rb",
75
+ "lib/rake/promise.rb",
76
+ "lib/rake/pseudo_status.rb",
77
+ "lib/rake/rake_module.rb",
78
+ "lib/rake/rake_test_loader.rb",
79
+ "lib/rake/rule_recursion_overflow_error.rb",
80
+ "lib/rake/scope.rb",
81
+ "lib/rake/task.rb",
82
+ "lib/rake/task_argument_error.rb",
83
+ "lib/rake/task_arguments.rb",
84
+ "lib/rake/task_manager.rb",
85
+ "lib/rake/tasklib.rb",
86
+ "lib/rake/testtask.rb",
87
+ "lib/rake/thread_history_display.rb",
88
+ "lib/rake/thread_pool.rb",
89
+ "lib/rake/trace_output.rb",
90
+ "lib/rake/version.rb",
91
+ "lib/rake/win32.rb",
92
+ "rake.gemspec"
93
+ ]
94
+ s.bindir = "exe"
95
+ s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
96
+ s.require_paths = ["lib".freeze]
97
+
98
+ s.required_ruby_version = Gem::Requirement.new(">= 2.2".freeze)
99
+ s.rdoc_options = ["--main".freeze, "README.rdoc".freeze]
100
+ end