From 36643c1ab117173a3a0d40628af501ac21ed0fb2 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sun, 25 Nov 2018 21:17:11 -0500 Subject: [PATCH] add Util module and Util.make_relative_path() --- lib/rscons.rb | 1 + lib/rscons/environment.rb | 10 +--------- lib/rscons/util.rb | 26 ++++++++++++++++++++++++++ 3 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 lib/rscons/util.rb diff --git a/lib/rscons.rb b/lib/rscons.rb index d6884a9..067bd23 100644 --- a/lib/rscons.rb +++ b/lib/rscons.rb @@ -8,6 +8,7 @@ require_relative "rscons/environment" require_relative "rscons/job_set" require_relative "rscons/script" require_relative "rscons/threaded_command" +require_relative "rscons/util" require_relative "rscons/varset" require_relative "rscons/version" diff --git a/lib/rscons/environment.rb b/lib/rscons/environment.rb index 5b46fa5..47e418c 100644 --- a/lib/rscons/environment.rb +++ b/lib/rscons/environment.rb @@ -265,15 +265,7 @@ module Rscons end end unless found_match - if Rscons.absolute_path?(build_fname) - if build_fname =~ %r{^(\w):(.*)$} - build_fname = "#{@build_root}#{extra_path}/_#{$1}#{$2}" - else - build_fname = "#{@build_root}#{extra_path}/_#{build_fname}" - end - elsif !build_fname.start_with?("#{@build_root}/") - build_fname = "#{@build_root}#{extra_path}/#{build_fname}" - end + build_fname = "#{@build_root}#{extra_path}/#{Util.make_relative_path(build_fname)}" end build_fname.gsub('\\', '/') end diff --git a/lib/rscons/util.rb b/lib/rscons/util.rb new file mode 100644 index 0000000..f8f92cf --- /dev/null +++ b/lib/rscons/util.rb @@ -0,0 +1,26 @@ +module Rscons + module Util + class << self + + # Make a relative path corresponding to a possibly absolute one. + # + # @param path [String] + # Input path that is possibly absolute. + # + # @return [String] + # Relative path. + def make_relative_path(path) + if Rscons.absolute_path?(path) + if path =~ %r{^(\w):(.*)$} + "_#{$1}#{$2}" + else + "_#{path}" + end + else + path + end + end + + end + end +end