class Hookit::Resource::Package

Public Class Methods

new(name) click to toggle source
Calls superclass method Hookit::Resource::Base::new
# File lib/hookit/resource/package.rb, line 13
def initialize(name)
  package_name(name) unless source
  scope :default unless scope
  super
end

Public Instance Methods

install!() click to toggle source
# File lib/hookit/resource/package.rb, line 26
def install!
  begin
    install_package
  rescue Hookit::Error::UnexpectedExit
    if not registry("pkgsrc.#{scope}.updated")
      update_pkg_db
      registry("pkgsrc.#{scope}.updated", true)
      retry
    else
      raise
    end
  end
end
run(action) click to toggle source
# File lib/hookit/resource/package.rb, line 19
def run(action)
  case action
  when :install
    install!
  end
end

Protected Instance Methods

install_package() click to toggle source
# File lib/hookit/resource/package.rb, line 42
def install_package
  `#{pkgin} -y in #{package}`

  code = $?.exitstatus
  if not code == 0
    raise Hookit::Error::UnexpectedExit, "pkgin in #{package} failed with exit code '#{code}'"
  end
end
package() click to toggle source
# File lib/hookit/resource/package.rb, line 55
def package
  if version
    "#{package_name}-#{version}"
  else
    package_name
  end
end
pkgin() click to toggle source
# File lib/hookit/resource/package.rb, line 63
def pkgin
  case scope
  when :default
    "/opt/local/bin/pkgin"
  when :gopagoda
    "/opt/gopagoda/bin/pkgin"
  end
end
update_pkg_db() click to toggle source
# File lib/hookit/resource/package.rb, line 51
def update_pkg_db
  `#{pkgin} -y up`
end