From df120af9539378b9805c9ef4c4b16c0b13d483ec Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 30 Jan 2022 15:00:59 -0500 Subject: [PATCH] Add env.expand() shortcut method to expand paths and construction variables - close #150 --- doc/user_guide.md | 2 +- lib/rscons/builder.rb | 2 +- lib/rscons/environment.rb | 26 +++++++++++++++++++------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/doc/user_guide.md b/doc/user_guide.md index b83d270..3c72bad 100644 --- a/doc/user_guide.md +++ b/doc/user_guide.md @@ -224,7 +224,7 @@ task "build" do end 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 ``` diff --git a/lib/rscons/builder.rb b/lib/rscons/builder.rb index abdbf22..fa844dd 100644 --- a/lib/rscons/builder.rb +++ b/lib/rscons/builder.rb @@ -103,7 +103,7 @@ module Rscons # @return [void] def produces(*side_effects) 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) @side_effects << side_effect_expanded end diff --git a/lib/rscons/environment.rb b/lib/rscons/environment.rb index aba5988..ab4bb46 100644 --- a/lib/rscons/environment.rb +++ b/lib/rscons/environment.rb @@ -337,10 +337,10 @@ module Rscons unless vars.is_a?(Hash) or vars.is_a?(VarSet) raise "Unexpected construction variable set: #{vars.inspect}" end - target = expand_path(expand_varref(target)) + target = expand(target) sources = Array(sources).map do |source| source = source.target if source.is_a?(Builder) - expand_path(expand_varref(source)) + expand(source) end.flatten builder = @builders[method.to_s].new( target: target, @@ -369,12 +369,12 @@ module Rscons if target.is_a?(Builder) target = target.target end - target = expand_path(expand_varref(target.to_s)) + target = expand(target.to_s) user_deps = user_deps.map do |ud| if ud.is_a?(Builder) ud = ud.target end - expand_path(expand_varref(ud)) + expand(ud) end @user_deps[target] ||= [] @user_deps[target] = (@user_deps[target] + user_deps).uniq @@ -408,13 +408,13 @@ module Rscons targets = Array(targets) prerequisites = Array(prerequisites) targets.each do |target| - target = expand_path(expand_varref(target)) + target = expand(target) @registered_build_dependencies[target] ||= Set.new prerequisites.each do |prerequisite| if prerequisite.is_a?(Builder) prerequisite = prerequisite.target end - prerequisite = expand_path(expand_varref(prerequisite)) + prerequisite = expand(prerequisite) @registered_build_dependencies[target] << prerequisite end end @@ -430,7 +430,7 @@ module Rscons # # @return [void] def produces(target, *side_effects) - target = expand_path(expand_varref(target)) + target = expand(target) @builder_sets.reverse.each do |builder_set| if builders = builder_set[target] builders.last.produces(*side_effects) @@ -514,6 +514,18 @@ module Rscons 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] + # Expanded value. + def expand(expr) + expand_path(expand_varref(expr)) + end + # Print the builder run message, depending on the Environment's echo mode. # # @param builder [Builder]