backports: Add IsState
This commit is contained in:
parent
71b02ab511
commit
803e446dc5
2 changed files with 35 additions and 2 deletions
|
@ -1,2 +1,34 @@
|
|||
# TODO: Implement this for vagrant < 1.5
|
||||
raise 'Action::IsState has not been backported yet!'
|
||||
module Vagrant
|
||||
module Backports
|
||||
module Action
|
||||
# This middleware is meant to be used with Call and can check if
|
||||
# a machine is in the given state ID.
|
||||
class IsState
|
||||
# Note: Any of the arguments can be arrays as well.
|
||||
#
|
||||
# @param [Symbol] target_state The target state ID that means that
|
||||
# the machine was properly shut down.
|
||||
# @param [Symbol] source_state The source state ID that the machine
|
||||
# must be in to be shut down.
|
||||
def initialize(app, env, check, **opts)
|
||||
@app = app
|
||||
@logger = Log4r::Logger.new("vagrant::action::builtin::is_state")
|
||||
@check = check
|
||||
@invert = !!opts[:invert]
|
||||
end
|
||||
|
||||
def call(env)
|
||||
@logger.debug("Checking if machine state is '#{@check}'")
|
||||
state = env[:machine].state.id
|
||||
@logger.debug("-- Machine state: #{state}")
|
||||
|
||||
env[:result] = @check == state
|
||||
env[:result] = !env[:result] if @invert
|
||||
@app.call(env)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Vagrant::Action::Builtin.const_set :IsState, Vagrant::Backports::Action::IsState
|
||||
|
|
|
@ -26,6 +26,7 @@ unless Vagrant::Backports.vagrant_1_5_or_later?
|
|||
require 'vagrant-backports/ui'
|
||||
require 'vagrant-backports/action/handle_box'
|
||||
require 'vagrant-backports/action/message'
|
||||
require 'vagrant-backports/action/is_state'
|
||||
end
|
||||
|
||||
module Vagrant
|
||||
|
|
Loading…
Reference in a new issue