From 90f11c2a58f195ef1209e498fcf213e6a9d2f4f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20M=E4kinen?= Date: Tue, 8 Feb 2011 17:20:23 +0200 Subject: [PATCH] Added util::extract::zip. --- util/manifests/init.pp | 49 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/util/manifests/init.pp b/util/manifests/init.pp index 025e60d..2b90342 100644 --- a/util/manifests/init.pp +++ b/util/manifests/init.pp @@ -63,6 +63,55 @@ define util::extract::tar($source, $ensure=present, $strip=0, $preserve=false) { } +# Extract tar package. +# +# === Parameters +# +# $name: +# Destination directory. +# $ensure: +# If 'latest', remove target and re-extract when source file changes. +# $source: +# File to extract. +# +# === Sample usage +# +#util::extract::zip { "/usr/lib/firefox-addons/extensions/{73a6fe31-595d-460b-a920-fcc0f8843232}": +# source => "/usr/local/src/noscript.xpi", +#} +# +define util::extract::zip($source, $ensure=present) { + + case $ensure { + latest: { + exec { "zip-rmdir-${name}": + path => "/bin:/usr/bin:/sbin:/usr/sbin", + command => "rm -fr ${name}", + before => File["${name}"], + subscribe => File["${source}"], + refreshonly => true, + } + } + } + + $command = "unzip ${source} -d ${name}" + + file { "${name}": + ensure => directory, + mode => 0755, + owner => root, + group => root, + } + + exec { "zip-extract-${name}": + path => "/bin:/usr/bin:/sbin:/usr/sbin", + command => $command, + require => File["${name}"], + unless => "test -n \"$(ls -A ${name})\"", + } + +} + # Apply patch. #