From 65de5c18883d42844ccb54a4fd245157cb7b5f22 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Fri, 22 Jul 2011 00:28:41 +0200 Subject: [PATCH] add --state parameter to __link type which allows removal of links Signed-off-by: Steven Armstrong --- conf/type/__link/gencode-remote | 15 ++++++++++++++- conf/type/__link/man.text | 3 ++- conf/type/__link/manifest | 25 +++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100755 conf/type/__link/manifest diff --git a/conf/type/__link/gencode-remote b/conf/type/__link/gencode-remote index 07da987c..3bfa90d8 100755 --- a/conf/type/__link/gencode-remote +++ b/conf/type/__link/gencode-remote @@ -39,4 +39,17 @@ case "$type" in ;; esac -echo ln ${lnopt} -f \"$source\" \"$destination\" +state_should="$(cat "$__object/parameter/state")" +case "$state_should" in + present) + echo ln ${lnopt} -f \"$source\" \"$destination\" + ;; + absent) + echo rm \"$destination\" + ;; + *) + echo "Unknown state" >&2 + exit 1 + ;; +esac + diff --git a/conf/type/__link/man.text b/conf/type/__link/man.text index fb914298..a7d33c59 100644 --- a/conf/type/__link/man.text +++ b/conf/type/__link/man.text @@ -25,7 +25,8 @@ type:: OPTIONAL PARAMETERS ------------------- -None. +state:: + 'present' or 'absent', defaults to 'present' EXAMPLES diff --git a/conf/type/__link/manifest b/conf/type/__link/manifest new file mode 100755 index 00000000..2fcc085d --- /dev/null +++ b/conf/type/__link/manifest @@ -0,0 +1,25 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# + +if [ -f "$__object/parameter/state" ]; then + state="$(cat "$__object/parameter/state")" +else + echo "present" > "$__object/parameter/state" +fi