2013-04-04 06:01:43 +00:00
|
|
|
module VagrantPlugins
|
|
|
|
module GuestLinux
|
|
|
|
module Cap
|
|
|
|
class ShellExpandGuestPath
|
|
|
|
def self.shell_expand_guest_path(machine, path)
|
|
|
|
real_path = nil
|
2017-08-14 22:34:10 +00:00
|
|
|
machine.communicate.execute("echo; printf \"#{path}\"") do |type, data|
|
2013-04-04 06:01:43 +00:00
|
|
|
if type == :stdout
|
|
|
|
real_path ||= ""
|
|
|
|
real_path += data
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2015-07-06 00:14:48 +00:00
|
|
|
if real_path
|
|
|
|
# The last line is the path we care about
|
|
|
|
real_path = real_path.split("\n").last.chomp
|
|
|
|
end
|
2013-07-20 03:53:53 +00:00
|
|
|
|
2013-04-04 06:01:43 +00:00
|
|
|
if !real_path
|
|
|
|
# If no real guest path was detected, this is really strange
|
|
|
|
# and we raise an exception because this is a bug.
|
2014-02-02 20:26:54 +00:00
|
|
|
raise ShellExpandFailed
|
2013-04-04 06:01:43 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
# Chomp the string so that any trailing newlines are killed
|
|
|
|
return real_path.chomp
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|