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
|
module Vagrant
|
||||||
raise 'Action::IsState has not been backported yet!'
|
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/ui'
|
||||||
require 'vagrant-backports/action/handle_box'
|
require 'vagrant-backports/action/handle_box'
|
||||||
require 'vagrant-backports/action/message'
|
require 'vagrant-backports/action/message'
|
||||||
|
require 'vagrant-backports/action/is_state'
|
||||||
end
|
end
|
||||||
|
|
||||||
module Vagrant
|
module Vagrant
|
||||||
|
|
Loading…
Reference in a new issue