diff options
author | TP Honey <tphoney@users.noreply.github.com> | 2015-03-05 19:15:41 +0000 |
---|---|---|
committer | TP Honey <tphoney@users.noreply.github.com> | 2015-03-05 19:15:41 +0000 |
commit | bf8e5b0573f78f2c2c780494a735bfac25d4488d (patch) | |
tree | 2c81ecba270068294b25ad7d2b17919cb71fee04 /lib/puppet/parser | |
parent | 668b3c31b591b9ee67ab215715b95adf8e78608a (diff) | |
parent | 4a68b224c4a4a986be6b4bf9580fc4f23251e3c6 (diff) | |
download | puppet-stdlib-bf8e5b0573f78f2c2c780494a735bfac25d4488d.tar.gz puppet-stdlib-bf8e5b0573f78f2c2c780494a735bfac25d4488d.tar.bz2 |
Merge pull request #422 from cyberious/assert_private
Assert private
Diffstat (limited to 'lib/puppet/parser')
-rw-r--r-- | lib/puppet/parser/functions/assert_private.rb | 29 | ||||
-rw-r--r-- | lib/puppet/parser/functions/private.rb | 24 |
2 files changed, 35 insertions, 18 deletions
diff --git a/lib/puppet/parser/functions/assert_private.rb b/lib/puppet/parser/functions/assert_private.rb new file mode 100644 index 0000000..66c79cc --- /dev/null +++ b/lib/puppet/parser/functions/assert_private.rb @@ -0,0 +1,29 @@ +# +# assert_private.rb +# + +module Puppet::Parser::Functions + newfunction(:assert_private, :doc => <<-'EOS' + Sets the current class or definition as private. + Calling the class or definition from outside the current module will fail. + EOS + ) do |args| + + raise(Puppet::ParseError, "assert_private(): Wrong number of arguments "+ + "given (#{args.size}}) for 0 or 1)") if args.size > 1 + + scope = self + if scope.lookupvar('module_name') != scope.lookupvar('caller_module_name') + message = nil + if args[0] and args[0].is_a? String + message = args[0] + else + manifest_name = scope.source.name + manifest_type = scope.source.type + message = (manifest_type.to_s == 'hostclass') ? 'Class' : 'Definition' + message += " #{manifest_name} is private" + end + raise(Puppet::ParseError, message) + end + end +end diff --git a/lib/puppet/parser/functions/private.rb b/lib/puppet/parser/functions/private.rb index 60210d3..3b00ba1 100644 --- a/lib/puppet/parser/functions/private.rb +++ b/lib/puppet/parser/functions/private.rb @@ -4,26 +4,14 @@ module Puppet::Parser::Functions newfunction(:private, :doc => <<-'EOS' - Sets the current class or definition as private. + DEPRECATED: Sets the current class or definition as private. Calling the class or definition from outside the current module will fail. - EOS + EOS ) do |args| - - raise(Puppet::ParseError, "private(): Wrong number of arguments "+ - "given (#{args.size}}) for 0 or 1)") if args.size > 1 - - scope = self - if scope.lookupvar('module_name') != scope.lookupvar('caller_module_name') - message = nil - if args[0] and args[0].is_a? String - message = args[0] - else - manifest_name = scope.source.name - manifest_type = scope.source.type - message = (manifest_type.to_s == 'hostclass') ? 'Class' : 'Definition' - message += " #{manifest_name} is private" - end - raise(Puppet::ParseError, message) + warning("private() DEPRECATED: This function will cease to function on Puppet 4; please use assert_private() before upgrading to puppet 4 for backwards-compatibility, or migrate to the new parser's typing system.") + if !Puppet::Parser::Functions.autoloader.loaded?(:assert_private) + Puppet::Parser::Functions.autoloader.load(:assert_private) end + function_assert_private([(args[0] unless args.size < 1)]) end end |