From 89ac6d7e7ad5259749ad06765ae537849bbd290c Mon Sep 17 00:00:00 2001 From: luke Date: Mon, 30 Apr 2007 14:40:34 +0000 Subject: Adding "rug" package provider from #609 git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2429 980ebf18-57e1-0310-9a29-db15c13687c0 --- lib/puppet/provider/package/rug.rb | 53 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lib/puppet/provider/package/rug.rb (limited to 'lib') diff --git a/lib/puppet/provider/package/rug.rb b/lib/puppet/provider/package/rug.rb new file mode 100644 index 000000000..e6a70ae2a --- /dev/null +++ b/lib/puppet/provider/package/rug.rb @@ -0,0 +1,53 @@ +Puppet.type(:package).provide :rug, :parent => :rpm do + desc "Support for suse ``rug`` package manager." + + commands :rug => "/usr/bin/rug" + defaultfor :operatingsystem => :suse + confine :operatingsystem => :suse + + # Install a package using 'rug'. + def install + should = @model.should(:ensure) + self.debug "Ensuring => #{should}" + wanted = @model[: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 = rug "--quiet", :install, "-y", wanted + + unless self.query + raise Puppet::ExecutionFailure.new( + "Could not find package %s" % self.name + ) + end + end + + # What's the latest package version available? + def latest + #rug can only get a list of *all* available packages? + output = rug "list-updates" + + if output =~ /#{@model[:name]}\s*\|\s*([0-9\.\-]+)/ + return $1 + else + # rug didn't find updates, pretend the current + # version is the latest + return @model.is(:ensure) + end + end + + def update + # rug install can be used for update, too + self.install + end + + def versionable? + true + end +end -- cgit