Sha256: 8c757c6a4d70d707a036365770cd8ffcf1537492dea237e9d93579675c4d46b4

Contents?: true

Size: 1.25 KB

Versions: 6

Compression:

Stored size: 1.25 KB

Contents

unless(defined?(LxcMonkey))
  require 'chef/resource/execute'
  require 'chef/provider/execute'

  module LxcMonkey
    module Provider
      class << self
        def included(klass)
          klass.class_eval do
            alias_method :non_monkey_shell_out!, :shell_out!
            alias_method :shell_out!, :monkey_shell_out!
          end
        end
      end
      
      def monkey_shell_out!(com, opts)
        if(str = @new_resource.stream_output)
          opts[:live_stream] = str.kind_of?(IO) ? str : STDOUT
        end
        non_monkey_shell_out!(com, opts)
      end      
    end
    module Resource

      class << self
        def included(klass)
          klass.class_eval do
            alias_method :non_monkey_initialize, :initialize
            alias_method :initialize, :monkey_initialize
          end
        end
      end
      
      def monkey_initialize(*args)
        non_monkey_initialize(*args)
        @stream_output = nil
      end

      def stream_output(arg=nil)
        set_or_return(
          :stream_output,
          arg,
          :kind_of => [TrueClass,FalseClass,IO]
        )
      end
    end
  end

  Chef::Resource::Execute.send(:include, LxcMonkey::Resource)
  Chef::Provider::Execute.send(:include, LxcMonkey::Provider)
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
vagabond-0.2.8 lib/vagabond/cookbooks/lxc/libraries/monkey.rb
vagabond-0.2.6 lib/vagabond/cookbooks/lxc/libraries/monkey.rb
vagabond-0.2.4 lib/vagabond/cookbooks/lxc/libraries/monkey.rb
vagabond-0.2.2 lib/vagabond/cookbooks/lxc/libraries/monkey.rb
elecksee-1.0.2 lib/elecksee/vendor/lxc/libraries/monkey.rb
elecksee-1.0.0 lib/elecksee/vendor/lxc/libraries/monkey.rb