diff --git a/lib/vagrant-hostmanager/config.rb b/lib/vagrant-hostmanager/config.rb index 1ba915b..7b8475a 100644 --- a/lib/vagrant-hostmanager/config.rb +++ b/lib/vagrant-hostmanager/config.rb @@ -3,16 +3,45 @@ module VagrantPlugins class Config < Vagrant.plugin('2', :config) attr_accessor :auto_update attr_accessor :ignore_private_ip + attr_accessor :aliases def initialize @auto_update = UNSET_VALUE @ignore_private_ip = UNSET_VALUE + @aliases = Array.new end def finalize! @auto_update = true if @auto_update == UNSET_VALUE @ignore_private_ip = false if @ignore_private_ip == UNSET_VALUE end + + def validate(machine) + errors = Array.new + + # check if auto_update option is defined in Vagrantfile + # and check if is either true or false accordingly + if (machine.config.hostmanager.auto_update && + ![TrueClass, FalseClass].include?(auto_update.class)) + errors << "A value for hostmanager.auto_update can be true or false." + end + + # check if ignore_private_ip option is defined in Vagrantfile + # and check if is either true or false accordingly + if (machine.config.hostmanager.ignore_private_ip && + ![TrueClass, FalseClass].include?(ignore_private_ip.class)) + errors << "A value for hostmanager.ignore_private_ip can be true or false." + end + + # check if aliases option is defined in Vagrantfile + # and check if is an Array accordingly + if (machine.config.hostmanager.aliases && + !machine.config.hostmanager.aliases.kind_of?(Array)) + errors << "A value for hostmanager.aliases must be an Array." + end + + { "HostManager configuration" => errors } + end end end end diff --git a/lib/vagrant-hostmanager/hosts_file.rb b/lib/vagrant-hostmanager/hosts_file.rb index fb9af39..9c7b4fe 100644 --- a/lib/vagrant-hostmanager/hosts_file.rb +++ b/lib/vagrant-hostmanager/hosts_file.rb @@ -31,8 +31,9 @@ module VagrantPlugins machines << machine = env.machine(name, provider) host = machine.config.vm.hostname || name ip = get_ip_address.call(machine) - @logger.info "Adding /etc/hosts entry: #{ip} #{host}" - file << "#{ip}\t#{host}\n" + host_aliases = machine.config.hostmanager.aliases.join("\s").chomp + @logger.info "Adding /etc/hosts entry: #{ip} #{host} #{host_aliases}" + file << "#{ip}\t#{host}\s#{host_aliases}\n" end end end