# File lib/mcollective/pluginpackager.rb, line 12 def self.[](klass) const_get("#{klass}") end
Checks if a directory is present and not empty
# File lib/mcollective/pluginpackager.rb, line 31 def self.check_dir_present(path) (File.directory?(path) && !Dir.glob(File.join(path, "*")).empty?) end
Checks if a build tool is present on the system
# File lib/mcollective/pluginpackager.rb, line 54 def self.command_available?(build_tool) ENV["PATH"].split(File::PATH_SEPARATOR).each do |path| builder = File.join(path, build_tool) if File.exists?(builder) return true end end false end
Quietly calls a block if verbose parameter is false
# File lib/mcollective/pluginpackager.rb, line 36 def self.execute_verbosely(verbose, &block) unless verbose old_stdout = $stdout.clone $stdout.reopen(File.new("/dev/null", "w")) begin block.call rescue Exception => e $stdout.reopen old_stdout raise e ensure $stdout.reopen old_stdout end else block.call end end
Filter out platform specific dependencies Given a list of dependencies named - debian::foo redhat::bar ::filter_dependencies(‘debian’, dependencies) will return foo.
# File lib/mcollective/pluginpackager.rb, line 74 def self.filter_dependencies(prefix, dependencies) dependencies.map do |dependency| if dependency[:name] =~ /^(\w+)::(\w+)/ if prefix == $1 dependency[:name] = $2 dependency else nil end else dependency end end.reject{ |dependency| dependency == nil } end
Fetch and return metadata from plugin DDL
# File lib/mcollective/pluginpackager.rb, line 17 def self.get_metadata(path, type) ddl = DDL.new("package", type.to_sym, false) begin ddl_file = File.read(Dir.glob(File.join(path, type, "*.ddl")).first) rescue Exception raise "failed to load ddl file in plugin directory : #{File.join(path, type)}" end ddl.instance_eval ddl_file return ddl.meta, ddl.requirements[:mcollective] end
Package implementation plugins
# File lib/mcollective/pluginpackager.rb, line 8 def self.load_packagers PluginManager.find_and_load("pluginpackager") end
# File lib/mcollective/pluginpackager.rb, line 64 def self.safe_system(*args) raise(RuntimeError, "Failed: #{args.join(' ')}") unless system *args end