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

Public Instance Methods

candidate_version() click to toggle source
# File lib/chef/provider/package/freebsd/pkg.rb, line 79
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 74
def current_installed_version
  pkg_info = shell_out_compact_timeout!("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 94
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 90
def file_candidate_version_path
  Dir[Chef::Util::PathHelper.escape_glob_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 32
def install_package(name, version)
  unless current_resource.version
    case new_resource.source
    when /^http/, /^ftp/
      if new_resource.source =~ /\/$/
        shell_out_compact_timeout!("pkg_add", "-r", package_name, env: { "PACKAGESITE" => new_resource.source, "LC_ALL" => nil }).status
      else
        shell_out_compact_timeout!("pkg_add", "-r", package_name, env: { "PACKAGEROOT" => new_resource.source, "LC_ALL" => nil }).status
      end
      logger.trace("#{new_resource} installed from: #{new_resource.source}")

    when /^\//
      shell_out_compact_timeout!("pkg_add", file_candidate_version_path, env: { "PKG_PATH" => new_resource.source, "LC_ALL" => nil }).status
      logger.trace("#{new_resource} installed from: #{new_resource.source}")

    else
      shell_out_compact_timeout!("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 58
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 106
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 102
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 53
def remove_package(name, version)
  shell_out_compact_timeout!("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 98
def repo_candidate_version
  "0.0.0"
end