summaryrefslogtreecommitdiffstats
path: root/lib/puppet/provider/package/freebsd.rb
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-08-14 06:21:03 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-08-14 06:21:03 +0000
commit12452ee9ca294563f2e2724ff36f179004f9846f (patch)
treebee6053e8164f4a8dbf214f1898fafecb1d61f2f /lib/puppet/provider/package/freebsd.rb
parent4d6120a1f77cfe76fafbe32caa5d853449562376 (diff)
downloadpuppet-12452ee9ca294563f2e2724ff36f179004f9846f.tar.gz
puppet-12452ee9ca294563f2e2724ff36f179004f9846f.tar.xz
puppet-12452ee9ca294563f2e2724ff36f179004f9846f.zip
Merging r1468 from the implementations branch with r1438 from when the branch was first created.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1469 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/provider/package/freebsd.rb')
-rwxr-xr-xlib/puppet/provider/package/freebsd.rb52
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/puppet/provider/package/freebsd.rb b/lib/puppet/provider/package/freebsd.rb
new file mode 100755
index 000000000..cd484d47a
--- /dev/null
+++ b/lib/puppet/provider/package/freebsd.rb
@@ -0,0 +1,52 @@
+Puppet::Type.type(:package).provide :freebsd, :parent => :openbsd do
+ desc "The specific form of package management on FreeBSD. This is an
+ extremely quirky packaging system, in that it freely mixes between
+ ports and packages. Apparently all of the tools are written in Ruby,
+ so there are plans to rewrite this support to directly use those
+ libraries."
+
+ commands :info => "/usr/sbin/pkg_info",
+ :add => "/usr/sbin/pkg_add",
+ :delete => "/usr/sbin/pkg_delete"
+
+ def self.listcmd
+ command(:info)
+ end
+
+ def install
+ should = @model[:ensure]
+
+ if @model[:source]
+ return super
+ end
+
+ cmd = command(:add) + " -r " + @model[:name]
+
+ begin
+ output = execute(cmd)
+ rescue Puppet::ExecutionFailure
+ raise Puppet::PackageError.new(output)
+ end
+ end
+
+ def query
+ self.class.list
+
+ if @model[:version]
+ return :listed
+ else
+ return nil
+ end
+ end
+
+ def uninstall
+ cmd = "#{command(:delete)} %s-%s" % [@model[:name], @model[:version]]
+ begin
+ output = execute(cmd)
+ rescue Puppet::ExecutionFailure
+ raise Puppet::PackageError.new(output)
+ end
+ end
+end
+
+# $Id$