1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
# frozen_string_literal: true
require_relative '../../../puppet/file_serving/mount'
# Find files in the modules' plugins directories.
# This is a very strange mount because it merges
# many directories into one.
class Puppet::FileServing::Mount::Plugins < Puppet::FileServing::Mount
# Return an instance of the appropriate class.
def find(relative_path, request)
mod = request.environment.modules.find { |m| m.plugin(relative_path) }
return nil unless mod
mod.plugin(relative_path)
end
def search(relative_path, request)
# We currently only support one kind of search on plugins - return
# them all.
paths = request.environment.modules.find_all(&:plugins?).collect(&:plugin_directory)
if paths.empty?
# If the modulepath is valid then we still need to return a valid root
# directory for the search, but make sure nothing inside it is
# returned.
request.options[:recurse] = false
request.environment.modulepath.empty? ? [Puppet[:codedir]] : request.environment.modulepath
else
paths
end
end
def valid?
true
end
end
|