guests/{free,net,open}bsd: Add `shell_expand_guest_path` capability

This commit is contained in:
Teemu Matilainen 2014-02-02 17:38:24 -03:00
parent e634cdc824
commit 023d3115dd
6 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,27 @@
module VagrantPlugins
module GuestFreeBSD
module Cap
class ShellExpandGuestPath
def self.shell_expand_guest_path(machine, path)
real_path = nil
machine.communicate.execute("printf #{path}",
shell: "sh") do |type, data|
if type == :stdout
real_path ||= ""
real_path += data
end
end
if !real_path
# If no real guest path was detected, this is really strange
# and we raise an exception because this is a bug.
raise ShellExpandFailed
end
# Chomp the string so that any trailing newlines are killed
return real_path.chomp
end
end
end
end
end

View File

@ -30,6 +30,11 @@ module VagrantPlugins
require_relative "cap/mount_nfs_folder"
Cap::MountNFSFolder
end
guest_capability("freebsd", "shell_expand_guest_path") do
require_relative "cap/shell_expand_guest_path"
Cap::ShellExpandGuestPath
end
end
end
end

View File

@ -0,0 +1,26 @@
module VagrantPlugins
module GuestNetBSD
module Cap
class ShellExpandGuestPath
def self.shell_expand_guest_path(machine, path)
real_path = nil
machine.communicate.execute("printf #{path}") do |type, data|
if type == :stdout
real_path ||= ""
real_path += data
end
end
if !real_path
# If no real guest path was detected, this is really strange
# and we raise an exception because this is a bug.
raise ShellExpandFailed
end
# Chomp the string so that any trailing newlines are killed
return real_path.chomp
end
end
end
end
end

View File

@ -30,6 +30,11 @@ module VagrantPlugins
require_relative "cap/mount_nfs_folder"
Cap::MountNFSFolder
end
guest_capability("netbsd", "shell_expand_guest_path") do
require_relative "cap/shell_expand_guest_path"
Cap::ShellExpandGuestPath
end
end
end
end

View File

@ -0,0 +1,26 @@
module VagrantPlugins
module GuestOpenBSD
module Cap
class ShellExpandGuestPath
def self.shell_expand_guest_path(machine, path)
real_path = nil
machine.communicate.execute("printf #{path}") do |type, data|
if type == :stdout
real_path ||= ""
real_path += data
end
end
if !real_path
# If no real guest path was detected, this is really strange
# and we raise an exception because this is a bug.
raise ShellExpandFailed
end
# Chomp the string so that any trailing newlines are killed
return real_path.chomp
end
end
end
end
end

View File

@ -30,6 +30,11 @@ module VagrantPlugins
require_relative "cap/mount_nfs_folder"
Cap::MountNFSFolder
end
guest_capability("openbsd", "shell_expand_guest_path") do
require_relative "cap/shell_expand_guest_path"
Cap::ShellExpandGuestPath
end
end
end
end