summaryrefslogtreecommitdiff
path: root/lib/puppet/parser/functions/get_module_path.rb
diff options
context:
space:
mode:
authorDan Bode <dan@puppetlabs.com>2011-11-14 10:32:49 -0800
committerDan Bode <dan@puppetlabs.com>2011-11-14 13:22:55 -0800
commit05c67671fd442c4fc2f20293075495bb97879855 (patch)
treec4e3c3655fc798749447935e0cf9cfe4df4a5df2 /lib/puppet/parser/functions/get_module_path.rb
parent86e86089fb41cb6fb2d6b7e358ed2afe0506fbeb (diff)
downloadpuppet-stdlib-05c67671fd442c4fc2f20293075495bb97879855.tar.gz
puppet-stdlib-05c67671fd442c4fc2f20293075495bb97879855.tar.bz2
(#10802) add new function get_module_path
This commit adds a new function called get_module_path. get_module_path returns the absolute path of a specified module. The code and functionality is very similar to how templates and files are detected inside of modules. the function has been tested against puppet 2.6.10 and 2.7.x
Diffstat (limited to 'lib/puppet/parser/functions/get_module_path.rb')
-rw-r--r--lib/puppet/parser/functions/get_module_path.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/puppet/parser/functions/get_module_path.rb b/lib/puppet/parser/functions/get_module_path.rb
new file mode 100644
index 0000000..4d2b50b
--- /dev/null
+++ b/lib/puppet/parser/functions/get_module_path.rb
@@ -0,0 +1,17 @@
+module Puppet::Parser::Functions
+ newfunction(:get_module_path, :type =>:rvalue, :doc => <<-EOT
+ Returns the absolute path of the specified module for the current
+ environment.
+
+ Example:
+ $module_path = get_module_path('stdlib')
+ EOT
+ ) do |args|
+ raise(Puppet::ParseError, "get_module_name(): Wrong number of arguments, expects one") unless args.size == 1
+ if module_path = Puppet::Module.find(args[0], compiler.environment.to_s)
+ module_path.path
+ else
+ raise(Puppet::ParseError, "Could not find module #{args[0]} in environment #{compiler.environment}")
+ end
+ end
+end