Sha256: 8171882842a97cf0623144926eb47cba6c5e454c036cdf730886860fd5fdd786

Contents?: true

Size: 1.19 KB

Versions: 45

Compression:

Stored size: 1.19 KB

Contents

module MCollective
  # Simple module to manage vendored code.
  #
  # To vendor a library simply download its whole git repo or untar
  # into vendor/libraryname and create a load_libraryname.rb file
  # to add its libdir into the $:.
  #
  # Once you have that file, add a require line in vendor/require_vendored.rb
  # which will run after all the load_* files.
  #
  # The intention is to not change vendored libraries and to eventually
  # make adding them in optional so that distros can simply adjust their
  # packaging to exclude this directory and the various load_xxx.rb scripts
  # if they wish to install these gems as native packages.
  class Vendor
    class << self
      def vendor_dir
        File.join([File.dirname(File.expand_path(__FILE__)), "vendor"])
      end

      def load_entry(entry)
        Log.debug("Loading vendored #{$1}")
        load "#{vendor_dir}/#{entry}"
      end

      def require_libs
        require 'mcollective/vendor/require_vendored'
      end

      def load_vendored
        Dir.entries(vendor_dir).each do |entry|
          if entry.match(/load_(\w+?)\.rb$/)
            load_entry entry
          end
        end

        require_libs
      end
    end
  end
end

Version data entries

45 entries across 45 versions & 1 rubygems

Version Path
mcollective-client-2.2.2 lib/mcollective/vendor.rb
mcollective-client-2.2.1 lib/mcollective/vendor.rb
mcollective-client-2.2.0 lib/mcollective/vendor.rb
mcollective-client-2.0.0 lib/mcollective/vendor.rb
mcollective-client-1.3.3 lib/mcollective/vendor.rb