class Chef::Provider::Package::Macports
Public Instance Methods
current_installed_version()
click to toggle source
# File lib/chef/provider/package/macports.rb, line 27 def current_installed_version command = [ "port", "installed", new_resource.package_name ] output = get_response_from_command(command) response = nil output.each_line do |line| match = line.match(/^.+ @([^\s]+) \(active\)$/) response = match[1] if match end response end
install_package(name, version)
click to toggle source
# File lib/chef/provider/package/macports.rb, line 48 def install_package(name, version) unless current_resource.version == version command = [ "port", options, "install", name ] command << "@#{version}" if version && !version.empty? shell_out_compact_timeout!(command) end end
load_current_resource()
click to toggle source
# File lib/chef/provider/package/macports.rb, line 9 def load_current_resource @current_resource = Chef::Resource::Package.new(new_resource.name) current_resource.package_name(new_resource.package_name) current_resource.version(current_installed_version) logger.trace("#{new_resource} current version is #{current_resource.version}") if current_resource.version @candidate_version = macports_candidate_version if !new_resource.version && !@candidate_version raise Chef::Exceptions::Package, "Could not get a candidate version for this package -- #{new_resource.name} does not seem to be a valid package!" end logger.trace("#{new_resource} candidate version is #{@candidate_version}") if @candidate_version current_resource end
macports_candidate_version()
click to toggle source
# File lib/chef/provider/package/macports.rb, line 39 def macports_candidate_version command = [ "port", "info", "--version", new_resource.package_name ] output = get_response_from_command(command) match = output.match(/^version: (.+)$/) match ? match[1] : nil end
purge_package(name, version)
click to toggle source
# File lib/chef/provider/package/macports.rb, line 56 def purge_package(name, version) command = [ "port", options, "uninstall", name ] command << "@#{version}" if version && !version.empty? shell_out_compact_timeout!(command) end
remove_package(name, version)
click to toggle source
# File lib/chef/provider/package/macports.rb, line 62 def remove_package(name, version) command = [ "port", options, "deactivate", name ] command << "@#{version}" if version && !version.empty? shell_out_compact_timeout!(command) end
upgrade_package(name, version)
click to toggle source
# File lib/chef/provider/package/macports.rb, line 69 def upgrade_package(name, version) # Saving this to a variable -- weird rSpec behavior # happens otherwise... current_version = current_resource.version if current_version.nil? || current_version.empty? # Macports doesn't like when you upgrade a package # that hasn't been installed. install_package(name, version) elsif current_version != version shell_out_compact_timeout!( "port", options, "upgrade", name, "@#{version}" ) end end
Private Instance Methods
get_response_from_command(command)
click to toggle source
# File lib/chef/provider/package/macports.rb, line 85 def get_response_from_command(command) output = nil status = shell_out_compact_timeout(command) begin output = status.stdout rescue Exception raise Chef::Exceptions::Package, "Could not read from STDOUT on command: #{command}" end unless status.exitstatus == 0 || status.exitstatus == 1 raise Chef::Exceptions::Package, "#{command} failed - #{status.inspect}!" end output end