summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2005-06-29 16:34:47 +0000
committerLuke Kanies <luke@madstop.com>2005-06-29 16:34:47 +0000
commit00343e3ea7c5633c6580339b9bbe5ee1fa0bac59 (patch)
treec9d3d7fd4ff5a2392c7824d31cfffe80c324e69a /lib
parent2b2975f06f86058589d5aeff1a4d7f0a72cf5b92 (diff)
downloadpuppet-00343e3ea7c5633c6580339b9bbe5ee1fa0bac59.tar.gz
puppet-00343e3ea7c5633c6580339b9bbe5ee1fa0bac59.tar.xz
puppet-00343e3ea7c5633c6580339b9bbe5ee1fa0bac59.zip
basic rpm stuff now works
git-svn-id: https://reductivelabs.com/svn/puppet/library/trunk@317 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/log.rb2
-rw-r--r--lib/puppet/type/package.rb51
2 files changed, 52 insertions, 1 deletions
diff --git a/lib/puppet/log.rb b/lib/puppet/log.rb
index 5f77e623c..9cfcb3c1d 100644
--- a/lib/puppet/log.rb
+++ b/lib/puppet/log.rb
@@ -19,7 +19,7 @@ module Puppet
@@messages = Array.new
@@levels = [:debug,:info,:notice,:warning,:err,:alert,:emerg,:crit]
- @@loglevel = :notice
+ @@loglevel = 2
@@logdest = :console
@@colors = {
diff --git a/lib/puppet/type/package.rb b/lib/puppet/type/package.rb
index fe7768d6e..bb35f8370 100644
--- a/lib/puppet/type/package.rb
+++ b/lib/puppet/type/package.rb
@@ -260,6 +260,57 @@ module Puppet
}
}
+ PackagingType.new("rpm") { |type|
+ type.list = proc {
+ packages = []
+
+ # dpkg only prints as many columns as you have available
+ # which means we don't get all of the info
+ # stupid stupid
+ oldcol = ENV["COLUMNS"]
+ ENV["COLUMNS"] = "500"
+
+ # list out all of the packages
+ open("| rpm -q -a --qf '%{NAME} %{VERSION}\n'") { |process|
+ # our regex for matching dpkg output
+ regex = %r{^(\S+)\s+(\S+)}
+ fields = [:name, :version]
+ hash = {}
+
+ # now turn each returned line into a package object
+ process.each { |line|
+ if match = regex.match(line)
+ hash.clear
+
+ fields.zip(match.captures) { |field,value|
+ hash[field] = value
+ }
+ packages.push Puppet::Type::Package.installedpkg(hash)
+ else
+ raise "failed to match rpm line %s" % line
+ end
+ }
+ }
+ ENV["COLUMNS"] = oldcol
+
+ return packages
+ }
+
+ # we need package retrieval mechanisms before we can have package
+ # installation mechanisms...
+ #type.install = proc { |pkg|
+ # raise "installation not implemented yet"
+ #}
+
+ type.remove = proc { |pkg|
+ cmd = "rpm -e %s" % pkg.name
+ output = %x{#{cmd}}
+ if $? != 0
+ raise output
+ end
+ }
+ }
+
PackagingType.new("sunpkg") { |type|
type.list = proc {
packages = []