From 4feeae13928f0f0f33b41049219eb1cb7a3eeee2 Mon Sep 17 00:00:00 2001 From: gemmaro Date: Fri, 15 Dec 2023 21:13:10 +0900 Subject: [PATCH 1/2] Accept Pathname object as rule's prerequisite --- lib/rake/task_manager.rb | 2 ++ test/test_rake_rules.rb | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/rake/task_manager.rb b/lib/rake/task_manager.rb index 0db5c241e..74accd03b 100644 --- a/lib/rake/task_manager.rb +++ b/lib/rake/task_manager.rb @@ -302,6 +302,8 @@ def make_sources(task_name, task_pattern, extensions) source == ext ? task_name.ext(ext) : source when String, Symbol ext.to_s + when Pathname + Rake.from_pathname(ext) when Proc, Method if ext.arity == 1 ext.call(task_name) diff --git a/test/test_rake_rules.rb b/test/test_rake_rules.rb index e20df9350..48fab0bad 100644 --- a/test/test_rake_rules.rb +++ b/test/test_rake_rules.rb @@ -80,6 +80,16 @@ def test_rule_prereqs_can_be_created_by_string assert_equal [OBJFILE], @runs end + def test_rule_prereqs_can_be_created_by_pathname + create_file(SRCFILE) + create_file(FOOFILE) + rule ".o" => [".c", Pathname(FOOFILE)] do |t| + @runs << t.name + end + Task[OBJFILE].invoke + assert_equal [OBJFILE], @runs + end + def test_rule_prereqs_can_be_created_by_symbol task :nonfile do |t| @runs << t.name From 27d0e0e190634a7ddc23d2b13f1fdfaf361d2e86 Mon Sep 17 00:00:00 2001 From: gemmaro Date: Sat, 16 Dec 2023 23:44:24 +0900 Subject: [PATCH 2/2] Rename variable names of make sources method --- lib/rake/task_manager.rb | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/rake/task_manager.rb b/lib/rake/task_manager.rb index 74accd03b..e69be4e38 100644 --- a/lib/rake/task_manager.rb +++ b/lib/rake/task_manager.rb @@ -289,29 +289,29 @@ def attempt_rule(task_name, task_pattern, args, extensions, block, level) end # Make a list of sources from the list of file name extensions / - # translation procs. - def make_sources(task_name, task_pattern, extensions) - result = extensions.map { |ext| - case ext + # file paths / translation procs. + def make_sources(task_name, task_pattern, prereqs) + result = prereqs.map { |prereq| + case prereq when /%/ - task_name.pathmap(ext) + task_name.pathmap(prereq) when %r{/} - ext + prereq when /^\./ - source = task_name.sub(task_pattern, ext) - source == ext ? task_name.ext(ext) : source + source = task_name.sub(task_pattern, prereq) + source == prereq ? task_name.ext(prereq) : source when String, Symbol - ext.to_s + prereq.to_s when Pathname - Rake.from_pathname(ext) + Rake.from_pathname(prereq) when Proc, Method - if ext.arity == 1 - ext.call(task_name) + if prereq.arity == 1 + prereq.call(task_name) else - ext.call + prereq.call end else - fail "Don't know how to handle rule dependent: #{ext.inspect}" + fail "Don't know how to handle rule dependent: #{prereq.inspect}" end } result.flatten