Sha256: 35f5baab9de5063bf41f7da88ce3c176be30c2cc95f62feea2ccf1620916db6b

Contents?: true

Size: 1.55 KB

Versions: 1

Compression:

Stored size: 1.55 KB

Contents

module VagrantPlugins
  module VagrantHook
	class HooksConfig < Vagrant.plugin(2, :config)
	  attr_accessor :check_outdated_callbacks
	  attr_accessor :add_box_callbacks
	  
	  def initialize
		@check_outdated_callbacks = []
		@add_box_callbacks = []
	  end
	  
	  def on_check_outdated(&proc)
		@check_outdated_callbacks << {:mproc => proc}
	  end
	  
	  def on_add_box(&proc)
		@add_box_callbacks << {:mproc => proc}
	  end
	end
	
	class HookActionAbstract
		def initialize(app, env, callbacks_list)
          @app = app
		  @callbacks_list = callbacks_list
        end
		
        def call(env)
		  callbacks = @callbacks_list.call
		  
		  callbacks.each do | clbk |
			puts env.to_yaml
			clbk[:mproc].call(env)
		  end
		 
		  @app.call(env)
        end
	end
	
	class HookBoxCheckOutdated < HookActionAbstract
		def initialize(app, env)
			super(app, env, Proc.new { env[:machine].config.vagrant_hook.check_outdated_callbacks } )
        end
	end
	
	class AddBoxHook < HookActionAbstract
		def initialize(app, env)
			super(app, env, Proc.new { env[:machine].config.vagrant_hook.add_box_callbacks } )
        end
	end

    class Plugin < Vagrant.plugin("2")
		name "vagrant_hook"
		
		config "vagrant_hook" do
			HooksConfig
		end
		
		action_hook(:vagrant_hook, Plugin::ALL_ACTIONS) do |hook|
			hook.after(Vagrant::Action::Builtin::BoxCheckOutdated, VagrantPlugins::VagrantHook::HookBoxCheckOutdated)
		end
		
		action_hook(:vagrant_hook, Plugin::ALL_ACTIONS) do |hook|
			hook.after(Vagrant::Action::Builtin::BoxAdd, VagrantPlugins::VagrantHook::AddBoxHook)
		end
	end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vagrant_hook-0.1.3 lib/vagrant_hook/plugin.rb