2 # load_module_metadata.rb
4 module Puppet::Parser::Functions
5 newfunction(:load_module_metadata, :type => :rvalue, :doc => <<-DOC
7 This function loads the metadata of a given module.
9 @example Example USage:
10 $metadata = load_module_metadata('archive')
11 notify { $metadata['author']: }
17 raise(Puppet::ParseError, 'load_module_metadata(): Wrong number of arguments, expects one or two') unless [1, 2].include?(args.size)
19 allow_empty_metadata = args[1]
20 module_path = function_get_module_path([mod])
21 metadata_json = File.join(module_path, 'metadata.json')
23 metadata_exists = File.exists?(metadata_json) # rubocop:disable Lint/DeprecatedClassMethods : Changing to .exist? breaks the code
25 metadata = PSON.load(File.read(metadata_json))
28 raise(Puppet::ParseError, "load_module_metadata(): No metadata.json file for module #{mod}") unless allow_empty_metadata