#-- # Copyright:: Copyright 2016 Chef Software, Inc. # License:: Apache License, Version 2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # require "chef/mixin/convert_to_class_name" # Structured deprecations have a unique URL associated with them, which must exist before the deprecation is merged. class Chef class Deprecated class << self include Chef::Mixin::ConvertToClassName def create(type, message = nil, location = nil) Chef::Deprecated.const_get(convert_to_class_name(type.to_s)).send(:new, message, location) end end class Base BASE_URL = "https://docs.chef.io/deprecations_" attr_accessor :message, :location def initialize(msg = nil, location = nil) @message = msg if msg @location = location if location end def link "Please see #{url} for further details and information on how to correct this problem." end def url "#{BASE_URL}#{target}" end # We know that the only time this gets called is by Chef::Log.deprecation, # so special case def <<(location) @location = location end def inspect "#{message} (CHEF-#{id})#{location}.\n#{link}" end def id raise NotImplementedError, "subclasses of Chef::Deprecated::Base should define #id with a unique number" end def target raise NotImplementedError, "subclasses of Chef::Deprecated::Base should define #target" end end class JsonAutoInflate < Base def id 1 end def target "json_auto_inflate.html" end end class ExitCode < Base def id 2 end def target "exit_code.html" end end class ChefGemCompileTime < Base def id 3 end def target "chef_gem_compile_time.html" end end class Attributes < Base def id 4 end def target "attributes.html" end end class CustomResource < Base def id 5 end def target "custom_resource_cleanups.html" end end class EasyInstall < Base def id 6 end def target "easy_install.html" end end class VerifyFile < Base def id 7 end def target "verify_file.html" end end class SupportsProperty < Base def id 8 end def target "supports_property.html" end end class ChefRest < Base def id 9 end def target "chef_rest.html" end end class ResourceCloning < Base def id 3694 end def target "resource_cloning.html" end end class InternalApi < Base def id 0 end def target "internal_api.html" end end class Generic < Base def url "https://docs.chef.io/chef_deprecations_client.html" end def inspect "#{message}\nThis is a generic error message and should be updated to have a proper deprecation class. #{location}\nPlease see #{url} for an overview of Chef deprecations." end end end end