Update puppetlabs/stdlib module
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / functions / deprecation.rb
1 # Function to print deprecation warnings, Logs a warning once for a given key. The uniqueness key - can appear once.
2 # The msg is the message text including any positional information that is formatted by the user/caller of the method.
3 # It is affected by the puppet setting 'strict', which can be set to :error (outputs as an error message),
4 #   :off (no message / error is displayed) and :warning (default, outputs a warning)  *Type*: String, String.
5 #
6
7 Puppet::Functions.create_function(:deprecation) do
8   dispatch :deprecation do
9     param 'String', :key
10     param 'String', :message
11   end
12
13   def deprecation(key, message)
14     if defined? Puppet::Pops::PuppetStack.stacktrace
15       stacktrace = Puppet::Pops::PuppetStack.stacktrace()
16       file = stacktrace[0]
17       line = stacktrace[1]
18       message = "#{message} at #{file}:#{line}"
19     end
20     # depending on configuration setting of strict
21     case Puppet.settings[:strict]
22     when :off # rubocop:disable Lint/EmptyWhen : Is required to prevent false errors
23       # do nothing
24     when :error
25       raise("deprecation. #{key}. #{message}")
26     else
27       unless ENV['STDLIB_LOG_DEPRECATIONS'] == 'false'
28         Puppet.deprecation_warning(message, key)
29       end
30     end
31   end
32 end