module MCollective::PluginPackager
Public Class Methods
[](klass)
click to toggle source
# File lib/mcollective/pluginpackager.rb 12 def self.[](klass) 13 const_get("#{klass}") 14 end
check_dir_present(path)
click to toggle source
Checks if a directory is present and not empty
# File lib/mcollective/pluginpackager.rb 31 def self.check_dir_present(path) 32 (File.directory?(path) && !Dir.glob(File.join(path, "*")).empty?) 33 end
command_available?(build_tool)
click to toggle source
Checks if a build tool is present on the system
# File lib/mcollective/pluginpackager.rb 54 def self.command_available?(build_tool) 55 ENV["PATH"].split(File::PATH_SEPARATOR).each do |path| 56 builder = File.join(path, build_tool) 57 if File.exists?(builder) 58 return true 59 end 60 end 61 false 62 end
execute_verbosely(verbose, &block)
click to toggle source
Quietly calls a block if verbose parameter is false
# File lib/mcollective/pluginpackager.rb 36 def self.execute_verbosely(verbose, &block) 37 unless verbose 38 old_stdout = $stdout.clone 39 $stdout.reopen(File.new("/dev/null", "w")) 40 begin 41 block.call 42 rescue Exception => e 43 $stdout.reopen old_stdout 44 raise e 45 ensure 46 $stdout.reopen old_stdout 47 end 48 else 49 block.call 50 end 51 end
filter_dependencies(prefix, dependencies)
click to toggle source
Filter out platform specific dependencies Given a list of dependencies named - debian::foo redhat::bar PluginPackager.filter_dependencies
('debian', dependencies) will return foo.
# File lib/mcollective/pluginpackager.rb 74 def self.filter_dependencies(prefix, dependencies) 75 dependencies.map do |dependency| 76 if dependency[:name] =~ /^(\w+)::(\w+)/ 77 if prefix == $1 78 dependency[:name] = $2 79 dependency 80 else 81 nil 82 end 83 else 84 dependency 85 end 86 end.reject{ |dependency| dependency == nil } 87 end
get_metadata(path, type)
click to toggle source
Fetch and return metadata from plugin DDL
# File lib/mcollective/pluginpackager.rb 17 def self.get_metadata(path, type) 18 ddl = DDL.new("package", type.to_sym, false) 19 20 begin 21 ddl_file = File.read(Dir.glob(File.join(path, type, "*.ddl")).first) 22 rescue Exception 23 raise "failed to load ddl file in plugin directory : #{File.join(path, type)}" 24 end 25 ddl.instance_eval ddl_file 26 27 return ddl.meta, ddl.requirements[:mcollective] 28 end
get_plugin_path(target)
click to toggle source
Return the path to a plugin's core directories
# File lib/mcollective/pluginpackager.rb 90 def self.get_plugin_path(target) 91 if (File.exists?(File.join(target, "lib", "mcollective"))) 92 return File.join(target, "lib", "mcollective") 93 end 94 95 return target 96 end
load_packagers()
click to toggle source
Package implementation plugins
# File lib/mcollective/pluginpackager.rb 8 def self.load_packagers 9 PluginManager.find_and_load("pluginpackager") 10 end
safe_system(*args)
click to toggle source
# File lib/mcollective/pluginpackager.rb 64 def self.safe_system(*args) 65 raise(RuntimeError, "Failed: #{args.join(' ')}") unless system *args 66 end