From 365483adffb7fb2c4b0b639f307043828c985abc Mon Sep 17 00:00:00 2001 From: Ossi Salmi Date: Tue, 26 Oct 2010 11:47:11 +0300 Subject: [PATCH] Added util::extract::tar. --- util/manifests/init.pp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 util/manifests/init.pp diff --git a/util/manifests/init.pp b/util/manifests/init.pp new file mode 100644 index 0000000..2cd7d84 --- /dev/null +++ b/util/manifests/init.pp @@ -0,0 +1,42 @@ +# Extract tar package. +# +# === Parameters +# +# $name: +# Destination directory. +# $source: +# File to extract. +# $strip: +# Remove the specified number of leading path elements. +# Defaults to 0. +# +# === Sample usage +# +#util::extract::tar { "/usr/local/src/moin-1.8.8": +# strip => 1, +# source => "/usr/local/src/moin-1.8.8.tar.gz", +#} +# +define util::extract::tar($source, $strip=0) { + + file { "${name}": + ensure => directory, + mode => 0755, + owner => root, + group => root, + } + + case regsubst($source, '.*\.([^.]+)$', '\1') { + tar: { $cat = "cat" } + gz,tgz: { $cat = "zcat" } + bz2, tbz: { $cat = "bzcat" } + } + + exec { "extract-tar-${name}": + path => "/bin:/usr/bin:/sbin:/usr/sbin", + command => "${cat} ${source} | tar xf - --strip-components=${strip} -C ${name}", + require => [ File["${name}"], File["${source}"], ], + unless => "test -n \"$(ls -A ${name})\"", + } + +}