class Chef::Provider::Package::Ips

def define_resource_requirements

def define_resource_requirements
  super
  requirements.assert(:all_actions) do |a|
    a.assertion { !@candidate_version.nil? }
    a.failure_message Chef::Exceptions::Package, "Package #{new_resource.package_name} not found"
    a.whyrun "Assuming package #{new_resource.package_name} would have been made available."
  end
end

def get_candidate_version

def get_candidate_version
  shell_out!("pkg", "info", "-r", new_resource.package_name).stdout.each_line do |line|
    return $1.split[0] if line =~ /Version: (.*)/
  end
  nil
end

def get_current_version

def get_current_version
  shell_out("pkg", "info", new_resource.package_name).stdout.each_line do |line|
    return $1.split[0] if line =~ /^\s+Version: (.*)/
  end
  nil
end

def install_package(name, version)

def install_package(name, version)
  command = [ "pkg", options, "install", "-q" ]
  command << "--accept" if new_resource.accept_license
  command << "#{name}@#{version}"
  shell_out!(command)
end

def load_current_resource

def load_current_resource
  @current_resource = Chef::Resource::IpsPackage.new(new_resource.name)
  current_resource.package_name(new_resource.package_name)
  logger.trace("Checking package status for #{new_resource.package_name}")
  current_resource.version(get_current_version)
  @candidate_version = get_candidate_version
  current_resource
end

def remove_package(name, version)

def remove_package(name, version)
  package_name = "#{name}@#{version}"
  shell_out!( "pkg", options, "uninstall", "-q", package_name )
end

def upgrade_package(name, version)

def upgrade_package(name, version)
  install_package(name, version)
end