add Util module and Util.make_relative_path()

This commit is contained in:
Josh Holtrop 2018-11-25 21:17:11 -05:00
parent 778d9ed8b2
commit 36643c1ab1
3 changed files with 28 additions and 9 deletions

View File

@ -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"

View File

@ -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

26
lib/rscons/util.rb Normal file
View File

@ -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