Sha256: 757257b0eb756b12821ad83a6bf4e1f6e5f16cde2df3205adce5410b84c8a6a0

Contents?: true

Size: 1.37 KB

Versions: 12

Compression:

Stored size: 1.37 KB

Contents

module Hookit
  module Resource
    class Package < Base

      field :package_name
      field :source
      field :version
      field :scope

      actions :install
      default_action :install

      def initialize(name)
        package_name(name) unless source
        scope :default unless scope
        super
      end

      def run(action)
        case action
        when :install
          install!
        end
      end

      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

      protected

      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

      def update_pkg_db
        `#{pkgin} -y up`
      end

      def package
        if version
          "#{package_name}-#{version}"
        else
          package_name
        end
      end

      def pkgin
        case scope
        when :default
          "/opt/local/bin/pkgin"
        when :gopagoda
          "/opt/gopagoda/bin/pkgin"
        end
      end

    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
hookit-0.12.3 lib/hookit/resource/package.rb
hookit-0.12.2 lib/hookit/resource/package.rb
hookit-0.12.1 lib/hookit/resource/package.rb
hookit-0.12.0 lib/hookit/resource/package.rb
hookit-0.11.2 lib/hookit/resource/package.rb
hookit-0.11.1 lib/hookit/resource/package.rb
hookit-0.11.0 lib/hookit/resource/package.rb
hookit-0.10.0 lib/hookit/resource/package.rb
hookit-0.9.2 lib/hookit/resource/package.rb
hookit-0.9.0 lib/hookit/resource/package.rb
hookit-0.8.0 lib/hookit/resource/package.rb
hookit-0.7.11 lib/hookit/resource/package.rb