diff options
Diffstat (limited to 'code/environments/production/modules/stdlib/lib/puppet/parser/functions/load_module_metadata.rb')
-rw-r--r-- | code/environments/production/modules/stdlib/lib/puppet/parser/functions/load_module_metadata.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/code/environments/production/modules/stdlib/lib/puppet/parser/functions/load_module_metadata.rb b/code/environments/production/modules/stdlib/lib/puppet/parser/functions/load_module_metadata.rb new file mode 100644 index 0000000..f9a39de --- /dev/null +++ b/code/environments/production/modules/stdlib/lib/puppet/parser/functions/load_module_metadata.rb @@ -0,0 +1,25 @@ +# +# load_module_metadata.rb +# +module Puppet::Parser::Functions + newfunction(:load_module_metadata, :type => :rvalue, :doc => <<-DOC + This function loads the metadata of a given module. + DOC + ) do |args| + raise(Puppet::ParseError, 'load_module_metadata(): Wrong number of arguments, expects one or two') unless [1, 2].include?(args.size) + mod = args[0] + allow_empty_metadata = args[1] + module_path = function_get_module_path([mod]) + metadata_json = File.join(module_path, 'metadata.json') + + metadata_exists = File.exists?(metadata_json) # rubocop:disable Lint/DeprecatedClassMethods : Changing to .exist? breaks the code + if metadata_exists + metadata = PSON.load(File.read(metadata_json)) + else + metadata = {} + raise(Puppet::ParseError, "load_module_metadata(): No metadata.json file for module #{mod}") unless allow_empty_metadata + end + + return metadata + end +end |