blob: 86b0457fb0dbea1e9031bd35ec926be0c788cecc [file] [log] [blame]
# Utility methods for generating tasks
module Rake
class Task
attr_accessor :deps
attr_accessor :out
end
end
class BaseGenerator
def create_deps_(out, args)
# We depend on our sources
file out => FileList[args[:srcs]] unless args[:srcs].nil?
add_deps_(out, args[:srcs])
add_deps_(out, args[:deps])
add_deps_(out, args[:resources])
task args[:name].to_sym => out unless args[:name] == out
t = Rake::Task[args[:name].to_sym]
t.deps = args[:deps]
t.out = out
end
def add_deps_(task_name, srcs)
if srcs.nil?
return
end
srcs.each do |src|
# Is the src a file or a symbol? If it's a symbol, we're good to go
if src.is_a? Symbol
file task_name.to_sym => [src]
elsif src.is_a? Hash
add_deps_(task_name, src.keys)
else
# Fine. Assume we're dealing with a string, and create a FileList
file task_name.to_sym => FileList[src]
end
end
end
end
# TODO(simon): Delete this. It's not working out dependencies correctly
$targets = {}
def build_deps_(srcs)
deps = []
return deps unless srcs
Array(srcs).each do |src|
if ($targets[src]) then
deps += $targets[src][:deps]
else
deps += FileList[src]
end
end
deps
end