vaguerent/lib/vagrant/action/environment.rb
2010-09-03 09:39:30 -07:00

56 lines
1.4 KiB
Ruby

module Vagrant
class Action
# Represents an action environment which is what is passed
# to the `call` method of each action. This environment contains
# some helper methods for accessing the environment as well
# as being a hash, to store any additional options.
class Environment < Util::HashWithIndifferentAccess
# The {Vagrant::Environment} object represented by this
# action environment.
attr_reader :env
# If nonnil, the error associated with this environment. Set
# using {#error!}
attr_reader :error
def initialize(env)
super() do |h,k|
# By default, try to find the key as a method on the
# environment. Gross eval use here.
begin
value = eval("h.env.#{k}")
h[k] = value
rescue Exception
nil
end
end
@env = env
@interrupted = false
end
# Returns a logger associated with the environment.
def logger
env.logger
end
# Returns a UI object from the environment
def ui
env.ui
end
# Marks an environment as interrupted (by an outside signal or
# anything)
def interrupt!
@interrupted = true
end
# Returns a boolean denoting if environment has been interrupted
# with a SIGINT.
def interrupted?
!!@interrupted
end
end
end
end