Update stdlib
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / load_module_metadata.rb
1 module Puppet::Parser::Functions
2   newfunction(:load_module_metadata, :type => :rvalue, :doc => <<-EOT
3   EOT
4   ) do |args|
5     raise(Puppet::ParseError, "load_module_metadata(): Wrong number of arguments, expects one or two") unless [1,2].include?(args.size)
6     mod = args[0]
7     allow_empty_metadata = args[1]
8     module_path = function_get_module_path([mod])
9     metadata_json = File.join(module_path, 'metadata.json')
10
11     metadata_exists = File.exists?(metadata_json)
12     if metadata_exists
13       metadata = PSON.load(File.read(metadata_json))
14     else
15       if allow_empty_metadata
16         metadata = {}
17       else
18         raise(Puppet::ParseError, "load_module_metadata(): No metadata.json file for module #{mod}")
19       end
20     end
21
22     return metadata
23   end
24 end