class Chef::Provider::Package::Freebsd::Pkgng

Public Instance Methods

candidate_version() click to toggle source
# File lib/chef/provider/package/freebsd/pkgng.rb, line 49
def candidate_version
  new_resource.source ? file_candidate_version : repo_candidate_version
end
current_installed_version() click to toggle source
# File lib/chef/provider/package/freebsd/pkgng.rb, line 44
def current_installed_version
  pkg_info = shell_out_compact_timeout!("pkg", "info", new_resource.package_name, env: nil, returns: [0, 70])
  pkg_info.stdout[/^Version +: (.+)$/, 1]
end
install_package(name, version) click to toggle source
# File lib/chef/provider/package/freebsd/pkgng.rb, line 27
def install_package(name, version)
  unless current_resource.version
    case new_resource.source
    when /^(http|ftp|\/)/
      shell_out_compact_timeout!("pkg", "add", options, new_resource.source, env: { "LC_ALL" => nil }).status
      logger.trace("#{new_resource} installed from: #{new_resource.source}")
    else
      shell_out_compact_timeout!("pkg", "install", "-y", options, name, env: { "LC_ALL" => nil }).status
    end
  end
end
remove_package(name, version) click to toggle source
# File lib/chef/provider/package/freebsd/pkgng.rb, line 39
def remove_package(name, version)
  options_dup = options && options.map { |str| str.sub(repo_regex, "") }.reject!(&:empty?)
  shell_out_compact_timeout!("pkg", "delete", "-y", options_dup, "#{name}#{version ? '-' + version : ''}", env: nil).status
end

Private Instance Methods

file_candidate_version() click to toggle source
# File lib/chef/provider/package/freebsd/pkgng.rb, line 55
def file_candidate_version
  new_resource.source[/#{Regexp.escape(new_resource.package_name)}-(.+)\.txz/, 1]
end
repo_candidate_version() click to toggle source
# File lib/chef/provider/package/freebsd/pkgng.rb, line 59
def repo_candidate_version
  if options && options.join(" ").match(repo_regex)
    options = $1.split(" ")
  end

  pkg_query = shell_out_compact_timeout!("pkg", "rquery", options, "%v", new_resource.package_name, env: nil)
  pkg_query.exitstatus == 0 ? pkg_query.stdout.strip.split(/\n/).last : nil
end
repo_regex() click to toggle source
# File lib/chef/provider/package/freebsd/pkgng.rb, line 68
def repo_regex
  /(-r\s?\S+)\b/
end