Sha256: 95e5758fd533c23af38f504f598ecc0f9a4cb15b6d8e03a78d613a27763402ab

Contents?: true

Size: 1.8 KB

Versions: 20

Compression:

Stored size: 1.8 KB

Contents

Puppet::Type.type(:package).provide :aptrpm, :parent => :rpm, :source => :rpm do
  # Provide sorting functionality
  include Puppet::Util::Package

  desc "Package management via `apt-get` ported to `rpm`."

  has_feature :versionable

  commands :aptget => "apt-get"
  commands :aptcache => "apt-cache"
  commands :rpm => "rpm"

  if command('rpm')
    confine :true => begin
      rpm('-ql', 'rpm')
      rescue Puppet::ExecutionFailure
        false
      else
        true
      end
  end

  # Install a package using 'apt-get'.  This function needs to support
  # installing a specific version.
  def install
    should = @resource.should(:ensure)

    str = @resource[:name]
    case should
    when true, false, Symbol
      # pass
    else
      # Add the package version
      str += "=#{should}"
    end
    cmd = %w{-q -y}

    cmd << 'install' << str

    aptget(*cmd)
  end

  # What's the latest package version available?
  def latest
    output = aptcache :showpkg,  @resource[:name]

    if output =~ /Versions:\s*\n((\n|.)+)^$/
      versions = $1
      available_versions = versions.split(/\n/).collect { |version|
        if version =~ /^([^\(]+)\(/
          $1
        else
          self.warning "Could not match version '#{version}'"
          nil
        end
      }.reject { |vers| vers.nil? }.sort { |a,b|
        versioncmp(a,b)
      }

      if available_versions.length == 0
        self.debug "No latest version"
        print output if Puppet[:debug]
      end

      # Get the latest and greatest version number
      return available_versions.pop
    else
      self.err "Could not match string"
    end
  end

  def update
    self.install
  end

  def uninstall
    aptget "-y", "-q", 'remove', @resource[:name]
  end

  def purge
    aptget '-y', '-q', 'remove', '--purge', @resource[:name]
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
puppet-2.6.18 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.17 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.16 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.15 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.14 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.13 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.12 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.11 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.10 lib/puppet/provider/package/aptrpm.rb
puppet-2.7.3 lib/puppet/provider/package/aptrpm.rb
puppet-2.7.1 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.9 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.8 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.7 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.6 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.5 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.4 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.3 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.2 lib/puppet/provider/package/aptrpm.rb
puppet-2.6.1 lib/puppet/provider/package/aptrpm.rb