getting the vagrant command line arguments inside the Vagrantfile
Asked Answered
R

1

15

I have the following configuration that only makes sense for vagrant up command:

config.vm.provider :virtualbox do |vb|
  vb.gui = false
  if ENV["VB_GUI"] == "true" then vb.gui = true
  else
     puts("[info] VB_GUI environment variable not set so running headless")
  end
end

Is it possible to hook into the vagrant API to retrieve the command currently being executed? E.g.

config.vm.provider :virtualbox do |vb|
  vb.gui = false
  if VAGRANT_API.command == "up"  # how can I do this?
    if ENV["VB_GUI"] == "true" then vb.gui = true
    else
       puts("[info] VB_GUI environment variable not set so running headless")
    end
  end
end
Recusant answered 1/1, 2014 at 9:48 Comment(0)
P
26

A Vagrantfile is just ruby code so you can easily get the command line arguments using the ARGV array.

Take the following vagrant command for example:

vagrant up webserver

That would start the Vagrant box defined as webserver in your Vagrantfile. You can then access the arguments like so:

ARGV[0] = up
ARGV[1] = webserver

So using your example you need to do the following:

config.vm.provider :virtualbox do |vb|
  vb.gui = false
  if ARGV[0] == "up"
    if ENV["VB_GUI"] == "true" then vb.gui = true
    else
       puts("[info] VB_GUI environment variable not set so running headless")
    end
  end
end
Procter answered 2/1, 2014 at 21:26 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.