X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=lib%2Fmcollective%2Fvendor.rb;fp=lib%2Fmcollective%2Fvendor.rb;h=045146707875a57df44186ba2f4c265503570127;hb=b87d2f4e68281062df1913440ca5753ae63314a9;hp=0000000000000000000000000000000000000000;hpb=ab0ea530b8ac956091f17b104ab2311336cfc250;p=packages%2Fprecise%2Fmcollective.git diff --git a/lib/mcollective/vendor.rb b/lib/mcollective/vendor.rb new file mode 100644 index 0000000..0451467 --- /dev/null +++ b/lib/mcollective/vendor.rb @@ -0,0 +1,41 @@ +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