class Chef::Provider::Package::Freebsd::Pkg

Public Instance Methods

candidate_version() click to toggle source
# File lib/chef/provider/package/freebsd/pkg.rb, line 78
def candidate_version
  case @new_resource.source
  when /^http/, /^ftp/
    repo_candidate_version
  when /^\//
    file_candidate_version
  else
    ports_candidate_version
  end
end
current_installed_version() click to toggle source
# File lib/chef/provider/package/freebsd/pkg.rb, line 73
def current_installed_version
  pkg_info = shell_out!("pkg_info -E \"#{package_name}*\"", :env => nil, :returns => [0,1])
  pkg_info.stdout[/^#{Regexp.escape(package_name)}-(.+)/, 1]
end
file_candidate_version() click to toggle source
# File lib/chef/provider/package/freebsd/pkg.rb, line 93
def file_candidate_version
  file_candidate_version_path.split(/-/).last.split(/.tbz/).first
end
file_candidate_version_path() click to toggle source
# File lib/chef/provider/package/freebsd/pkg.rb, line 89
def file_candidate_version_path
  Dir["#{@new_resource.source}/#{@current_resource.package_name}*"][-1].to_s
end
install_package(name, version) click to toggle source
# File lib/chef/provider/package/freebsd/pkg.rb, line 31
def install_package(name, version)
  unless @current_resource.version
    case @new_resource.source
    when /^http/, /^ftp/
      if @new_resource.source =~ /\/$/
        shell_out!("pkg_add -r #{package_name}", :env => { "PACKAGESITE" => @new_resource.source, 'LC_ALL' => nil }).status
      else
        shell_out!("pkg_add -r #{package_name}", :env => { "PACKAGEROOT" => @new_resource.source, 'LC_ALL' => nil }).status
      end
      Chef::Log.debug("#{@new_resource} installed from: #{@new_resource.source}")

    when /^\//
      shell_out!("pkg_add #{file_candidate_version_path}", :env => { "PKG_PATH" => @new_resource.source , 'LC_ALL'=>nil}).status
      Chef::Log.debug("#{@new_resource} installed from: #{@new_resource.source}")

    else
      shell_out!("pkg_add -r #{latest_link_name}", :env => nil).status
    end
  end
end
package_name() click to toggle source

The name of the package (without the version number) as understood by pkg_add and pkg_info.

# File lib/chef/provider/package/freebsd/pkg.rb, line 57
def package_name
  if supports_ports?
    if makefile_variable_value("PKGNAME", port_path) =~ /^(.+)-[^-]+$/
      $1
    else
      raise Chef::Exceptions::Package, "Unexpected form for PKGNAME variable in #{port_path}/Makefile"
    end
  else
    @new_resource.package_name
  end
end
port_path() click to toggle source
# File lib/chef/provider/package/freebsd/pkg.rb, line 105
def port_path
  port_dir @new_resource.package_name
end
ports_candidate_version() click to toggle source
# File lib/chef/provider/package/freebsd/pkg.rb, line 101
def ports_candidate_version
  makefile_variable_value("PORTVERSION", port_path)
end
remove_package(name, version) click to toggle source
# File lib/chef/provider/package/freebsd/pkg.rb, line 52
def remove_package(name, version)
  shell_out!("pkg_delete #{package_name}-#{version || @current_resource.version}", :env => nil).status
end
repo_candidate_version() click to toggle source
# File lib/chef/provider/package/freebsd/pkg.rb, line 97
def repo_candidate_version
  "0.0.0"
end