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,5 +1,6 @@
1
- require 'rake/task.rb'
2
- require 'rake/early_time'
1
+ # frozen_string_literal: true
2
+ require "rake/task"
3
+ require "rake/early_time"
3
4
 
4
5
  module Rake
5
6
 
@@ -13,7 +14,7 @@ module Rake
13
14
  # Is this file task needed? Yes if it doesn't exist, or if its time stamp
14
15
  # is out of date.
15
16
  def needed?
16
- ! File.exist?(name) || out_of_date?(timestamp) || @application.options.build_all
17
+ !File.exist?(name) || out_of_date?(timestamp) || @application.options.build_all
17
18
  end
18
19
 
19
20
  # Time stamp for file task.
@@ -29,7 +30,14 @@ module Rake
29
30
 
30
31
  # Are there any prerequisites with a later time than the given time stamp?
31
32
  def out_of_date?(stamp)
32
- @prerequisites.any? { |n| application[n, @scope].timestamp > stamp }
33
+ all_prerequisite_tasks.any? { |prereq|
34
+ prereq_task = application[prereq, @scope]
35
+ if prereq_task.instance_of?(Rake::FileTask)
36
+ prereq_task.timestamp > stamp || @application.options.build_all
37
+ else
38
+ prereq_task.timestamp > stamp
39
+ end
40
+ }
33
41
  end
34
42
 
35
43
  # ----------------------------------------------------------------
@@ -1,19 +1,17 @@
1
- require 'rbconfig'
2
- require 'fileutils'
1
+ # frozen_string_literal: true
2
+ require "rbconfig"
3
+ require "fileutils"
3
4
 
4
5
  #--
5
6
  # This a FileUtils extension that defines several additional commands to be
6
7
  # added to the FileUtils utility functions.
7
8
  module FileUtils
8
9
  # Path to the currently running Ruby program
