From f036778df725e1b328ac6f11b784f8e72ee34261 Mon Sep 17 00:00:00 2001 From: luke Date: Fri, 21 Oct 2005 06:39:00 +0000 Subject: Apt-cache was showing more information that I thought, so I had to redo how I was collecting the most recent package version git-svn-id: https://reductivelabs.com/svn/puppet/trunk@721 980ebf18-57e1-0310-9a29-db15c13687c0 --- lib/puppet/type/package.rb | 2 +- lib/puppet/type/package/apt.rb | 28 ++++++++++++++++++++-------- 2 files changed, 21 insertions(+), 9 deletions(-) (limited to 'lib/puppet') diff --git a/lib/puppet/type/package.rb b/lib/puppet/type/package.rb index 296e8af54..690e2d000 100644 --- a/lib/puppet/type/package.rb +++ b/lib/puppet/type/package.rb @@ -37,7 +37,7 @@ module Puppet if @is == latest return true else - Puppet.debug "latest is %s" % latest + Puppet.debug "latest %s is %s" % [@parent.name, latest] end when :notinstalled if @is == :notinstalled diff --git a/lib/puppet/type/package/apt.rb b/lib/puppet/type/package/apt.rb index 47887ec8a..9267fbcd8 100755 --- a/lib/puppet/type/package/apt.rb +++ b/lib/puppet/type/package/apt.rb @@ -31,22 +31,34 @@ module Puppet # What's the latest package version available? def latest - cmd = "apt-cache show %s" % self.name + cmd = "apt-cache showpkg %s" % self.name output = %x{#{cmd} 2>&1} unless $? == 0 raise Puppet::PackageError.new(output) end - if output =~ /Version: (.+)\n/ - return $1 - else - Puppet.debug "No version" - if Puppet[:debug] - print output + if output =~ /Versions:\s*\n((\n|.)+)^$/ + versions = $1 + version = versions.split(/\n/).collect { |version| + if version =~ /(.+)\(/ + $1 + else + Puppet.warning "Could not match version '%s'" % version + nil + end + }.reject { |vers| vers.nil? }.sort[-1] + + unless version + Puppet.debug "No latest version" + if Puppet[:debug] + print output + end end - return nil + return version + else + Puppet.err "Could not match string" end end -- cgit