|
|
|
@ -1,6 +1,7 @@ |
|
|
|
|
#!/bin/sh |
|
|
|
|
# |
|
|
|
|
# 2011 Steven Armstrong (steven-cdist at armstrong.cc) |
|
|
|
|
# 2012 Nico Schottelius (nico-cdist at schottelius.org) |
|
|
|
|
# |
|
|
|
|
# This file is part of cdist. |
|
|
|
|
# |
|
|
|
@ -18,42 +19,42 @@ |
|
|
|
|
# along with cdist. If not, see <http://www.gnu.org/licenses/>. |
|
|
|
|
# |
|
|
|
|
|
|
|
|
|
key="$(cat "$__object/parameter/key")" |
|
|
|
|
key="$__object_id" |
|
|
|
|
[ -f "$__object/parameter/key" ] && key="$(cat "$__object/parameter/key")" |
|
|
|
|
state_should=present |
|
|
|
|
[ -f "$__object/parameter/state" ] && state_should="$(cat "$__object/parameter/state")" |
|
|
|
|
|
|
|
|
|
file="$(cat "$__object/parameter/file")" |
|
|
|
|
delimiter="$(cat "$__object/parameter/delimiter")" |
|
|
|
|
value="$(cat "$__object/parameter/value")" |
|
|
|
|
|
|
|
|
|
state_is="$(cat "$__object/explorer/state")" |
|
|
|
|
state_should="$(cat "$__object/parameter/state")" |
|
|
|
|
|
|
|
|
|
if [ "$state_is" = "$state_should" ]; then |
|
|
|
|
# nothing to do |
|
|
|
|
exit 0 |
|
|
|
|
fi |
|
|
|
|
[ "$state_is" = "$state_should" ] && exit 0 |
|
|
|
|
|
|
|
|
|
case "$state_should" in |
|
|
|
|
absent) |
|
|
|
|
# remove lines starting with key |
|
|
|
|
echo "sed '/^$key\($delimiter\+\)/d' \"$file\" > \"$file.cdist-tmp\"" |
|
|
|
|
echo "mv \"$file.cdist-tmp\" \"$file\"" |
|
|
|
|
;; |
|
|
|
|
present) |
|
|
|
|
case "$state_is" in |
|
|
|
|
absent) |
|
|
|
|
# add new key and value |
|
|
|
|
echo "echo \"${key}${delimiter}${value}\" >> \"$file\"" |
|
|
|
|
;; |
|
|
|
|
wrongvalue) |
|
|
|
|
# change exisiting value |
|
|
|
|
echo "sed \"s|^$key\($delimiter\+\).*|$key\1$value|\" \"$file\" > \"$file.cdist-tmp\"" |
|
|
|
|
echo "mv \"$file.cdist-tmp\" \"$file\"" |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
echo "Unknown explorer state: $state_is" >&2 |
|
|
|
|
exit 1 |
|
|
|
|
esac |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
echo "Unknown state: $state_should" >&2 |
|
|
|
|
exit 1 |
|
|
|
|
absent) |
|
|
|
|
# remove lines starting with key |
|
|
|
|
echo "sed '/^$key\($delimiter\+\)/d' \"$file\" > \"$file.cdist-tmp\"" |
|
|
|
|
echo "mv \"$file.cdist-tmp\" \"$file\"" |
|
|
|
|
;; |
|
|
|
|
present) |
|
|
|
|
case "$state_is" in |
|
|
|
|
absent) |
|
|
|
|
# add new key and value |
|
|
|
|
echo "echo \"${key}${delimiter}${value}\" >> \"$file\"" |
|
|
|
|
;; |
|
|
|
|
wrongvalue) |
|
|
|
|
# change exisiting value |
|
|
|
|
echo "sed \"s|^$key\($delimiter\+\).*|$key\1$value|\" \"$file\" > \"$file.cdist-tmp\"" |
|
|
|
|
echo "mv \"$file.cdist-tmp\" \"$file\"" |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
echo "Unknown explorer state: $state_is" >&2 |
|
|
|
|
exit 1 |
|
|
|
|
esac |
|
|
|
|
;; |
|
|
|
|
*) |
|
|
|
|
echo "Unknown state: $state_should" >&2 |
|
|
|
|
exit 1 |
|
|
|
|
esac |
|
|
|
|