plugins/guests/gentoo/cap/change_host_name.rb in vagrant-unbundled-1.8.4.2 vs plugins/guests/gentoo/cap/change_host_name.rb in vagrant-unbundled-1.8.5.1

- old
+ new

@@ -1,15 +1,30 @@ module VagrantPlugins module GuestGentoo module Cap class ChangeHostName def self.change_host_name(machine, name) - machine.communicate.tap do |comm| - if !comm.test("sudo hostname --fqdn | grep '#{name}'") - comm.sudo("echo 'hostname=#{name.split('.')[0]}' > /etc/conf.d/hostname") - comm.sudo("sed -i 's@^\\(127[.]0[.]0[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts") - comm.sudo("hostname #{name.split('.')[0]}") - end + comm = machine.communicate + + if !comm.test("hostname -f | grep '^#{name}$'", sudo: false) + basename = name.split(".", 2)[0] + comm.sudo <<-EOH.gsub(/^ {14}/, "") + set -e + + # Set the hostname + hostname '#{basename}' + echo "hostname=#{basename}" > /etc/conf.d/hostname + + # Remove comments and blank lines from /etc/hosts + sed -i'' -e 's/#.*$//' /etc/hosts + sed -i'' -e '/^$/d' /etc/hosts + + # Prepend ourselves to /etc/hosts + grep -w '#{name}' /etc/hosts || { + echo -e '127.0.0.1\\t#{name}\\t#{basename}' | cat - /etc/hosts > /tmp/tmp-hosts + mv /tmp/tmp-hosts /etc/hosts + } + EOH end end end end end