module Chef::Mixin::Deprecation

def deprecated_attr(name, alternative)

def deprecated_attr(name, alternative)
  deprecated_attr_reader(name, alternative)
  deprecated_attr_writer(name, alternative)
end

def deprecated_attr_reader(name, alternative, level = :warn)

def deprecated_attr_reader(name, alternative, level = :warn)
  define_method(name) do
    Chef.deprecated(:internal_api, "#{self.class}.#{name} is deprecated. Support will be removed in a future release. #{alternative}")
    instance_variable_get("@#{name}")
  end
end

def deprecated_attr_writer(name, alternative, level = :warn)

def deprecated_attr_writer(name, alternative, level = :warn)
  define_method("#{name}=") do |value|
    Chef.deprecated(:internal_api, "Writing to #{self.class}.#{name} with #{name}= is deprecated. Support will be removed in a future release. #{alternative}")
    instance_variable_set("@#{name}", value)
  end
end

def deprecated_ivar(obj, name, level = nil)

def deprecated_ivar(obj, name, level = nil)
  DeprecatedInstanceVariable.new(obj, name, level)
end