9
- RUBY = ENV['RUBY'] || File.join(
10
- RbConfig::CONFIG['bindir'],
11
- RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']).
10
+ RUBY = ENV["RUBY"] || File.join(
11
+ RbConfig::CONFIG["bindir"],
12
+ RbConfig::CONFIG["ruby_install_name"] + RbConfig::CONFIG["EXEEXT"]).
12
13
  sub(/.*\s.*/m, '"\&"')
13
14
 
14
- OPT_TABLE['sh'] = %w(noop verbose)
15
- OPT_TABLE['ruby'] = %w(noop verbose)
16
-
17
15
  # Run the system command +cmd+. If multiple arguments are given the command
18
16
  # is run directly (without the shell, same semantics as Kernel::exec and
19
17
  # Kernel::system).
@@ -37,7 +35,7 @@ module FileUtils
37
35
  #
38
36
  # # check exit status after command runs
39
37
  # sh %{grep pattern file} do |ok, res|
40
- # if ! ok
38
+ # if !ok
41
39
  # puts "pattern not found (status = #{res.exitstatus})"
42
40
  # end
43
41
  # end
@@ -45,13 +43,15 @@ module FileUtils
45
43
  def sh(*cmd, &block)
46
44
  options = (Hash === cmd.last) ? cmd.pop : {}
47
45
  shell_runner = block_given? ? block : create_shell_runner(cmd)
46
+
48
47
  set_verbose_option(options)
49
- options[:noop] ||= Rake::FileUtilsExt.nowrite_flag
50
- Rake.rake_check_options options, :noop, :verbose
51
- Rake.rake_output_message cmd.join(" ") if options[:verbose]
48
+ verbose = options.delete :verbose
49
+ noop = options.delete(:noop) || Rake::FileUtilsExt.nowrite_flag
50
+
51
+ Rake.rake_output_message sh_show_command cmd if verbose
52
52
 
53
- unless options[:noop]
54
- res = rake_system(*cmd)
53
+ unless noop
54
+ res = (Hash === cmd.last) ? system(*cmd) : system(*cmd, options)
55
55
  status = $?
56
56
  status = Rake::PseudoStatus.new(1) if !res && status.nil?
57
57
  shell_runner.call(res, status)
@@ -59,8 +59,9 @@ module FileUtils
59
59
  end
60
60
 
61
61
  def create_shell_runner(cmd) # :nodoc:
62
- show_command = cmd.join(" ")
62
+ show_command = sh_show_command cmd
63
63
  show_command = show_command[0, 42] + "..." unless $trace
64
+
64
65
  lambda do |ok, status|
65
66
  ok or
66
67
  fail "Command failed with status (#{status.exitstatus}): " +
@@ -69,6 +70,19 @@ module FileUtils
69
70
  end
70
71
  private :create_shell_runner
71
72
 
73
+ def sh_show_command(cmd) # :nodoc:
74
+ cmd = cmd.dup
75
+
76
+ if Hash === cmd.first
77
+ env = cmd.first
78
+ env = env.map { |name, value| "#{name}=#{value}" }.join " "
79
+ cmd[0] = env
80
+ end
81
+
82
+ cmd.join " "
83
+ end
84
+ private :sh_show_command
85
+
72
86
  def set_verbose_option(options) # :nodoc:
73
87
  unless options.key? :verbose
74
88
  options[:verbose] =
@@ -78,22 +92,16 @@ module FileUtils
78
92
  end
79
93
  private :set_verbose_option
80
94
 
81
- def rake_system(*cmd) # :nodoc:
82
- Rake::AltSystem.system(*cmd)
83
- end
84
- private :rake_system
85
-
86
95
  # Run a Ruby interpreter with the given arguments.
87
96
  #
88
97
  # Example:
89
98
  # ruby %{-pe '$_.upcase!' <README}
90
99
  #
91
- def ruby(*args, &block)
92
- options = (Hash === args.last) ? args.pop : {}
100
+ def ruby(*args, **options, &block)
93
101
  if args.length > 1
94
- sh(*([RUBY] + args + [options]), &block)
102
+ sh(RUBY, *args, **options, &block)
95
103
  else
96
- sh("#{RUBY} #{args.first}", options, &block)
104
+ sh("#{RUBY} #{args.first}", **options, &block)
97
105
  end
98
106
  end
99
107
 
@@ -101,17 +109,15 @@ module FileUtils
101
109
 
102
110
  # Attempt to do a normal file link, but fall back to a copy if the link
103
111
  # fails.
104
- def safe_ln(*args)
105
- if ! LN_SUPPORTED[0]
106
- cp(*args)
107
- else
112
+ def safe_ln(*args, **options)
113
+ if LN_SUPPORTED[0]
108
114
  begin
109
- ln(*args)
115
+ return options.empty? ? ln(*args) : ln(*args, **options)
110
116
  rescue StandardError, NotImplementedError
111
117
  LN_SUPPORTED[0] = false
112
- cp(*args)
113
118
  end
114
119
  end
120
+ options.empty? ? cp(*args) : cp(*args, **options)
115
121
  end
116
122
 
117
123
  # Split a file path into individual directory names.
@@ -121,8 +127,8 @@ module FileUtils
121
127
  #
122
128
  def split_all(path)
123
129
  head, tail = File.split(path)
124
- return [tail] if head == '.' || tail == '/'
125
- return [head, tail] if head == '/'
130
+ return [tail] if head == "." || tail == "/"
131
+ return [head, tail] if head == "/"
126
132
  return split_all(head) + [tail]
127
133
  end
128
134
  end
@@ -1,4 +1,5 @@
1
- require 'rake/file_utils'
1
+ # frozen_string_literal: true
2
+ require "rake/file_utils"
2
3
 
3
4
  module Rake
4
5
  #
@@ -22,19 +23,18 @@ module Rake
22
23
  opts = FileUtils.options_of name
23
24
  default_options = []
24
25
  if opts.include?("verbose")
25
- default_options << ':verbose => FileUtilsExt.verbose_flag'
26
+ default_options << "verbose: FileUtilsExt.verbose_flag"
26
27
  end
27
28
  if opts.include?("noop")
28
- default_options << ':noop => FileUtilsExt.nowrite_flag'
29
+ default_options << "noop: FileUtilsExt.nowrite_flag"
29
30
  end
30
31
 
31
32
  next if default_options.empty?
32
33
  module_eval(<<-EOS, __FILE__, __LINE__ + 1)
33
- def #{name}( *args, &block )
34
- super(
35
- *rake_merge_option(args,
36
- #{default_options.join(', ')}
37
- ), &block)
34
+ def #{name}(*args, **options, &block)
35
+ super(*args,
36
+ #{default_options.join(', ')},
37
+ **options, &block)
38
38
  end
39
39
  EOS
40
40
  end
@@ -112,16 +112,6 @@ module Rake
112
112
  end
113
113
  end
114
114
 
115
- # Merge the given options with the default values.
116
- def rake_merge_option(args, defaults)
117
- if Hash === args.last
118
- defaults.update(args.last)
119
- args.pop
120
- end
121
- args.push defaults
122
- args
123
- end
124
-
125
115
  # Send the message to the default rake output (which is $stderr).
126
116
  def rake_output_message(message)
127
117
  $stderr.puts(message)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
4
  # InvocationChain tracks the chain of task invocations to detect
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
  module InvocationExceptionMixin
3
4
  # Return the invocation chain (list of Rake tasks) that were in
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
  # LateTime is a fake timestamp that occurs _after_ any other time value.
3
4
  class LateTime
@@ -9,7 +10,7 @@ module Rake
9
10
  end
10
11
 
11
12
  def to_s
12
- '<LATE TIME>'
13
+ "<LATE TIME>"
13
14
  end
14
15
  end
15
16
 
@@ -1,17 +1,12 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
4
  # Polylithic linked list structure used to implement several data
4
5
  # structures in Rake.
5
6
  class LinkedList
6
7
  include Enumerable
7
-
8
8
  attr_reader :head, :tail
9
9
 
10
- def initialize(head, tail=EMPTY)
11
- @head = head
12
- @tail = tail
13
- end
14
-
15
10
  # Polymorphically add a new element to the head of a list. The
16
11
  # type of head node will be the same list type as the tail.
17
12
  def conj(item)
@@ -19,6 +14,9 @@ module Rake
19
14
  end
20
15
 
21
16
  # Is the list empty?
17
+ # .make guards against a list being empty making any instantiated LinkedList
18
+ # object not empty by default
19
+ # You should consider overriding this method if you implement your own .make method
22
20
  def empty?
23
21
  false
24
22
  end
@@ -26,7 +24,7 @@ module Rake
26
24
  # Lists are structurally equivalent.
27
25
  def ==(other)
28
26
  current = self
29
- while ! current.empty? && ! other.empty?
27
+ while !current.empty? && !other.empty?
30
28
  return false if current.head != other.head
31
29
  current = current.tail
32
30
  other = other.tail
@@ -36,20 +34,20 @@ module Rake
36
34
 
37
35
  # Convert to string: LL(item, item...)
38
36
  def to_s
39
- items = map { |item| item.to_s }.join(", ")
37
+ items = map(&:to_s).join(", ")
40
38
  "LL(#{items})"
41
39
  end
42
40
 
43
41
  # Same as +to_s+, but with inspected items.
44
42
  def inspect
45
- items = map { |item| item.inspect }.join(", ")
43
+ items = map(&:inspect).join(", ")
46
44
  "LL(#{items})"
47
45
  end
48
46
 
49
47
  # For each item in the list.
50
48
  def each
51
49
  current = self
52
- while ! current.empty?
50
+ while !current.empty?
53
51
  yield(current.head)
54
52
  current = current.tail
55
53
  end
@@ -59,11 +57,16 @@ module Rake
59
57
  # Make a list out of the given arguments. This method is
60
58
  # polymorphic
61
59
  def self.make(*args)
62
- result = empty
63
- args.reverse_each do |item|
64
- result = cons(item, result)
60
+ # return an EmptyLinkedList if there are no arguments
61
+ return empty if !args || args.empty?
62
+
63
+ # build a LinkedList by starting at the tail and iterating
64
+ # through each argument
65
+ # inject takes an EmptyLinkedList to start
66
+ args.reverse.inject(empty) do |list, item|
67
+ list = cons(item, list)
68
+ list # return the newly created list for each item in the block
65
69
  end
66
- result
67
70
  end
68
71
 
69
72
  # Cons a new head onto the tail list.
@@ -76,6 +79,13 @@ module Rake
76
79
  self::EMPTY
77
80
  end
78
81
 
82
+ protected
83
+
84
+ def initialize(head, tail=EMPTY)
85
+ @head = head
86
+ @tail = tail
87
+ end
88
+
79
89
  # Represent an empty list, using the Null Object Pattern.
80
90
  #
81
91
  # When inheriting from the LinkedList class, you should implement
@@ -99,5 +109,4 @@ module Rake
99
109
 
100
110
  EMPTY = EmptyLinkedList.new
101
111
  end
102
-
103
112
  end
@@ -1,17 +1,31 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
- # Makefile loader to be used with the import file loader.
4
+ # Makefile loader to be used with the import file loader. Use this to
5
+ # import dependencies from make dependency tools:
6
+ #
7
+ # require 'rake/loaders/makefile'
8
+ #
9
+ # file ".depends.mf" => [SRC_LIST] do |t|
10
+ # sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}"
11
+ # end
12
+ #
13
+ # import ".depends.mf"
14
+ #
15
+ # See {Importing Dependencies}[link:doc/rakefile_rdoc.html#label-Importing+Dependencies]
16
+ # for further details.
17
+
4
18
  class MakefileLoader
5
19
  include Rake::DSL
6
20
 
7
- SPACE_MARK = "\0"
21
+ SPACE_MARK = "\0" # :nodoc:
8
22
 
9
23
  # Load the makefile dependencies in +fn+.
10
- def load(fn)
24
+ def load(fn) # :nodoc:
11
25
  lines = File.read fn
12
26
  lines.gsub!(/\\ /, SPACE_MARK)
13
27
  lines.gsub!(/#[^\n]*\n/m, "")
14
- lines.gsub!(/\\\n/, ' ')
28
+ lines.gsub!(/\\\n/, " ")
15
29
  lines.each_line do |line|
16
30
  process_line(line)
17
31
  end
@@ -20,8 +34,8 @@ module Rake
20
34
  private
21
35
 
22
36
  # Process one logical line of makefile data.
23
- def process_line(line)
24
- file_tasks, args = line.split(':', 2)
37
+ def process_line(line) # :nodoc:
38
+ file_tasks, args = line.split(":", 2)
25
39
  return if args.nil?
26
40
  dependents = args.split.map { |d| respace(d) }
27
41
  file_tasks.scan(/\S+/) do |file_task|
@@ -30,11 +44,11 @@ module Rake
30
44
  end
31
45
  end
32
46
 
33
- def respace(str)
34
- str.tr SPACE_MARK, ' '
47
+ def respace(str) # :nodoc:
48
+ str.tr SPACE_MARK, " "
35
49
  end
36
50
  end
37
51
 
38
52
  # Install the handler
39
- Rake.application.add_loader('mf', MakefileLoader.new)
53
+ Rake.application.add_loader("mf", MakefileLoader.new)
40
54
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
4
  # Same as a regular task, but the immediate prerequisites are done in
@@ -5,9 +6,9 @@ module Rake
5
6
  #
6
7
  class MultiTask < Task
7
8
  private
9
+
8
10
  def invoke_prerequisites(task_args, invocation_chain) # :nodoc:
9
11
  invoke_prerequisites_concurrently(task_args, invocation_chain)
10
12
  end
11
13
  end
12
-
13
14
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  ##
2
3
  # The NameSpace class will lookup task names in the scope defined by a
3
4
  # +namespace+ command.
@@ -35,4 +36,3 @@ class Rake::NameSpace
35
36
  end
36
37
 
37
38
  end
38
-
@@ -1,8 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  # Define a package task library to aid in the definition of
2
3
  # redistributable package files.
3
4
 
4
- require 'rake'
5
- require 'rake/tasklib'
5
+ require "rake"
6
+ require "rake/tasklib"
6
7
 
7
8
  module Rake
8
9
 
@@ -63,6 +64,9 @@ module Rake
63
64
  # is false).
64
65
  attr_accessor :need_tar_bz2
65
66
 
67
+ # True if a xz'd tar file (tar.xz) should be produced (default is false)
68
+ attr_accessor :need_tar_xz
69
+
66
70
  # True if a zip file should be produced (default is false)
67
71
  attr_accessor :need_zip
68
72
 
@@ -75,6 +79,9 @@ module Rake
75
79
  # Zip command for zipped archives. The default is 'zip'.
76
80
  attr_accessor :zip_command
77
81
 
82
+ # True if parent directory should be omited (default is false)
83
+ attr_accessor :without_parent_dir
84
+
78
85
  # Create a Package Task with the given name and version. Use +:noversion+
79
86
  # as the version to build a package without a version or to provide a
80
87
  # fully-versioned package name.
@@ -90,13 +97,15 @@ module Rake
90
97
  @name = name
91
98
  @version = version
92
99
  @package_files = Rake::FileList.new
93
- @package_dir = 'pkg'
100
+ @package_dir = "pkg"
94
101
  @need_tar = false
95
102
  @need_tar_gz = false
96
103
  @need_tar_bz2 = false
104
+ @need_tar_xz = false
97
105
  @need_zip = false
98
- @tar_command = 'tar'
99
- @zip_command = 'zip'
106
+ @tar_command = "tar"
107
+ @zip_command = "zip"
108
+ @without_parent_dir = false
100
109
  end
101
110
 
102
111
  # Create the tasks defined by this task library.
@@ -108,38 +117,37 @@ module Rake
108
117
  task :package
109
118
 
110
119
  desc "Force a rebuild of the package files"
111
- task :repackage => [:clobber_package, :package]
120
+ task repackage: [:clobber_package, :package]
112
121
 
113
122
  desc "Remove package products"
114
123
  task :clobber_package do
115
124
  rm_r package_dir rescue nil
116
125
  end
117
126
 
118
- task :clobber => [:clobber_package]
127
+ task clobber: [:clobber_package]
119
128
 
120
129
  [
121
130
  [need_tar, tgz_file, "z"],
122
131
  [need_tar_gz, tar_gz_file, "z"],
123
- [need_tar_bz2, tar_bz2_file, "j"]
124
- ].each do |(need, file, flag)|
132
+ [need_tar_bz2, tar_bz2_file, "j"],
133
+ [need_tar_xz, tar_xz_file, "J"]
134
+ ].each do |need, file, flag|
125
135
  if need
126
- task :package => ["#{package_dir}/#{file}"]
136
+ task package: ["#{package_dir}/#{file}"]
127
137
  file "#{package_dir}/#{file}" =>
128
138
  [package_dir_path] + package_files do
129
- chdir(package_dir) do
130
- sh @tar_command, "#{flag}cvf", file, package_name
131
- end
139
+ chdir(working_dir) { sh @tar_command, "#{flag}cvf", file, target_dir }
140
+ mv "#{package_dir_path}/#{target_dir}", package_dir if without_parent_dir
132
141
  end
133
142
  end
134
143
  end
135
144
 
136
145
  if need_zip
137
- task :package => ["#{package_dir}/#{zip_file}"]
146
+ task package: ["#{package_dir}/#{zip_file}"]
138
147
  file "#{package_dir}/#{zip_file}" =>
139
148
  [package_dir_path] + package_files do
140
- chdir(package_dir) do
141
- sh @zip_command, "-r", zip_file, package_name
142
- end
149
+ chdir(working_dir) { sh @zip_command, "-r", zip_file, target_dir }
150
+ mv "#{package_dir_path}/#{zip_file}", package_dir if without_parent_dir
143
151
  end
144
152
  end
145
153
 
@@ -189,11 +197,26 @@ module Rake
189
197
  "#{package_name}.tar.bz2"
190
198
  end
191
199
 
200
+ # The package name with .tar.xz added
201
+
202
+ def tar_xz_file
203
+ "#{package_name}.tar.xz"
204
+ end
205
+
192
206
  # The package name with .zip added
193
207
 
194
208
  def zip_file
195
209
  "#{package_name}.zip"
196
210
  end
211
+
212
+ def working_dir
213
+ without_parent_dir ? package_dir_path : package_dir
214
+ end
215
+
216
+ # target directory relative to working_dir
217
+ def target_dir
218
+ without_parent_dir ? "." : package_name
219
+ end
197
220
  end
198
221
 
199
222
  end