Add env.expand() shortcut method to expand paths and construction variables - close #150

This commit is contained in:
Josh Holtrop 2022-01-30 15:00:59 -05:00
parent b745ae1153
commit df120af953
3 changed files with 21 additions and 9 deletions

View File

@ -224,7 +224,7 @@ task "build" do
end end
task "flash", deps: "build" do task "flash", deps: "build" do
sh "nrfjprog", "-f", "NRF52", "--program", env.expand_path("^^/proj.elf") sh "nrfjprog", "-f", "NRF52", "--program", env.expand("^^/proj.elf")
end end
``` ```

View File

@ -103,7 +103,7 @@ module Rscons
# @return [void] # @return [void]
def produces(*side_effects) def produces(*side_effects)
side_effects.each do |side_effect| side_effects.each do |side_effect|
side_effect_expanded = @env.expand_path(@env.expand_varref(side_effect)) side_effect_expanded = @env.expand(side_effect)
@env.register_side_effect(side_effect_expanded) @env.register_side_effect(side_effect_expanded)
@side_effects << side_effect_expanded @side_effects << side_effect_expanded
end end

View File

@ -337,10 +337,10 @@ module Rscons
unless vars.is_a?(Hash) or vars.is_a?(VarSet) unless vars.is_a?(Hash) or vars.is_a?(VarSet)
raise "Unexpected construction variable set: #{vars.inspect}" raise "Unexpected construction variable set: #{vars.inspect}"
end end
target = expand_path(expand_varref(target)) target = expand(target)
sources = Array(sources).map do |source| sources = Array(sources).map do |source|
source = source.target if source.is_a?(Builder) source = source.target if source.is_a?(Builder)
expand_path(expand_varref(source)) expand(source)
end.flatten end.flatten
builder = @builders[method.to_s].new( builder = @builders[method.to_s].new(
target: target, target: target,
@ -369,12 +369,12 @@ module Rscons
if target.is_a?(Builder) if target.is_a?(Builder)
target = target.target target = target.target
end end
target = expand_path(expand_varref(target.to_s)) target = expand(target.to_s)
user_deps = user_deps.map do |ud| user_deps = user_deps.map do |ud|
if ud.is_a?(Builder) if ud.is_a?(Builder)
ud = ud.target ud = ud.target
end end
expand_path(expand_varref(ud)) expand(ud)
end end
@user_deps[target] ||= [] @user_deps[target] ||= []
@user_deps[target] = (@user_deps[target] + user_deps).uniq @user_deps[target] = (@user_deps[target] + user_deps).uniq
@ -408,13 +408,13 @@ module Rscons
targets = Array(targets) targets = Array(targets)
prerequisites = Array(prerequisites) prerequisites = Array(prerequisites)
targets.each do |target| targets.each do |target|
target = expand_path(expand_varref(target)) target = expand(target)
@registered_build_dependencies[target] ||= Set.new @registered_build_dependencies[target] ||= Set.new
prerequisites.each do |prerequisite| prerequisites.each do |prerequisite|
if prerequisite.is_a?(Builder) if prerequisite.is_a?(Builder)
prerequisite = prerequisite.target prerequisite = prerequisite.target
end end
prerequisite = expand_path(expand_varref(prerequisite)) prerequisite = expand(prerequisite)
@registered_build_dependencies[target] << prerequisite @registered_build_dependencies[target] << prerequisite
end end
end end
@ -430,7 +430,7 @@ module Rscons
# #
# @return [void] # @return [void]
def produces(target, *side_effects) def produces(target, *side_effects)
target = expand_path(expand_varref(target)) target = expand(target)
@builder_sets.reverse.each do |builder_set| @builder_sets.reverse.each do |builder_set|
if builders = builder_set[target] if builders = builder_set[target]
builders.last.produces(*side_effects) builders.last.produces(*side_effects)
@ -514,6 +514,18 @@ module Rscons
end end
end end
# Expand construction variable references and paths.
#
# @param expr [String]
# Expression to expand. Can contain construction variable references and
# a path.
#
# @return [String, Array<String>]
# Expanded value.
def expand(expr)
expand_path(expand_varref(expr))
end
# Print the builder run message, depending on the Environment's echo mode. # Print the builder run message, depending on the Environment's echo mode.
# #
# @param builder [Builder] # @param builder [Builder]