diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-06-08 18:49:53 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-06-08 18:49:53 +0000 |
commit | 3479387598a290eb687cea5decd0a5e1b0ca59b0 (patch) | |
tree | 2dddcf861a7afb34d87814e3dc016f8cc8a3582f /lib | |
parent | 73502a7cac443890792ffd9d3bb4778a90413e61 (diff) | |
download | puppet-3479387598a290eb687cea5decd0a5e1b0ca59b0.tar.gz puppet-3479387598a290eb687cea5decd0a5e1b0ca59b0.tar.xz puppet-3479387598a290eb687cea5decd0a5e1b0ca59b0.zip |
Adding (slightly modified) urpmi support from #592 by Devin
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2556 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib')
-rw-r--r-- | lib/puppet/provider/package/urpmi.rb | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/puppet/provider/package/urpmi.rb b/lib/puppet/provider/package/urpmi.rb new file mode 100644 index 000000000..4a7de233c --- /dev/null +++ b/lib/puppet/provider/package/urpmi.rb @@ -0,0 +1,51 @@ +Puppet::Type.type(:package).provide :urpmi, :parent => :rpm, :source => :rpm do + desc "Support via ``urpmi``." + commands :urpmi => "urpmi", :rpm => "rpm" + + defaultfor :operatingsystem => [:mandriva, :mandrake] + + has_feature :versionable + + def install + should = @resource.should(:ensure) + self.debug "Ensuring => #{should}" + wanted = @resource[:name] + + # XXX: We don't actually deal with epochs here. + case should + when true, false, Symbol + # pass + else + # Add the package version + wanted += "-%s" % should + end + + output = urpmi "--auto", wanted + + unless self.query + raise Puppet::Error.new( + "Could not find package %s" % self.name + ) + end + end + + # What's the latest package version available? + def latest + output = urpmi "-S", :available, @resource[:name] + + if output =~ /^#{@resource[:name]}\S+\s+(\S+)\s/ + return $1 + else + # urpmi didn't find updates, pretend the current + # version is the latest + return @resource[:ensure] + end + end + + def update + # Install in urpmi can be used for update, too + self.install + end +end + +# $Id$ |